diff options
Diffstat (limited to 'kdesktop')
111 files changed, 2296 insertions, 6343 deletions
diff --git a/kdesktop/CMakeL10n.txt b/kdesktop/CMakeL10n.txt index ed3027467..b5fc87470 100644 --- a/kdesktop/CMakeL10n.txt +++ b/kdesktop/CMakeL10n.txt @@ -1,3 +1,12 @@ ##### create translation templates ############## tde_l10n_create_template( "kdesktop" ) + +tde_l10n_create_template( + CATALOG "desktop_files/kdesktop-desktops/" + SOURCES kdesktop.desktop.cmake *.desktop + EXCLUDES "init/" + DESTINATION "${CMAKE_SOURCE_DIR}/translations" +) + +tde_l10n_auto_add_subdirectories() diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt index c8fdabf36..c65986368 100644 --- a/kdesktop/CMakeLists.txt +++ b/kdesktop/CMakeLists.txt @@ -52,11 +52,20 @@ install( FILES ##### other data ################################ -configure_file( kdesktop.desktop.cmake kdesktop.desktop @ONLY ) +tde_create_translated_desktop( + SOURCE kdesktop.desktop.cmake + DESTINATION ${AUTOSTART_INSTALL_DIR} + PO_DIR kdesktop-desktops +) -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kdesktop.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} ) install( FILES kdesktop_custom_menu1 kdesktop_custom_menu2 DESTINATION ${CONFIG_INSTALL_DIR} ) -install( FILES kdesktopSetAsBackground.desktop DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus ) + +tde_create_translated_desktop( + SOURCE kdesktopSetAsBackground.desktop + DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus + PO_DIR kdesktop-desktops +) + install( FILES kdesktop.kcfg tdelaunch.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) @@ -69,25 +78,16 @@ tde_add_executable( kcheckrunning ) -##### kxdglauncher (executable) ################# - -tde_add_executable( kxdglauncher - SOURCES kxdglauncher.cpp - LINK tdeutils-shared - DESTINATION ${BIN_INSTALL_DIR} -) - - ##### kdesktop (tdeinit) ######################## set( target kdesktop ) -set_property( SOURCE lockeng.cc APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" ) +set_property( SOURCE lockeng.cpp APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" ) set( ${target}_SRCS - main.cc krootwm.cc xautolock.cc kdiconview.cc init.cc - desktop.cc lockeng.cc KDesktopIface.skel bgmanager.cc + main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp init.cpp + desktop.cpp lockeng.cpp KDesktopIface.skel bgmanager.cpp KScreensaverIface.skel minicli.cpp KBackgroundIface.skel - pixmapserver.cc kcustommenu.cc startupid.cpp minicli_ui.ui + pixmapserver.cpp kcustommenu.cpp startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c kshadowengine.cpp kshadowsettings.cpp kdesktopshadowsettings.cpp tdefileividesktop.cpp kdesktopapp.cpp @@ -96,9 +96,9 @@ set( ${target}_SRCS tde_add_tdeinit_executable( ${target} AUTOMOC SOURCES ${${target}_SRCS} LINK - pthread kdesktopsettings-static bgnd-static dmctl-static - konq-shared tdeutils-shared - ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${DL_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} kdesktopsettings-static bgnd-static dmctl-static + konq-shared tdeutils-shared tdesu-shared ${TDEHW_LIBRARIES} + ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${CMAKE_DL_LIBS} ${XSS_LIBRARIES} ${DBUS_1_TQT_LIBRARIES} ) diff --git a/kdesktop/DESIGN b/kdesktop/DESIGN index f69ee2198..170a86a75 100644 --- a/kdesktop/DESIGN +++ b/kdesktop/DESIGN @@ -7,6 +7,7 @@ Author : Last modified: 24 Oct 1999 + Overall design of KDesktop : ============================= @@ -14,6 +15,7 @@ KDesktop is the program that handles the desktop icons, the popup menus for the desktop, the mac menubar, and the screensaver system. + Files : ======= @@ -34,6 +36,7 @@ KDesktopIface* : DCOP interface for kdesktop, used by kfmclient lock* : screen saver/locker + Libs used by KDesktop ====================== @@ -41,6 +44,7 @@ tdecore, tdeui, tdefile - usual stuff :) libtdeio - I/O stuff, mimetypes, services, registry libkonq - properties dialog, templates ("new") menu, dir lister, settings + Screensaver =========== @@ -69,6 +73,7 @@ The new background code is in bgrender.cpp and bgmanager.cpp. Some features: * Support for xearth like programs. * Can export a pixmap of the desktop background for pseudo transparency. + Multiple monitors ================= Two monitors showing different things (not a mirror-setup) can be configured @@ -92,3 +97,43 @@ In case of 2 screen (multihead) | | | | desktopGeometry = 3200 x 1200 +----+ +-----+ screenGeometry = 1600 x 1200 (for each monitor) + +Interaction between kdesktop and kdesktop_lock +============================================== +kdesktop and kdesktop_lock interact using POSIX signals to coordinate their activities. +Each time the screensaver or lock is activated and then stopped/unlocked, the current +kdesktop_lock process is terminated and respawned, while kdesktop waits for the new process +to be ready. + +kdesktop to kdesktop_lock communication: + kdesktop uses four signals to request different types of locks. These signals do not activate + the lock/screensaver. Some of the signals can be combined together, for example to request a + lock with blank screen. + + - USR1 : request lock of the screen + - USR2 : request screensaver only, no lock + - WINCH: request lock of the screen using SAK (Secure Attention Key) + - TTIN : request blank screen for saver or lock + + The lock/screensaver is started using a fifth signal. + - TTOU : activate the scrensaver or lock + +kdesktop_lock to kdesktop communication: + kdesktop_lock uses three signals to inform kdesktop of status changes. + + - TTIN: the lock process is ready. This is sent after the process has been created/respawned + - USR2: the lock/screensaver has been activated + - USR1: the lock/screensaver has been unlocked/stopped + +Communication is handled by the screen saver engine defined in 'lockeng.{h,cpp}'. +The engine is split into two parts, the 'SaverEngine' running in the GUI thread and +the 'SaverEngineEventHandler' running in a separate thread and eventloop. +The 'SaverEngine' handles communication with X11, DCOP and DBUS while the +'SaverEngineEventHandler' handles communication with the actual lock process. +Several actions require cooperation of the two parts, so in various methods +there will be inter-thread calls (using timers or by emitting signals) to +trigger the other side remaining logic. +This complex design is necessary to avoid blocking the main GUI application event loop, +which has several tasks to manage and therefore can't affort to wait in a suspended state. +This was previously leading to deadlock when DCOP calls where executed on the secondary +thread/eventloop, for example when changing desktop while the lock process was restarting. diff --git a/kdesktop/KScreensaverIface.h b/kdesktop/KScreensaverIface.h index de5c19f2b..b6434738e 100644 --- a/kdesktop/KScreensaverIface.h +++ b/kdesktop/KScreensaverIface.h @@ -12,11 +12,10 @@ public: KScreensaverIface() : DCOPObject("KScreensaverIface") {} k_dcop: - /** Lock the screen now even if the screensaver does not lock by default. */ + /** Lock the screen now even if the screensaver does not lock by default */ virtual void lock() = 0; - /** Save the screen now. If the user has locking enabled, the screen is - * locked also. */ + /** Start the screensaver now. If the user has locking enabled, the screen is locked also */ virtual void save() = 0; /** Quit the screensaver if it is running */ @@ -29,22 +28,23 @@ k_dcop: * Enable/disable the screensaver * returns true if the action succeeded */ - virtual bool enable( bool e ) = 0; + virtual bool enable(bool e) = 0; /** Is the screen currently blanked? */ virtual bool isBlanked() = 0; - /** Reload the screensaver configuration. */ + /** Reload the screensaver configuration */ virtual void configure() = 0; - /** Only blank the screen (and possibly lock). Do not use a custom - * screen saver in the interest of saving battery. + /** + * Set the screensaver to blank (and possibly lock). + * This method does not actually start the screensaver. */ - virtual void setBlankOnly( bool blankOnly ) = 0; + virtual void setBlankOnly(bool blankOnly) = 0; /*** * @internal - */ + */ virtual void saverLockReady() = 0; }; diff --git a/kdesktop/Makefile.am b/kdesktop/Makefile.am index 5da121d19..b2d4c2b2c 100644 --- a/kdesktop/Makefile.am +++ b/kdesktop/Makefile.am @@ -8,7 +8,7 @@ SUBDIRS = . lock pics patterns programs init kwebdesktop ####### Files -bin_PROGRAMS = kcheckrunning kxdglauncher +bin_PROGRAMS = kcheckrunning lib_LTLIBRARIES = tdeinit_LTLIBRARIES = kdesktop.la noinst_LTLIBRARIES = libkdesktopsettings.la @@ -17,10 +17,10 @@ libkdesktopsettings_la_LDFLAGS = $(all_libraries) -no-undefined libkdesktopsettings_la_LIBADD = $(LIB_TDECORE) libkdesktopsettings_la_SOURCES = kdesktopsettings.kcfgc tdelaunchsettings.kcfgc -kdesktop_la_SOURCES = main.cc krootwm.cc xautolock.cc kdiconview.cc desktop.cc \ - lockeng.cc KDesktopIface.skel \ - bgmanager.cc init.cc KScreensaverIface.skel \ - minicli.cpp KBackgroundIface.skel pixmapserver.cc kcustommenu.cc \ +kdesktop_la_SOURCES = main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp desktop.cpp \ + lockeng.cpp KDesktopIface.skel \ + bgmanager.cpp init.cpp KScreensaverIface.skel \ + minicli.cpp KBackgroundIface.skel pixmapserver.cpp kcustommenu.cpp \ startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c \ kshadowengine.cpp kshadowsettings.cpp \ kdesktopshadowsettings.cpp tdefileividesktop.cpp \ @@ -31,16 +31,12 @@ include_HEADERS = KDesktopIface.h KScreensaverIface.h KBackgroundIface.h noinst_HEADERS = desktop.h bgmanager.h krootwm.h \ xautolock.h lockeng.h init.h minicli.h \ pixmapserver.h startupid.h xautolock_c.h \ - kdesktopapp.h kxdglauncher.h + kdesktopapp.h kcheckrunning_SOURCES = kcheckrunning.cpp kcheckrunning_LDFLAGS = $(all_libraries) kcheckrunning_LDADD = $(LIB_X11) $(LIB_TQT) -kxdglauncher_SOURCES = kxdglauncher.cpp -kxdglauncher_LDFLAGS = $(all_libraries) -kxdglauncher_LDADD = $(LIB_TDEUTILS) - METASOURCES = AUTO ####### Build rules @@ -63,7 +59,7 @@ startupid.lo: tdelaunchsettings.h messages: rc.cpp $(EXTRACTRC) lock/*.ui >> rc.cpp - $(XGETTEXT) lock/*.cc *.cc *.cpp *.h -o $(podir)/kdesktop.pot + $(XGETTEXT) lock/*.cpp *.cpp *.h -o $(podir)/kdesktop.pot menu_DATA = kdesktop_custom_menu1 kdesktop_custom_menu2 menudir = $(kde_confdir) diff --git a/kdesktop/bgmanager.cc b/kdesktop/bgmanager.cpp index 7c641dd9d..49cff2c16 100644 --- a/kdesktop/bgmanager.cc +++ b/kdesktop/bgmanager.cpp @@ -1,5 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 - * kate: space-indent on; tab-width 8; indent-width 4; indent-mode cstyle; +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> @@ -79,7 +78,7 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule m_pDesktop = desktop; if (desktop == 0L) - desktop = TQT_TQWIDGET(TDEApplication::desktop()->screen()); + desktop = TDEApplication::desktop()->screen(); m_Renderer.resize( 1 ); m_Cache.resize( 1 ); @@ -98,40 +97,40 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule m_Cache[i]->hash = 0; m_Cache[i]->exp_from = -1; m_Renderer.insert (i, new KVirtualBGRenderer(i,m_pConfig)); - connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int))); + connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int))); m_Renderer[i]->enableTiling( true ); // optimize } #ifdef COMPOSITE - m_tPixmap = new KPixmap(kapp->desktop()->size()); + m_tPixmap = new KPixmap(tdeApp->desktop()->size()); m_tPixmap->fill(TQColor(0, 0x0)); - connect(myApp, TQT_SIGNAL(cmBackgroundChanged( bool )), - TQT_SLOT(slotCmBackgroundChanged( bool ))); + connect(myApp, TQ_SIGNAL(cmBackgroundChanged( bool )), + TQ_SLOT(slotCmBackgroundChanged( bool ))); #endif configure(); m_pTimer = new TQTimer(this); - connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout())); + connect(m_pTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotTimeout())); m_pTimer->start( 60000 ); /*CrossFade's config*/ m_crossTimer = new TQTimer(this); - connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout())); + connect(m_crossTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotCrossFadeTimeout())); resizingDesktop = true; /*Ends here*/ - connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopChanged(int)), - TQT_SLOT(slotChangeDesktop(int))); - connect(m_pKwinmodule, TQT_SIGNAL(numberOfDesktopsChanged(int)), - TQT_SLOT(slotChangeNumberOfDesktops(int))); - connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)), - TQT_SLOT(slotChangeViewport(int, const TQPoint&))); + connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopChanged(int)), + TQ_SLOT(slotChangeDesktop(int))); + connect(m_pKwinmodule, TQ_SIGNAL(numberOfDesktopsChanged(int)), + TQ_SLOT(slotChangeNumberOfDesktops(int))); + connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)), + TQ_SLOT(slotChangeViewport(int, const TQPoint&))); #if (TQT_VERSION-0 >= 0x030200) - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); // RANDR support + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); // RANDR support #endif TQSize s(m_pKwinmodule->numberOfViewports(m_pKwinmodule->currentDesktop())); @@ -339,7 +338,7 @@ void KBackgroundManager::slotChangeNumberOfDesktops(int num) m_Cache[i]->hash = 0; m_Cache[i]->exp_from = -1; m_Renderer.insert(i, new KVirtualBGRenderer(i,m_pConfig)); - connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int))); + connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int))); m_Renderer[i]->enableTiling( true ); // optimize } } @@ -543,16 +542,16 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk) if( !root_cleared ) { // clear the root window pixmap set by tdm root_cleared = true; - TQTimer::singleShot( 0, this, TQT_SLOT( clearRoot())); + TQTimer::singleShot( 0, this, TQ_SLOT( clearRoot())); // but make the pixmap visible until m_pDesktop is visible - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap(*ep); + TDEApplication::desktop()->screen()->erase(); } } else { - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap(*ep); + TDEApplication::desktop()->screen()->erase(); } // and export it via Esetroot-style for gnome/GTK apps to share in the pretties @@ -572,8 +571,8 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk) void KBackgroundManager::clearRoot() { - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap( TQPixmap()); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap( TQPixmap()); + TDEApplication::desktop()->screen()->erase(); } /* @@ -682,7 +681,7 @@ void KBackgroundManager::slotImageDone(int desk) { m_bBgInitDone = true; emit initDone(); - TQTimer::singleShot( 30000, this, TQT_SLOT( saveImages())); + TQTimer::singleShot( 30000, this, TQ_SLOT( saveImages())); do_cleanup = false; } } @@ -1005,7 +1004,7 @@ void KBackgroundManager::repaintBackground() if (m_pDesktop) m_pDesktop->repaint(); else - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->erase(); } void KBackgroundManager::desktopResized() @@ -1027,13 +1026,13 @@ void KBackgroundManager::desktopResized() #ifdef COMPOSITE if (m_tPixmap) delete m_tPixmap; - m_tPixmap = new KPixmap(kapp->desktop()->size()); + m_tPixmap = new KPixmap(tdeApp->desktop()->size()); m_tPixmap->fill(TQColor(0, 0x0)); #endif m_Hash = 0; if( m_pDesktop ) { - m_pDesktop->resize( kapp->desktop()->geometry().size()); + m_pDesktop->resize( tdeApp->desktop()->geometry().size()); if (m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){ m_Renderer[effectiveDesktop()]->renderer(0)->changeWallpaper(); } diff --git a/kdesktop/bgmanager.h b/kdesktop/bgmanager.h index 43e57a372..d78ebebc3 100644 --- a/kdesktop/bgmanager.h +++ b/kdesktop/bgmanager.h @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> @@ -16,7 +16,7 @@ #include <tqdatetime.h> #include <KBackgroundIface.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -54,7 +54,7 @@ class KBackgroundManager : public TQObject, public KBackgroundIface { - Q_OBJECT + TQ_OBJECT public: diff --git a/kdesktop/desktop.cc b/kdesktop/desktop.cpp index 2732bff08..3ef0e33e7 100644 --- a/kdesktop/desktop.cc +++ b/kdesktop/desktop.cpp @@ -44,17 +44,17 @@ #include <dcopclient.h> #include <kcursor.h> #include <kdebug.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <kimageio.h> #include <kinputdialog.h> #include <kipc.h> #include <tdelocale.h> #include <tdeio/netaccess.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tdesycoca.h> #include <tdetempfile.h> #include <tdemessagebox.h> -#include <kglobalaccel.h> +#include <tdeglobalaccel.h> #include <twinmodule.h> #include <krun.h> #include <twin.h> @@ -71,21 +71,21 @@ extern TQCString kdesktop_name, kicker_name, twin_name; KRootWidget::KRootWidget() : TQObject() { - kapp->desktop()->installEventFilter(this); - kapp->desktop()->setAcceptDrops( true ); + tdeApp->desktop()->installEventFilter(this); + tdeApp->desktop()->setAcceptDrops( true ); } bool KRootWidget::eventFilter ( TQObject *, TQEvent * e ) { if (e->type() == TQEvent::MouseButtonPress) { - TQMouseEvent *me = TQT_TQMOUSEEVENT(e); + TQMouseEvent *me = static_cast<TQMouseEvent*>(e); KRootWm::self()->mousePressed( me->globalPos(), me->button() ); return true; } else if (e->type() == TQEvent::Wheel) { - TQWheelEvent *we = TQT_TQWHEELEVENT(e); + TQWheelEvent *we = static_cast<TQWheelEvent*>(e); emit wheelRolled(we->delta()); return true; } @@ -113,7 +113,7 @@ bool KRootWidget::eventFilter ( TQObject *, TQEvent * e ) else if ( e->type() == TQEvent::Drop ) { TQDropEvent* de = static_cast<TQDropEvent*>( e ); - if ( KColorDrag::canDecode( de ) ) + if ( KColorDrag::canDecode( de ) ) emit colorDropEvent( de ); else if ( TQImageDrag::canDecode( de ) ) emit imageDropEvent( de ); @@ -155,17 +155,17 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) : setCaption( "KDE Desktop"); setAcceptDrops(true); // WStyle_Customize seems to disable that - m_pKwinmodule = new KWinModule( TQT_TQOBJECT(this) ); + m_pKwinmodule = new KWinModule( this ); - kapp->dcopClient()->setNotifications(true); - kapp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)", + tdeApp->dcopClient()->setNotifications(true); + tdeApp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)", "KDesktopIface", "desktopIconsAreaChanged(TQRect, int)", false); // Dont repaint on configuration changes during construction m_bInit = true; // It's the child widget that gets the focus, not us - setFocusPolicy( TQ_NoFocus ); + setFocusPolicy( TQWidget::NoFocus ); if ( x_root_hack ) { @@ -184,28 +184,28 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) : setGeometry( TQApplication::desktop()->geometry() ); lower(); - connect( kapp, TQT_SIGNAL( shutDown() ), - this, TQT_SLOT( slotShutdown() ) ); + connect( tdeApp, TQ_SIGNAL( shutDown() ), + this, TQ_SLOT( slotShutdown() ) ); - connect(kapp, TQT_SIGNAL(settingsChanged(int)), - this, TQT_SLOT(slotSettingsChanged(int))); - kapp->addKipcEventMask(KIPC::SettingsChanged); + connect(tdeApp, TQ_SIGNAL(settingsChanged(int)), + this, TQ_SLOT(slotSettingsChanged(int))); + tdeApp->addKipcEventMask(KIPC::SettingsChanged); - kapp->addKipcEventMask(KIPC::IconChanged); - connect(kapp, TQT_SIGNAL(iconChanged(int)), this, TQT_SLOT(slotIconChanged(int))); + tdeApp->addKipcEventMask(KIPC::IconChanged); + connect(tdeApp, TQ_SIGNAL(iconChanged(int)), this, TQ_SLOT(slotIconChanged(int))); - connect(KSycoca::self(), TQT_SIGNAL(databaseChanged()), - this, TQT_SLOT(slotDatabaseChanged())); + connect(KSycoca::self(), TQ_SIGNAL(databaseChanged()), + this, TQ_SLOT(slotDatabaseChanged())); m_pIconView = 0; m_pRootWidget = 0; bgMgr = 0; initRoot(); - TQTimer::singleShot(0, this, TQT_SLOT( slotStart() )); + TQTimer::singleShot(0, this, TQ_SLOT( slotStart() )); #if (TQT_VERSION-0 >= 0x030200) // XRANDR support - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); #endif } @@ -215,7 +215,7 @@ KDesktop::initRoot() Display *dpy = tqt_xdisplay(); Window root = RootWindow(dpy, kdesktop_screen_number); XDefineCursor(dpy, root, cursor().handle()); - + m_bDesktopEnabled = KDesktopSettings::desktopEnabled(); if ( !m_bDesktopEnabled && !m_pRootWidget ) { @@ -238,21 +238,21 @@ KDesktop::initRoot() XSelectInput(dpy, root, attrs.your_event_mask | ButtonPressMask); m_pRootWidget = new KRootWidget; - connect(m_pRootWidget, TQT_SIGNAL(wheelRolled(int)), this, TQT_SLOT(slotSwitchDesktops(int))); - connect(m_pRootWidget, TQT_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQT_SLOT(handleColorDropEvent(TQDropEvent*)) ); - connect(m_pRootWidget, TQT_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQT_SLOT(handleImageDropEvent(TQDropEvent*)) ); - connect(m_pRootWidget, TQT_SIGNAL(newWallpaper(const KURL&)), this, TQT_SLOT(slotNewWallpaper(const KURL&)) ); + connect(m_pRootWidget, TQ_SIGNAL(wheelRolled(int)), this, TQ_SLOT(slotSwitchDesktops(int))); + connect(m_pRootWidget, TQ_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQ_SLOT(handleColorDropEvent(TQDropEvent*)) ); + connect(m_pRootWidget, TQ_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQ_SLOT(handleImageDropEvent(TQDropEvent*)) ); + connect(m_pRootWidget, TQ_SIGNAL(newWallpaper(const KURL&)), this, TQ_SLOT(slotNewWallpaper(const KURL&)) ); // Geert Jansen: backgroundmanager belongs here // TODO tell KBackgroundManager if we change widget() bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule ); bgMgr->setExport(1); - connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone())); + connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone())); if (!m_bInit) { delete KRootWm::self(); KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click) - keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock())); + keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock())); keys->updateConnections(); } } @@ -263,24 +263,24 @@ KDesktop::initRoot() delete m_pRootWidget; m_pRootWidget = 0; m_pIconView = new KDIconView( this, 0 ); - connect( m_pIconView, TQT_SIGNAL( imageDropEvent( TQDropEvent * ) ), - this, TQT_SLOT( handleImageDropEvent( TQDropEvent * ) ) ); - connect( m_pIconView, TQT_SIGNAL( colorDropEvent( TQDropEvent * ) ), - this, TQT_SLOT( handleColorDropEvent( TQDropEvent * ) ) ); - connect( m_pIconView, TQT_SIGNAL( newWallpaper( const KURL & ) ), - this, TQT_SLOT( slotNewWallpaper( const KURL & ) ) ); - connect( m_pIconView, TQT_SIGNAL( wheelRolled( int ) ), - this, TQT_SLOT( slotSwitchDesktops( int ) ) ); - - // All the QScrollView/QWidget-specific stuff should go here, so that we can use + connect( m_pIconView, TQ_SIGNAL( imageDropEvent( TQDropEvent * ) ), + this, TQ_SLOT( handleImageDropEvent( TQDropEvent * ) ) ); + connect( m_pIconView, TQ_SIGNAL( colorDropEvent( TQDropEvent * ) ), + this, TQ_SLOT( handleColorDropEvent( TQDropEvent * ) ) ); + connect( m_pIconView, TQ_SIGNAL( newWallpaper( const KURL & ) ), + this, TQ_SLOT( slotNewWallpaper( const KURL & ) ) ); + connect( m_pIconView, TQ_SIGNAL( wheelRolled( int ) ), + this, TQ_SLOT( slotSwitchDesktops( int ) ) ); + + // All the QScrollView/TQWidget-specific stuff should go here, so that we can use // another qscrollview/widget instead of the iconview and use the same code m_pIconView->setVScrollBarMode( TQScrollView::AlwaysOff ); m_pIconView->setHScrollBarMode( TQScrollView::AlwaysOff ); m_pIconView->setDragAutoScroll( false ); m_pIconView->setFrameStyle( TQFrame::NoFrame ); m_pIconView->viewport()->setBackgroundMode( X11ParentRelative ); - m_pIconView->setFocusPolicy( TQ_StrongFocus ); - m_pIconView->viewport()->setFocusPolicy( TQ_StrongFocus ); + m_pIconView->setFocusPolicy( TQWidget::StrongFocus ); + m_pIconView->viewport()->setFocusPolicy( TQWidget::StrongFocus ); m_pIconView->setGeometry( geometry() ); m_pIconView->show(); @@ -288,7 +288,7 @@ KDesktop::initRoot() // TODO tell KBackgroundManager if we change widget() bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule ); bgMgr->setExport(1); - connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone())); + connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone())); // make sure it is initialized before we first call updateWorkArea() m_pIconView->initConfig( m_bInit ); @@ -301,7 +301,7 @@ KDesktop::initRoot() TQCString replyType; TQRect area; - if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", data, replyType, result, false, 2000) ) { TQDataStream res(result, IO_ReadOnly); @@ -315,7 +315,7 @@ KDesktop::initRoot() // if we failed to get the information from kicker wait a little - probably // this is the KDE startup and kicker is simply not running yet m_waitForKicker = new TQTimer(this); - connect(m_waitForKicker, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotNoKicker())); + connect(m_waitForKicker, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotNoKicker())); m_waitForKicker->start(15000, true); } else // we are not called from the ctor, so kicker should already run @@ -330,7 +330,7 @@ KDesktop::initRoot() m_pIconView->start(); delete KRootWm::self(); KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click) - keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock())); + keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock())); keys->updateConnections(); } } else { @@ -359,12 +359,12 @@ KDesktop::backgroundInitDone() // avoid flicker if (m_bDesktopEnabled) { - const TQPixmap *bg = TQT_TQWIDGET(TQApplication::desktop()->screen())->backgroundPixmap(); + const TQPixmap *bg = TQApplication::desktop()->screen()->backgroundPixmap(); if ( bg ) m_pIconView->setErasePixmap( *bg ); show(); - kapp->sendPostedEvents(); + tdeApp->sendPostedEvents(); } DCOPRef r( "ksmserver", "ksmserver" ); @@ -396,7 +396,7 @@ KDesktop::slotStart() m_pIconView->start(); // Global keys - keys = new TDEGlobalAccel( TQT_TQOBJECT(this) ); + keys = new TDEGlobalAccel( this ); (void) new KRootWm( m_pSaver, this ); #include "kdesktopbindings.cpp" @@ -404,9 +404,9 @@ KDesktop::slotStart() keys->readSettings(); keys->updateConnections(); - connect(kapp, TQT_SIGNAL(appearanceChanged()), TQT_SLOT(slotConfigure())); + connect(tdeApp, TQ_SIGNAL(appearanceChanged()), TQ_SLOT(slotConfigure())); - TQTimer::singleShot(300, this, TQT_SLOT( slotUpAndRunning() )); + TQTimer::singleShot(300, this, TQ_SLOT( slotUpAndRunning() )); } void @@ -504,7 +504,7 @@ void KDesktop::popupExecuteCommand(const TQString& command) if (m_bInit) return; - if (!kapp->authorize("run_command")) + if (!tdeApp->authorize("run_command")) return; // Created on demand @@ -648,21 +648,21 @@ void KDesktop::setShowDesktop( bool b ) } // on desktop changes or when a window is deiconified, we abort the show desktop mode - connect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), - TQT_SLOT(slotCurrentDesktopChanged(int))); - connect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), - TQT_SLOT(slotWindowChanged(WId,unsigned int))); - connect(twinModule(), TQT_SIGNAL(windowAdded(WId)), - TQT_SLOT(slotWindowAdded(WId))); + connect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)), + TQ_SLOT(slotCurrentDesktopChanged(int))); + connect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)), + TQ_SLOT(slotWindowChanged(WId,unsigned int))); + connect(twinModule(), TQ_SIGNAL(windowAdded(WId)), + TQ_SLOT(slotWindowAdded(WId))); } else { - disconnect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), - this, TQT_SLOT(slotCurrentDesktopChanged(int))); - disconnect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), - this, TQT_SLOT(slotWindowChanged(WId,unsigned int))); - disconnect(twinModule(), TQT_SIGNAL(windowAdded(WId)), - this, TQT_SLOT(slotWindowAdded(WId))); + disconnect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)), + this, TQ_SLOT(slotCurrentDesktopChanged(int))); + disconnect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)), + this, TQ_SLOT(slotWindowChanged(WId,unsigned int))); + disconnect(twinModule(), TQ_SIGNAL(windowAdded(WId)), + this, TQ_SLOT(slotWindowAdded(WId))); for (TQValueVector<WId>::ConstIterator it = m_iconifiedList.begin(); it != m_iconifiedList.end(); @@ -839,7 +839,7 @@ void KDesktop::refresh() m_bNeedRepaint |= 1; updateWorkArea(); #endif - kapp->dcopClient()->send( twin_name, "", "refresh()", TQString("")); + tdeApp->dcopClient()->send( twin_name, "", "refresh()", TQString("")); refreshIcons(); } @@ -851,7 +851,7 @@ void KDesktop::slotSetVRoot() return; if (KWin::windowInfo(winId()).mappingState() == NET::Withdrawn) { - TQTimer::singleShot(100, this, TQT_SLOT(slotSetVRoot())); + TQTimer::singleShot(100, this, TQ_SLOT(slotSetVRoot())); return; } @@ -907,7 +907,7 @@ void KDesktop::desktopIconsAreaChanged(const TQRect &area, int screen) if (screen <= -2) screen = kdesktop_screen_number; else if (screen == -1) - screen = kapp->desktop()->primaryScreen(); + screen = tdeApp->desktop()->primaryScreen(); // This is pretty broken, mixes Xinerama and non-Xinerama multihead // and generally doesn't seem to be required anyway => ignore screen. @@ -1032,7 +1032,7 @@ void KDesktop::logout() void KDesktop::logout( TDEApplication::ShutdownConfirm confirm, TDEApplication::ShutdownType sdtype ) { - if( !kapp->requestShutDown( confirm, sdtype ) ) + if( !tdeApp->requestShutDown( confirm, sdtype ) ) // this i18n string is also in kicker/applets/run/runapplet KMessageBox::error( this, i18n("Could not log out properly.\nThe session manager cannot " "be contacted. You can try to force a shutdown by pressing " @@ -1064,6 +1064,30 @@ void KDesktop::slotRebootNoCnf() TDEApplication::ShutdownTypeReboot ); } +void KDesktop::slotFreeze() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 1); +} + +void KDesktop::slotSuspend() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 3); +} + +void KDesktop::slotHibernate() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 4); +} + +void KDesktop::slotHybridSuspend() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 5); +} + void KDesktop::setVRoot( bool enable ) { if ( enable == set_vroot ) @@ -1100,7 +1124,7 @@ void KDesktop::setIconsEnabled( bool enable ) void KDesktop::desktopResized() { - resize(kapp->desktop()->size()); + resize(tdeApp->desktop()->size()); if ( m_pIconView ) { @@ -1108,7 +1132,7 @@ void KDesktop::desktopResized() // remove all icons, resize desktop, tell kdiconview new iconsArea size // tell kdiconview to reget all icons m_pIconView->slotClear(); - m_pIconView->resize(kapp->desktop()->size()); + m_pIconView->resize(tdeApp->desktop()->size()); // get new desktopIconsArea from kicker TQByteArray data, result; @@ -1117,7 +1141,7 @@ void KDesktop::desktopResized() TQCString replyType; TQRect area; - if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", data, replyType, result, false, 2000) ) { TQDataStream res(result, IO_ReadOnly); diff --git a/kdesktop/desktop.h b/kdesktop/desktop.h index c6a208f07..ca1eefc61 100644 --- a/kdesktop/desktop.h +++ b/kdesktop/desktop.h @@ -44,7 +44,7 @@ class SaverEngine; class KRootWidget : public TQObject { - Q_OBJECT + TQ_OBJECT public: KRootWidget(); bool eventFilter( TQObject *, TQEvent * e ); @@ -63,7 +63,7 @@ signals: class KDesktop : public TQWidget, public KDesktopIface { - Q_OBJECT + TQ_OBJECT public: @@ -135,6 +135,10 @@ private slots: void slotLogoutNoCnf(); void slotHaltNoCnf(); void slotRebootNoCnf(); + void slotFreeze(); + void slotSuspend(); + void slotHibernate(); + void slotHybridSuspend(); /** Connected to KSycoca */ void slotDatabaseChanged(); diff --git a/kdesktop/init.cc b/kdesktop/init.cpp index 6bf87f333..25e3dd717 100644 --- a/kdesktop/init.cc +++ b/kdesktop/init.cpp @@ -19,11 +19,11 @@ #include <tdeio/job.h> #include <tdeio/netaccess.h> -#include <kstandarddirs.h> -#include <kdesktopfile.h> +#include <tdestandarddirs.h> +#include <tdedesktopfile.h> #include <tdeglobalsettings.h> #include <tdeapplication.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tdemessagebox.h> #include <tdelocale.h> #include <kdebug.h> @@ -40,7 +40,7 @@ #include <dirent.h> #include <stdlib.h> #include <errno.h> -#include <ksimpleconfig.h> +#include <tdesimpleconfig.h> // for multihead extern int kdesktop_screen_number; @@ -134,7 +134,7 @@ static TQString realDesktopPath() */ static void copyDesktopLinks() { - TDEConfig *config = kapp->config(); + TDEConfig *config = tdeApp->config(); config->setGroup("General"); if (!config->readBoolEntry("CopyDesktopLinks", true)) return; @@ -145,7 +145,7 @@ static void copyDesktopLinks() TQString desktopPath = realDesktopPath(); for (TQStringList::ConstIterator it = list.begin(); it != list.end(); it++) { - KDesktopFile desk( *it ); + TDEDesktopFile desk( *it ); if (desk.readBoolEntry("Hidden")) continue; copyFile( *it, desktopPath ); @@ -213,13 +213,13 @@ void testLocalInstallation() if ( emptyDesktop || firstTimeWithNewTrash || installNewTrashi18n ) { TQString oldIcon, oldEmptyIcon; if ( trashDesktopExists ) { - KDesktopFile trashDesktop( trashDesktopPath, true ); + TDEDesktopFile trashDesktop( trashDesktopPath, true ); oldIcon = trashDesktop.readIcon(); oldEmptyIcon = trashDesktop.readEntry( "EmptyIcon" ); } copyFile( locate( "data", "kdesktop/directory.trash" ), trashDesktopPath ); if ( trashDesktopExists ) { - KDesktopFile trashDesktop( trashDesktopPath ); + TDEDesktopFile trashDesktop( trashDesktopPath ); trashDesktop.writeEntry( "Icon", oldIcon ); trashDesktop.writeEntry( "EmptyIcon", oldEmptyIcon ); trashDesktop.sync(); @@ -234,7 +234,7 @@ void testLocalInstallation() (void)TDEIO::NetAccess::synchronousRun( job, 0 ); // OK the only thing missing is to convert the icon position... - KSimpleConfig cfg( locateLocal("appdata", "IconPositions") ); + TDESimpleConfig cfg( locateLocal("appdata", "IconPositions") ); if ( cfg.hasGroup( "IconPosition::Trash" ) && !cfg.hasGroup( "IconPosition::trash.desktop" ) ) { const TQMap<TQString, TQString> entries = cfg.entryMap( "IconPosition::Trash" ); cfg.setGroup( "IconPosition::trash.desktop" ); diff --git a/kdesktop/init/CMakeL10n.txt b/kdesktop/init/CMakeL10n.txt new file mode 100644 index 000000000..ffa23880a --- /dev/null +++ b/kdesktop/init/CMakeL10n.txt @@ -0,0 +1,15 @@ +##### create translation templates ############## + +file( + GLOB_RECURSE _desktops + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/* +) +list( SORT _desktops ) + +tde_l10n_create_template( + CATALOG "desktop_files/kdesktop-icons/" + SOURCES_DESKTOP ${_desktops} + EXCLUDES CMakeL10n.txt CMakeLists.txt Makefile.am + DESTINATION "${CMAKE_SOURCE_DIR}/translations" +) diff --git a/kdesktop/init/CMakeLists.txt b/kdesktop/init/CMakeLists.txt index c771e6dfb..245f84b8e 100644 --- a/kdesktop/init/CMakeLists.txt +++ b/kdesktop/init/CMakeLists.txt @@ -11,14 +11,23 @@ add_subdirectory( Templates ) -install( FILES +tde_create_translated_desktop( + SOURCE directory.autostart directory.templates directory.desktop - DESTINATION ${DATA_INSTALL_DIR}/kdesktop ) + DESTINATION ${DATA_INSTALL_DIR}/kdesktop + PO_DIR kdesktop-icons +) -install( FILES +tde_create_translated_desktop( + SOURCE My_Computer My_Documents My_Network_Places Printers Trash Web_Browser - DESTINATION ${DATA_INSTALL_DIR}/kdesktop/Desktop ) + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/Desktop + PO_DIR kdesktop-icons +) -install( FILES +tde_create_translated_desktop( + SOURCE Home.desktop System.desktop - DESTINATION ${DATA_INSTALL_DIR}/kdesktop/DesktopLinks ) + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/DesktopLinks + PO_DIR kdesktop-icons +) diff --git a/kdesktop/init/Home.desktop b/kdesktop/init/Home.desktop index 58f5302c8..96fffb472 100644 --- a/kdesktop/init/Home.desktop +++ b/kdesktop/init/Home.desktop @@ -1,165 +1,10 @@ [Desktop Entry] Name=Home -Name[af]=Tuiste -Name[ar]=المنزل -Name[az]=Başlanğıc -Name[be]=Хатняя тэчка -Name[bg]=Домашна директория -Name[bn]=ব্যক্তিগত ফোল্ডার -Name[br]=Er-gêr -Name[bs]=Početak -Name[ca]=Inici -Name[cs]=Můj adresář -Name[csb]=Dodóm -Name[cy]=Cartref -Name[da]=Hjem -Name[de]=Persönlicher Ordner -Name[el]=Προσωπικός φάκελος -Name[eo]=Hejmo -Name[es]=Personal -Name[et]=Kodu -Name[eu]=Etxea -Name[fa]=آغازه -Name[fi]=Koti -Name[fr]=Dossier personnel -Name[fy]=Thús -Name[ga]=Baile -Name[gl]=Persoal -Name[he]=בית -Name[hi]=घर -Name[hr]=Početak -Name[hu]=Saját könyvtár -Name[id]=Rumah -Name[is]=Heimasvæðið þitt -Name[ja]=ホーム -Name[ka]=სახლში -Name[kk]=Мекен -Name[km]=ផ្ទះ -Name[ko]=홈 -Name[lo]=ພື້ນທີ່ສ່ວນຕົວ -Name[lt]=Pradžia -Name[lv]=Mājas -Name[mk]=Дома -Name[mn]=Гэр -Name[ms]=Laman Utama -Name[mt]=Direttorju Personali -Name[nb]=Hjem -Name[nds]=Tohuus -Name[ne]=गृह -Name[nn]=Heim -Name[nso]=Gae -Name[oc]=Inici -Name[pa]=ਘਰ -Name[pl]=Katalog domowy -Name[pt]=Pasta Pessoal -Name[pt_BR]=Pasta do Usuário -Name[ro]=Acasă -Name[ru]=Домой -Name[rw]=Urugo -Name[se]=Ruoktu -Name[sk]=Domov -Name[sl]=Domov -Name[sr]=Домаће -Name[sr@Latn]=Domaće -Name[ss]=Ekhaya -Name[sv]=Hem -Name[ta]=தொடக்கம் -Name[te]=ఇల్లు -Name[tg]=Компютери Ман -Name[th]=พื้นที่ส่วนตัว -Name[tr]=Başlangıç -Name[tt]=Anabit -Name[uk]=Домівка -Name[uz]=Uy -Name[uz@cyrillic]=Уй -Name[ven]=Haya -Name[vi]=Nhà -Name[wa]=Måjhon -Name[xh]=Ikhaya -Name[zh_CN]=主文件夹 -Name[zh_TW]=家目錄 -Name[zu]=Ikhaya + GenericName=Personal Files -GenericName[af]=Persoonlike Lêers -GenericName[ar]=الملفات الشخصية -GenericName[az]=Şəxsi Fayllar -GenericName[be]=Персанальныя файлы -GenericName[bg]=Лични файлове -GenericName[bn]=ব্যক্তিগত ফাইলসমূহ -GenericName[br]=Restroù deoc'h -GenericName[bs]=Osobne datoteke -GenericName[ca]=Fitxers personals -GenericName[cs]=Osobní soubory -GenericName[csb]=Swòje lopczi -GenericName[cy]=Ffeiliau Personol -GenericName[da]=Personlige filer -GenericName[de]=Eigene Dateien -GenericName[el]=Προσωπικά αρχεία -GenericName[eo]=Personaj dosieroj -GenericName[es]=Archivos personales -GenericName[et]=Isiklikud failid -GenericName[eu]=Fitxategi pertsonalak -GenericName[fa]=پروندههای شخصی -GenericName[fi]=Omat tiedostot -GenericName[fr]=Fichiers personnels -GenericName[fy]=Persoanlike map -GenericName[ga]=Comhaid Phearsanta -GenericName[gl]=Ficheiros Persoais -GenericName[he]=קבצים אישיים -GenericName[hi]=निजी फ़ाइलें -GenericName[hr]=Osobne datoteke -GenericName[hu]=Személyes fájlok -GenericName[id]=File Pribadi -GenericName[is]=Skrárnar þínar -GenericName[it]=File personali -GenericName[ja]=個人のファイル -GenericName[ka]=პირადი საქაღალდეები -GenericName[kk]=Дербес файлдар -GenericName[km]=ឯកសារផ្ទាល់ខ្លួន -GenericName[ko]=개인적인 파일 -GenericName[lo]=ທີ່ເກັບແຟ້ມແລະເອກະສານສວ່ນຕົວຫລືອື່ນຯ -GenericName[lt]=Asmeninės bylos -GenericName[lv]=Personālie Faili -GenericName[mk]=Лични датотеки -GenericName[mn]=Өөрийн файлууд -GenericName[ms]=Fail Peribadi -GenericName[mt]=Fajls Personali -GenericName[nb]=Personlige filer -GenericName[nds]=De egen Dateien -GenericName[ne]=व्यक्तिगत फाइल -GenericName[nl]=Persoonlijke map -GenericName[nn]=Personlege filer -GenericName[nso]=Difaele tsa Botho -GenericName[oc]=FiquièRs personals -GenericName[pa]=ਨਿੱਜੀ ਫਾਇਲ਼ਾਂ -GenericName[pl]=Pliki osobiste -GenericName[pt]=Ficheiros Pessoais -GenericName[pt_BR]=Arquivos Pessoais -GenericName[ro]=Fișiere personale -GenericName[ru]=Личные файлы -GenericName[rw]=Amadosiye Yihariye -GenericName[se]=Iežat fiillat -GenericName[sk]=Osobné súbory -GenericName[sl]=Osebne datoteke -GenericName[sr]=Лични фајлови -GenericName[sr@Latn]=Lični fajlovi -GenericName[sv]=Personliga filer -GenericName[ta]=சொந்த கோப்புகள் -GenericName[te]=వ్యక్తిగత దస్త్రాలు -GenericName[tg]=Файлҳои шахсӣ -GenericName[th]=แฟ้มส่วนตัว -GenericName[tr]=Kişisel Dosyalar -GenericName[tt]=Şäxsi Biremnär -GenericName[uk]=Особисті файли -GenericName[uz]=Shaxsiy fayllar -GenericName[uz@cyrillic]=Шахсий файллар -GenericName[ven]=Dzifaela dza vhune -GenericName[vi]=Tập tin Cá nhân -GenericName[wa]=Fitchîs da vosse -GenericName[xh]=Iifayile Zobuqu -GenericName[zh_CN]=个人文件 -GenericName[zh_TW]=個人檔案 -GenericName[zu]=Amafayela Omuntu siqu + +Comment=Contains personal files + URL=$HOME Icon=kfm_home Type=Link diff --git a/kdesktop/init/My_Computer b/kdesktop/init/My_Computer index 9249f7041..358ee4675 100644 --- a/kdesktop/init/My_Computer +++ b/kdesktop/init/My_Computer @@ -3,12 +3,8 @@ Encoding=UTF-8 Icon=computer Name=My Computer -Name[cs]=Počítač -Name[de]=Computer -Name[es]=Mi PC -Name[fr]=Mon Ordinateur -Name[it]=Computer -Name[ru]=Мой компьютер + +Comment=Access to storage media OnlyShowIn=TDE; Type=Link diff --git a/kdesktop/init/My_Documents b/kdesktop/init/My_Documents index d465deb64..774bdc281 100644 --- a/kdesktop/init/My_Documents +++ b/kdesktop/init/My_Documents @@ -1,67 +1,14 @@ [Desktop Entry] Encoding=UTF-8 Icon=folder_wordprocessing + Name=My Documents -Name[af]=Dokument Gids -Name[ar]=مستنداتي -Name[be]=Тэчка для дакументаў -Name[bg]=Директория с документи -Name[bn]=ডকমেনট ফোলডার -Name[br]=Renkell an teulioù -Name[bs]=Direktorij dokumenata -Name[ca]=Carpeta de documents -Name[cs]=Složka s dokumenty -Name[csb]=Katalog dokùmentów -Name[da]=Dokumentmappe -Name[de]=Dokumente -Name[en_US]=My Documents -Name[eo]=Dokumenta dosierujo -Name[es]=Carpeta de documentos -Name[et]=Dokumentide kataloog -Name[eu]=Dokumentuen karpeta -Name[fa]=پوشۀ مستندات -Name[fi]=Asiakirjakansio -Name[fr]=Dossier des documents -Name[fy]=Ofkeppele kamera -Name[ga]=Fillteán na gCáipéisí -Name[gl]=Cartafol de Documentos -Name[hr]=Mapa dokumenata -Name[hu]=Dokumentumok könyvtár -Name[is]=Skjalamappa -Name[it]=Cartella documenti -Name[ja]=ドキュメントフォルダ -Name[kk]=Құжаттар қапшығы -Name[lt]=Dokumentų aplankai -Name[nb]=Dokumentmappe -Name[nds]=Dokmenten-Orner -Name[nl]=Documenten -Name[nn]=Dokumentmappe -Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ -Name[pl]=Katalog dokumentów -Name[pt]=Pasta de Documentos -Name[pt_BR]=Pasta de Documentos -Name[ro]=Folder documente -Name[ru]=Документы -Name[se]=Dokumeantamáhppa -Name[sl]=Mapa z dokumenti -Name[sr@Latn]=Fascikla sa dokumentima -Name[sv]=Dokumentkatalog -Name[tg]=Ҳуҷҷатҳо -Name[tr]=Belgeler Dizini -Name[uk]=Тека документів -Name[uz]=Hujjatlar jildi -Name[uz@cyrillic]=Ҳужжатлар жилди -Name[vi]=Thư mục T� i liệu -Name[wa]=Ridant documints -Name[zh_CN]=文档文件夹 -Name[zh_TW]=文件目錄 -URL=$( kxdglauncher --getpath --xdgname DOCUMENTS ) + +Comment=Contains personal documents + +URL=$XDG_DOCUMENTS_DIR Type=Link StartupNotify=true -MimeType= Terminal=false -TerminalOptions= -X-DCOP-ServiceType= X-TDE-SubstituteUID=false -X-TDE-Username= OnlyShowIn=TDE; diff --git a/kdesktop/init/My_Network_Places b/kdesktop/init/My_Network_Places index 647db5a85..7c12cd387 100644 --- a/kdesktop/init/My_Network_Places +++ b/kdesktop/init/My_Network_Places @@ -1,76 +1,11 @@ [Desktop Entry] Encoding=UTF-8 Icon=network + Name=My Network Places -Name[af]=Afgeleë Plekke -Name[ar]=أماكن بعيدة -Name[be]=Аддаленыя месцы -Name[bg]=Отдалечени директории -Name[bn]=দূরবর্তী অবস্থান -Name[br]=Lec'hiadurioù a-bell -Name[bs]=Udaljena mjesta -Name[ca]=Llocs remots -Name[cs]=Vzdálená umístění -Name[csb]=Daleczi place -Name[da]=Eksterne steder -Name[de]=Netzwerk -Name[el]=Απομακρυσμένες τοποθεσίες -Name[en_US]=My Network Places -Name[eo]=Foraj Lokoj -Name[es]=Lugares remotos -Name[et]=Võrgukohad -Name[eu]=Urruneko lekuak -Name[fa]=جاهای دور -Name[fi]=Etäkohteet -Name[fr]=Emplacements distants -Name[fy]=Eksterne plakken -Name[ga]=Áiteanna Cianda -Name[gl]=Comparticións Remotas -Name[he]=מקומות מרוחקים -Name[hi]=रिमोट स्थान -Name[hr]=Udaljene lokacije -Name[hu]=Hálózati helyek -Name[is]=Fjarlægir staðir -Name[it]=Indirizzi remoti -Name[ja]=リモートの場所 -Name[ka]=დაშორებული ადგილები -Name[kk]=Қашықтағы орындар -Name[km]=កន្លែងពីចម្ងាយ -Name[ko]=원격 접속 -Name[lt]=Nutolusios vietos -Name[lv]=Attālinātās vietas -Name[mk]=Оддалечени места -Name[ms]=Tempat Jauh -Name[nb]=Eksterne steder -Name[nds]=Feern Steden -Name[ne]=टाढाको स्थान -Name[nl]=Externe plekken -Name[nn]=Eksterne plassar -Name[pa]=ਰਿਮੋਟ ਥਾਂ -Name[pl]=Zdalne miejsca -Name[pt]=Locais Remotos -Name[pt_BR]=Locais Remotos -Name[ro]=Locații distante -Name[ru]=Сетевые ресурсы -Name[rw]=Imyanya ya Kure -Name[se]=Gáiddus báikkit -Name[sk]=Vzdialené miesta -Name[sl]=Oddaljena mesta -Name[sr]=Удаљена места -Name[sr@Latn]=Udaljena mesta -Name[sv]=Fjärrplatser -Name[ta]=தொலைதூர இடங்கள் -Name[te]=సుదూరపు ప్రదేశాలు -Name[th]=ทางไกล -Name[tr]=Uzak Yerler -Name[tt]=Çittäge Urınnar -Name[uk]=Віддалені місця -Name[uz]=Masofadagi joylar -Name[uz@cyrillic]=Масофадаги жойлар -Name[vi]=Địa chỉ trên mạng -Name[wa]=Plaeces då lon -Name[zh_CN]=远程位置 -Name[zh_TW]=遠端空間 + +Comment=Access to network places and remote hosts + OnlyShowIn=TDE; Type=Link URL=remote:/ diff --git a/kdesktop/init/Printers b/kdesktop/init/Printers index 91abc3e83..ec8fff92a 100644 --- a/kdesktop/init/Printers +++ b/kdesktop/init/Printers @@ -1,82 +1,11 @@ [Desktop Entry] Encoding=UTF-8 Icon=kjobviewer + Name=Printers -Name[af]=Drukkers -Name[ar]=الطابعات -Name[be]=Друкаркі -Name[bg]=Принтери -Name[bn]=মুদ্রণ -Name[br]=Moullerezioù -Name[bs]=Štampači -Name[ca]=Impressores -Name[cs]=Tiskárny -Name[csb]=Drëkerë -Name[cy]=Argraffyddion -Name[da]=Printere -Name[de]=Drucker -Name[el]=Εκτυπωτές -Name[en_US]=Printers -Name[eo]=Printiloj -Name[es]=Impresoras -Name[et]=Printerid -Name[eu]=Inprimagailuak -Name[fa]=چاپگرها -Name[fi]=Tulostimet -Name[fr]=Imprimantes -Name[ga]=Printéirí -Name[gl]=Impresoras -Name[he]=מדפסות -Name[hi]=प्रिंटर -Name[hr]=Pisači -Name[hu]=Nyomtató -Name[is]=Prentarar -Name[it]=Stampanti -Name[ja]=プリンタ -Name[ka]=პრინტერები -Name[kk]=Принтерлер -Name[km]=ម៉ាស៊ីនបោះពុម្ព -Name[lo]=ເຄື່ອງພິມ - K -Name[lt]=Spausdintuvai -Name[lv]=Printeri -Name[mk]=Печатачи -Name[mn]=Хэвлэгч -Name[ms]=Pencetak -Name[nb]=Skrivere -Name[nds]=Druckers -Name[ne]=मुद्रक -Name[nn]=Skrivarar -Name[nso]=Digatisi -Name[pa]=ਪਰਿੰਟਰ -Name[pl]=Drukarki -Name[pt]=Impressoras -Name[pt_BR]=Impressoras -Name[ro]=Imprimante -Name[ru]=Принтеры -Name[rw]=Mucapyi -Name[se]=Čálánat -Name[sk]=Tlačiarne -Name[sl]=Tiskalniki -Name[sr]=Штампачи -Name[sr@Latn]=Štampači -Name[ss]=Tishiceleli -Name[sv]=Skrivare -Name[ta]=அச்சியந்திரம் -Name[te]=ప్రింటర్లు -Name[tg]=Чопгарҳо -Name[th]=เครื่องพิมพ์ -Name[tr]=Yazıcılar -Name[tt]=Basaqlar -Name[uk]=Принтери -Name[uz]=Printerlar -Name[uz@cyrillic]=Принтерлар -Name[ven]=Dziphirinthara -Name[vi]=Máy in -Name[wa]=Sicrireces -Name[xh]=Abashicileli -Name[zh_CN]=打印机 -Name[zh_TW]=印表機 -Name[zu]=Abashicileli + +Comment=Manage print jobs + Terminal=false Type=Application Exec=kjobviewer --all --show %i %m diff --git a/kdesktop/init/System.desktop b/kdesktop/init/System.desktop index 7c9f2a988..63bf7aba7 100644 --- a/kdesktop/init/System.desktop +++ b/kdesktop/init/System.desktop @@ -1,148 +1,10 @@ [Desktop Entry] Name=System -Name[af]=Stelsel -Name[ar]=النظام -Name[az]=Sistem -Name[be]=Сістэма -Name[bg]=Система -Name[bn]=সিস্টেম -Name[br]=Reizhiad -Name[bs]=Sistem -Name[ca]=Sistema -Name[cs]=Systém -Name[csb]=Systema -Name[cy]=Cysawd -Name[el]=Σύστημα -Name[eo]=Sistemo -Name[es]=Sistema -Name[et]=Süsteem -Name[eu]=Sistema -Name[fa]=سیستم -Name[fi]=Järjestelmä -Name[fo]=Kervi -Name[fr]=Système -Name[fy]=Systeem -Name[ga]=Córas -Name[gl]=Sistema -Name[he]=מערכת -Name[hi]=तंत्र -Name[hr]=Sustav -Name[hu]=Rendszer -Name[id]=Sistem -Name[is]=Kerfi -Name[it]=Sistema -Name[ja]=システム -Name[ka]=სისტემა -Name[kk]=Жүйелік -Name[km]=ប្រព័ន្ធ -Name[ko]=시스템 -Name[lo]=ຈັດການລະບົບ -Name[lt]=Sistema -Name[lv]=Sistēma -Name[mk]=Систем -Name[mn]=Систем -Name[ms]=Sistem -Name[mt]=Sistema -Name[nds]=Systeem -Name[ne]=प्रणाली -Name[nl]=Systeem -Name[oc]=Sistemo -Name[pa]=ਸਿਸਟਮ -Name[pt]=Sistema -Name[pt_BR]=Sistema -Name[ro]=Sistem -Name[ru]=Система -Name[rw]=Sisitemu -Name[se]=Vuogádat -Name[sk]=Systém -Name[sl]=Sistem -Name[sr]=Систем -Name[sr@Latn]=Sistem -Name[ss]=Umshini -Name[ta]=அமைப்பு -Name[te]=వ్యవస్థ -Name[tg]=Система -Name[th]=ระบบ -Name[tr]=Sistem -Name[tt]=Sistem -Name[uk]=Система -Name[uz]=Tizim -Name[uz@cyrillic]=Тизим -Name[ven]=Maitele -Name[vi]=Hệ thống -Name[wa]=Sistinme -Name[xh]=Indlela esestyenziswayo -Name[zh_CN]=系统 -Name[zh_TW]=系統 -Name[zu]=Isistimu + GenericName=System Locations -GenericName[af]=Stelsel Liggings -GenericName[ar]=مواقع النظام -GenericName[be]=Сістэмныя месцазнаходжанні -GenericName[bg]=Системни файлове -GenericName[bn]=সিস্টেম অবস্থানসমূহ -GenericName[bs]=Sistemske lokacije -GenericName[ca]=Localitzacions del sistema -GenericName[cs]=Systémová umístění -GenericName[csb]=Systemòwé lokalizacëje -GenericName[da]=System-steder -GenericName[de]=Systemordner -GenericName[el]=Τοποθεσίες συστήματος -GenericName[eo]=Sistemaj lokoj -GenericName[es]=Ubicaciones del sistema -GenericName[et]=Süsteemi asukohad -GenericName[eu]=Sistemaren kokapenak -GenericName[fa]=محلهای سیستم -GenericName[fi]=Järjestelmän sijainti -GenericName[fr]=Emplacements systèmes -GenericName[fy]=Systeemlokaasjes -GenericName[gl]=Lugares do Sistema -GenericName[he]=מיקומי מערכת -GenericName[hi]=तंत्र स्थान -GenericName[hr]=Sistemske lokacije -GenericName[hu]=Rendszerkönyvtárak -GenericName[is]=Staðsetningar kerfis -GenericName[it]=Indirizzi di sistema -GenericName[ja]=システム場所 -GenericName[ka]=სისტემური მისამართები -GenericName[kk]=Жүйенің орналасуы -GenericName[km]=ទីតាំងប្រព័ន្ធ -GenericName[ko]=시스템 알림 -GenericName[lt]=Sistemos vietos -GenericName[lv]=Sistēmas vietas -GenericName[mk]=Системски локации -GenericName[ms]=Lokasi Sistem -GenericName[mt]=System Monitor -GenericName[nb]=Systemplassar -GenericName[nds]=Systeemsteden -GenericName[ne]=प्रणाली स्थान -GenericName[nl]=Systeemlocaties -GenericName[nn]=Systemplassar -GenericName[pa]=ਸਿਸਟਮ ਟਿਕਾਣੇ -GenericName[pl]=Lokalizacje systemowe -GenericName[pt]=Locais do Sistema -GenericName[pt_BR]=Localizações no Sistema -GenericName[ro]=Locații de sistem -GenericName[ru]=Системные адреса -GenericName[rw]=Ahantu ha Sisitemu -GenericName[se]=Vuogádatbáikkit -GenericName[sk]=Systémové lokácie -GenericName[sl]=Sistemske lokacije -GenericName[sr]=Системске локације -GenericName[sr@Latn]=Sistemske lokacije -GenericName[sv]=Systemplatser -GenericName[ta]=அமைப்பு இடங்கள் -GenericName[tg]=Ҷойгиршавиҳои система -GenericName[th]=ที่ตั้งของระบบ -GenericName[tr]=Sistem Konumları -GenericName[tt]=Sistem Urınlaşuları -GenericName[uk]=Системні адреси -GenericName[uz]=Tizimga tegishli manzillar -GenericName[uz@cyrillic]=Тизимга тегишли манзиллар -GenericName[vi]=Đường dẫn Hệ thống -GenericName[wa]=Plaeces do sistinme -GenericName[zh_CN]=系统定位 -GenericName[zh_TW]=系統位置 + +Comment=Access to system places + URL=system:/ Icon=computer Type=Link diff --git a/kdesktop/init/Templates/CDROM-Device.desktop b/kdesktop/init/Templates/CDROM-Device.desktop index bb1aa92dd..eb228c909 100644 --- a/kdesktop/init/Templates/CDROM-Device.desktop +++ b/kdesktop/init/Templates/CDROM-Device.desktop @@ -7,86 +7,7 @@ Icon=media-optical-cdrom-mounted UnmountIcon=media-optical-cdrom-unmounted Actions=Eject; X-TDE-Priority=TopLevel + [Desktop Action Eject] Name=Eject -Name[af]=Uitskiet -Name[ar]=أقذف -Name[az]=Çıxart -Name[be]=Вызваліць -Name[bg]=Изваждане -Name[bn]=ইজেক্ট -Name[br]=Stlepel -Name[bs]=Izbaci -Name[ca]=Expulsa -Name[cs]=Vysunout -Name[csb]=Wësënie -Name[cy]=Allfwrw -Name[da]=Skub ud -Name[de]=Auswerfen -Name[el]=Εξαγωγή -Name[eo]=Eligo -Name[es]=Expulsar -Name[et]=Väljastamine -Name[eu]=Egotzi -Name[fa]=پس زدن -Name[fi]=Poista -Name[fr]=Éjecter -Name[fy]=Utsmytknop -Name[ga]=Díchuir -Name[gl]=Expulsar -Name[he]=הוצא -Name[hi]=बाहर -Name[hr]=Izbaci -Name[hu]=Kidobás -Name[is]=Henda út -Name[it]=Espelli -Name[ja]=取り出し -Name[ka]=CD-ს ამოღება -Name[kk]=Алып-шығару -Name[km]=ច្រានចេញ -Name[ko]=꺼내기 -Name[lo]=ເອົາແຜ່ນອອກ -Name[lt]=Išmesti -Name[lv]=Izņemt -Name[mk]=Извади -Name[mn]=Гаргах -Name[ms]=Lenting -Name[mt]=Iftaħ -Name[nb]=Løs ut -Name[nds]=Rutsmieten -Name[ne]=निकाल्नुहोस् -Name[nl]=Uitwerpen -Name[nn]=Løys ut -Name[nso]=Ntsha -Name[oc]=Expulsa -Name[pa]=ਬਾਹਰ ਕੱਢੋ -Name[pl]=Wysuń -Name[pt]=Ejectar -Name[pt_BR]=Ejetar -Name[ro]=Ejectează -Name[ru]=Извлечь CD -Name[rw]=Gusohora -Name[se]=Bálkes olggos -Name[sk]=Vysunúť -Name[sl]=Izvrzi -Name[sr]=Избаци -Name[sr@Latn]=Izbaci -Name[ss]=Khafuna -Name[sv]=Mata ut -Name[ta]=வெளித்தள் -Name[te]=ఎజెక్ట్ -Name[tg]=Ихроҷ -Name[th]=เอาแผ่นออก -Name[tr]=Çıkart -Name[tt]=Çığar -Name[uk]=Виштовхнути -Name[uz]=Chiqarish -Name[uz@cyrillic]=Чиқариш -Name[ven]=Bvisa -Name[vi]=Đẩy đĩa ra -Name[wa]=Fé rexhe -Name[xh]=Khuphela ngaphandle -Name[zh_CN]=弹出 -Name[zh_TW]=退出 -Name[zu]=Khipha Exec=tdeeject %v diff --git a/kdesktop/init/Templates/CDWRITER-Device.desktop b/kdesktop/init/Templates/CDWRITER-Device.desktop index d802d8dec..0b2b336ca 100644 --- a/kdesktop/init/Templates/CDWRITER-Device.desktop +++ b/kdesktop/init/Templates/CDWRITER-Device.desktop @@ -7,86 +7,7 @@ Icon=cd-rw-mounted UnmountIcon=cd-rw-unmounted Actions=Eject; X-TDE-Priority=TopLevel + [Desktop Action Eject] Name=Eject -Name[af]=Uitskiet -Name[ar]=أقذف -Name[az]=Çıxart -Name[be]=Вызваліць -Name[bg]=Изваждане -Name[bn]=ইজেক্ট -Name[br]=Stlepel -Name[bs]=Izbaci -Name[ca]=Expulsa -Name[cs]=Vysunout -Name[csb]=Wësënie -Name[cy]=Allfwrw -Name[da]=Skub ud -Name[de]=Auswerfen -Name[el]=Εξαγωγή -Name[eo]=Eligo -Name[es]=Expulsar -Name[et]=Väljastamine -Name[eu]=Egotzi -Name[fa]=پس زدن -Name[fi]=Poista -Name[fr]=Éjecter -Name[fy]=Utsmytknop -Name[ga]=Díchuir -Name[gl]=Expulsar -Name[he]=הוצא -Name[hi]=बाहर -Name[hr]=Izbaci -Name[hu]=Kidobás -Name[is]=Henda út -Name[it]=Espelli -Name[ja]=取り出し -Name[ka]=CD-ს ამოღება -Name[kk]=Алып-шығару -Name[km]=ច្រានចេញ -Name[ko]=꺼내기 -Name[lo]=ເອົາແຜ່ນອອກ -Name[lt]=Išmesti -Name[lv]=Izņemt -Name[mk]=Извади -Name[mn]=Гаргах -Name[ms]=Lenting -Name[mt]=Iftaħ -Name[nb]=Løs ut -Name[nds]=Rutsmieten -Name[ne]=निकाल्नुहोस् -Name[nl]=Uitwerpen -Name[nn]=Løys ut -Name[nso]=Ntsha -Name[oc]=Expulsa -Name[pa]=ਬਾਹਰ ਕੱਢੋ -Name[pl]=Wysuń -Name[pt]=Ejectar -Name[pt_BR]=Ejetar -Name[ro]=Ejectează -Name[ru]=Извлечь CD -Name[rw]=Gusohora -Name[se]=Bálkes olggos -Name[sk]=Vysunúť -Name[sl]=Izvrzi -Name[sr]=Избаци -Name[sr@Latn]=Izbaci -Name[ss]=Khafuna -Name[sv]=Mata ut -Name[ta]=வெளித்தள் -Name[te]=ఎజెక్ట్ -Name[tg]=Ихроҷ -Name[th]=เอาแผ่นออก -Name[tr]=Çıkart -Name[tt]=Çığar -Name[uk]=Виштовхнути -Name[uz]=Chiqarish -Name[uz@cyrillic]=Чиқариш -Name[ven]=Bvisa -Name[vi]=Đẩy đĩa ra -Name[wa]=Fé rexhe -Name[xh]=Khuphela ngaphandle -Name[zh_CN]=弹出 -Name[zh_TW]=退出 -Name[zu]=Khipha Exec=tdeeject %v diff --git a/kdesktop/init/Templates/CMakeLists.txt b/kdesktop/init/Templates/CMakeLists.txt index 94a4ff5e0..e15dc3419 100644 --- a/kdesktop/init/Templates/CMakeLists.txt +++ b/kdesktop/init/Templates/CMakeLists.txt @@ -9,19 +9,29 @@ # ################################################# -install( FILES +tde_create_translated_desktop( + SOURCE linkProgram.desktop linkURL.desktop linkFloppy.desktop linkHD.desktop linkCDROM.desktop Directory.desktop TextFile.desktop HTMLFile.desktop linkZIP.desktop linkDVDROM.desktop linkCAMERA.desktop linkNFS.desktop linkCDWRITER.desktop linkMO.desktop - DESTINATION ${TEMPLATES_INSTALL_DIR} ) + DESTINATION ${TEMPLATES_INSTALL_DIR} + PO_DIR kdesktop-icons +) -install( FILES - Program.desktop URL.desktop Floppy.desktop HD.desktop - CDROM-Device.desktop TextFile.txt HTMLFile.html - ZIP-Device.desktop DVDROM-Device.desktop CAMERA-Device.desktop - NFS.desktop CDWRITER-Device.desktop MO-Device.desktop - DESTINATION ${TEMPLATES_INSTALL_DIR}/.source ) +tde_create_translated_desktop( + SOURCE + Program.desktop URL.desktop NFS.desktop Floppy.desktop HD.desktop + CDROM-Device.desktop CDWRITER-Device.desktop DVDROM-Device.desktop + ZIP-Device.desktop CAMERA-Device.desktop MO-Device.desktop + DESTINATION ${TEMPLATES_INSTALL_DIR}/.source + PO_DIR kdesktop-icons +) + +install( + FILES TextFile.txt HTMLFile.html + DESTINATION ${TEMPLATES_INSTALL_DIR}/.source +) tde_install_empty_directory( ${TEMPLATES_INSTALL_DIR}/.source/emptydir ) diff --git a/kdesktop/init/Templates/DVDROM-Device.desktop b/kdesktop/init/Templates/DVDROM-Device.desktop index f5e1e6d61..7ee55ac8d 100644 --- a/kdesktop/init/Templates/DVDROM-Device.desktop +++ b/kdesktop/init/Templates/DVDROM-Device.desktop @@ -7,86 +7,7 @@ Icon=media-optical-dvd-mounted UnmountIcon=media-optical-dvd-unmounted Actions=Eject; X-TDE-Priority=TopLevel + [Desktop Action Eject] Name=Eject -Name[af]=Uitskiet -Name[ar]=أقذف -Name[az]=Çıxart -Name[be]=Вызваліць -Name[bg]=Изваждане -Name[bn]=ইজেক্ট -Name[br]=Stlepel -Name[bs]=Izbaci -Name[ca]=Expulsa -Name[cs]=Vysunout -Name[csb]=Wësënie -Name[cy]=Allfwrw -Name[da]=Skub ud -Name[de]=Auswerfen -Name[el]=Εξαγωγή -Name[eo]=Eligo -Name[es]=Expulsar -Name[et]=Väljastamine -Name[eu]=Egotzi -Name[fa]=پس زدن -Name[fi]=Poista -Name[fr]=Éjecter -Name[fy]=Utsmytknop -Name[ga]=Díchuir -Name[gl]=Expulsar -Name[he]=הוצא -Name[hi]=बाहर -Name[hr]=Izbaci -Name[hu]=Kidobás -Name[is]=Henda út -Name[it]=Espelli -Name[ja]=取り出し -Name[ka]=CD-ს ამოღება -Name[kk]=Алып-шығару -Name[km]=ច្រានចេញ -Name[ko]=꺼내기 -Name[lo]=ເອົາແຜ່ນອອກ -Name[lt]=Išmesti -Name[lv]=Izņemt -Name[mk]=Извади -Name[mn]=Гаргах -Name[ms]=Lenting -Name[mt]=Iftaħ -Name[nb]=Løs ut -Name[nds]=Rutsmieten -Name[ne]=निकाल्नुहोस् -Name[nl]=Uitwerpen -Name[nn]=Løys ut -Name[nso]=Ntsha -Name[oc]=Expulsa -Name[pa]=ਬਾਹਰ ਕੱਢੋ -Name[pl]=Wysuń -Name[pt]=Ejectar -Name[pt_BR]=Ejetar -Name[ro]=Ejectează -Name[ru]=Извлечь CD -Name[rw]=Gusohora -Name[se]=Bálkes olggos -Name[sk]=Vysunúť -Name[sl]=Izvrzi -Name[sr]=Избаци -Name[sr@Latn]=Izbaci -Name[ss]=Khafuna -Name[sv]=Mata ut -Name[ta]=வெளித்தள் -Name[te]=ఎజెక్ట్ -Name[tg]=Ихроҷ -Name[th]=เอาแผ่นออก -Name[tr]=Çıkart -Name[tt]=Çığar -Name[uk]=Виштовхнути -Name[uz]=Chiqarish -Name[uz@cyrillic]=Чиқариш -Name[ven]=Bvisa -Name[vi]=Đẩy đĩa ra -Name[wa]=Fé rexhe -Name[xh]=Khuphela ngaphandle -Name[zh_CN]=弹出 -Name[zh_TW]=退出 -Name[zu]=Khipha Exec=tdeeject %v diff --git a/kdesktop/init/Templates/Directory.desktop b/kdesktop/init/Templates/Directory.desktop index 3ace5a6a4..567c0f32f 100644 --- a/kdesktop/init/Templates/Directory.desktop +++ b/kdesktop/init/Templates/Directory.desktop @@ -1,146 +1,6 @@ [Desktop Entry] Name=Folder... -Name[af]=Gids... -Name[ar]=المجلد... -Name[be]=Тэчка... -Name[bg]=Директория... -Name[bn]=ফোল্ডার... -Name[br]=Renkell ... -Name[bs]=Direktorij... -Name[ca]=Carpeta... -Name[cs]=Složka... -Name[csb]=Katalog... -Name[cy]=Plygell... -Name[da]=Mappe... -Name[de]=Ordner ... -Name[el]=Φάκελος... -Name[eo]=Dosierujo... -Name[es]=Carpeta... -Name[et]=Kataloog... -Name[eu]=Karpeta... -Name[fa]=پوشه... -Name[fi]=Kansio... -Name[fr]=Dossier... -Name[fy]=Map... -Name[ga]=Fillteán... -Name[gl]=Cartafol... -Name[he]=תיקייה... -Name[hi]=फ़ोल्डर... -Name[hr]=Mapa... -Name[hu]=Könyvtár... -Name[is]=Mappa... -Name[it]=Cartella... -Name[ja]=フォルダ... -Name[ka]=საქაღალდე... -Name[kk]=Қапшық... -Name[km]=ថត... -Name[ko]=폴더... -Name[lt]=Aplankas... -Name[lv]=Mape... -Name[mk]=Папка... -Name[mn]=Хавтас... -Name[mt]=Direttorju... -Name[nb]=Mappe … -Name[nds]=Orner... -Name[ne]=फोल्डर... -Name[nl]=Map... -Name[nn]=Mappe … -Name[pa]=ਫੋਲਡਰ... -Name[pl]=Katalog... -Name[pt]=Pasta... -Name[pt_BR]=Pasta... -Name[ru]=Папку... -Name[rw]=Ububiko... -Name[se]=Máhppa … -Name[sk]=Priečinok... -Name[sl]=Mapa ... -Name[sr]=Фасцикла... -Name[sr@Latn]=Fascikla... -Name[sv]=Katalog... -Name[ta]=அடைவு... -Name[tg]=Феҳрист... -Name[th]=โฟลเดอร์... -Name[tr]=Dizin... -Name[tt]=Törgäk... -Name[uk]=Тека... -Name[uz]=Jild -Name[uz@cyrillic]=Жилд -Name[vi]=Thư mục... -Name[wa]=Ridant... -Name[zh_CN]=文件夹... -Name[zh_TW]=資料夾... Comment=Enter folder name: -Comment[af]=Voer gidsnaam in: -Comment[ar]=أدخل إسم المجلَد: -Comment[be]=Вызначце назву тэчкі: -Comment[bg]=Въведете името на директорията: -Comment[bn]=ফোল্ডারের নাম লিখুন: -Comment[br]=Roit un anv ar renkell : -Comment[bs]=Unesite naziv direktorija: -Comment[ca]=Entra el nom de la carpeta: -Comment[cs]=Zadejte název složky: -Comment[csb]=Wpiszë miono katalogù: -Comment[cy]=Mewnosodwch enw'r plygell: -Comment[da]=Indtast mappenavn: -Comment[de]=Ordnernamen eingeben: -Comment[el]=Δώστε το όνομα του φακέλου: -Comment[eo]=Enigu novan dosierujonomon: -Comment[es]=Introduzca el nombre de la carpeta: -Comment[et]=Sisesta kataloogi nimi: -Comment[eu]=Sartu karpetaren izena: -Comment[fa]=نام پوشه را وارد کنید: -Comment[fi]=Anna kansion nimi: -Comment[fr]=Donnez le nom du dossier : -Comment[fy]=Mapname ynfiere: -Comment[ga]=Iontráil ainm an fhillteáin: -Comment[gl]=Introduza o nome do cartafol: -Comment[he]=הזן שם תיקייה: -Comment[hi]=फ़ोल्डर नाम भरें: -Comment[hr]=Unesite naziv mape: -Comment[hu]=A könyvtár neve: -Comment[is]=Sláðu inn möppunafn: -Comment[it]=Immetti il nome della cartella: -Comment[ja]=フォルダ名を入力してください: -Comment[ka]=შეიყვანეთ საქაღალდის სახელი: -Comment[kk]=Қапшықты келтіріңіз: -Comment[km]=បញ្ចូលឈ្មោះថត ៖ -Comment[ko]=폴더 이름을 입력하십시오: -Comment[lt]=Įveskite aplanko vardą: -Comment[lv]=Ievadiet mapes nosaukumu: -Comment[mk]=Внесете го името на папката: -Comment[mn]=Лавлахын нэрийг өг: -Comment[ms]=Masukkan nama folder: -Comment[mt]=Daħħal isem id-direttorju: -Comment[nb]=Nytt mappenavn: -Comment[nds]=Ornernaam ingeven: -Comment[ne]=फोल्डर नाम प्रविष्ट गर्नुहोस्: -Comment[nl]=Mapnaam invoeren: -Comment[nn]=Nytt mappenamn: -Comment[pa]=ਫੋਲਡਰ ਨਾਂ ਦਿਓ: -Comment[pl]=Podaj nazwę katalogu: -Comment[pt]=Indique o nome da pasta: -Comment[pt_BR]=Digite o nome da pasta: -Comment[ro]=Introduceți numele folderului: -Comment[ru]=Введите имя папки: -Comment[rw]=Kwinjiza izina ry'ububiko: -Comment[se]=Bija máhppanama: -Comment[sk]=Zadajte meno priečinku: -Comment[sl]=Vnesite ime mape: -Comment[sr]=Унесите име фасцикле: -Comment[sr@Latn]=Unesite ime fascikle: -Comment[sv]=Ange katalognamn: -Comment[ta]=அடைவின் பெயரை உள்ளிடு: -Comment[tg]=Номи феҳристро ворид кунед: -Comment[th]=เติมชื่อโฟลเดอร์: -Comment[tr]=Dizin adını girin: -Comment[tt]=Törgäk adın kert: -Comment[uk]=Введіть назву теки: -Comment[uz]=Jildning nomini kiriting: -Comment[uz@cyrillic]=Жилднинг номини киритинг: -Comment[vi]=Điền tên thư mục: -Comment[wa]=Dinez l' no do ridant: -Comment[zh_CN]=输入文件夹名称: -Comment[zh_TW]=輸入目錄名稱: Type=Link URL=.source/emptydir Icon=folder diff --git a/kdesktop/init/Templates/Floppy.desktop b/kdesktop/init/Templates/Floppy.desktop index 727ef666b..72c48de97 100644 --- a/kdesktop/init/Templates/Floppy.desktop +++ b/kdesktop/init/Templates/Floppy.desktop @@ -1,71 +1,6 @@ [Desktop Action Format] Exec=kfloppy %v Name=Format -Name[af]=Formaat -Name[ar]=الهيئة -Name[be]=Фармат -Name[bg]=Формат -Name[bn]=ফরম্যাট -Name[br]=Furmadiñ -Name[cs]=Formát -Name[csb]=Fòrmat -Name[cy]=Fformat -Name[de]=Formatieren -Name[el]=Μορφοποίηση -Name[eo]=Formato -Name[es]=Formato -Name[et]=Vorming -Name[eu]=Formatua -Name[fa]=قالب -Name[fi]=Formatoi -Name[fy]=Formattearje -Name[ga]=Formáid -Name[gl]=Formato -Name[he]=אתחל -Name[hi]=फार्मेट -Name[hr]=Oblik -Name[hu]=Formázás -Name[is]=Snið -Name[it]=Formatta -Name[ja]=フォーマット -Name[ka]=ფორმატი -Name[kk]=Пішін -Name[km]=ទ្រង់ទ្រាយ -Name[ko]=포맷 -Name[lo]=ສູດຄະນິດສານ - K -Name[lt]=Formatas -Name[lv]=Formatēt -Name[mk]=Формат -Name[mn]=Хэлбэр -Name[nds]=Formateren -Name[ne]=ढाँचा -Name[nl]=Formatteren -Name[nso]=Thlolego -Name[pa]=ਫਾਰਮਿਟ -Name[pt]=Formatar -Name[pt_BR]=Formato -Name[ru]=Формат -Name[rw]=Imiterere -Name[se]=Formáhtta -Name[sk]=Formát -Name[sl]=Oblika -Name[sr]=Формат -Name[ss]=Sakhiwo -Name[ta]=வடிவம் -Name[te]=ఫార్మెట్ -Name[tg]=Андоза -Name[th]=รูปแบบ -Name[tr]=Biçim -Name[uk]=Формат -Name[uz]=Format qilish -Name[uz@cyrillic]=Формат қилиш -Name[ven]=Tshivhumbeo -Name[vi]=Định dạng -Name[wa]=Abwesner -Name[xh]=Ifomati -Name[zh_CN]=格式 -Name[zh_TW]=格式化 -Name[zu]=Isakhiwo [Desktop Entry] Actions=Format; diff --git a/kdesktop/init/Templates/HTMLFile.desktop b/kdesktop/init/Templates/HTMLFile.desktop index 8aa6a6ea7..e5618bbd4 100644 --- a/kdesktop/init/Templates/HTMLFile.desktop +++ b/kdesktop/init/Templates/HTMLFile.desktop @@ -1,148 +1,6 @@ [Desktop Entry] Name=HTML File... -Name[af]=HTML Lêer... -Name[ar]=ملف لغة علامات النصّ الفائق... -Name[be]=Файл HTML... -Name[bg]=HTML файл... -Name[bn]=HTML ফাইল... -Name[br]=Restr HTML ... -Name[bs]=HTML datoteka... -Name[ca]=Fitxer HTML... -Name[cs]=HTML soubor... -Name[csb]=Lopk HTML... -Name[cy]=Ffeil HTML... -Name[da]=HTML-fil... -Name[de]=HTML-Datei ... -Name[el]=Αρχείο HTML... -Name[eo]=HTML-dosiero... -Name[es]=Archivo HTML... -Name[et]=HTML-fail... -Name[eu]=HTML fitxategia... -Name[fa]=پروندۀ زنگام... -Name[fi]=HTML-tiedosto... -Name[fr]=Fichier HTML... -Name[fy]=HTML-triem....... -Name[ga]=Comhad HTML... -Name[gl]=Ficheiro HTML... -Name[he]=קובץ HTML... -Name[hi]=एचटीएमएल फ़ाइल... -Name[hr]=HTML datoteka... -Name[hu]=HTML-fájl... -Name[is]=HTML skrá... -Name[it]=File HTML... -Name[ja]=HTML ファイル... -Name[ka]=HTML ფაილი... -Name[kk]=HTML файлы... -Name[km]=ឯកសារ HTML... -Name[ko]=HTML 파일 -Name[lt]=HTML byla... -Name[lv]=HTML Fails... -Name[mk]=HTML датотека... -Name[mn]=HTML-Файл... -Name[ms]=Fail HTML... -Name[mt]=Fajl HTML... -Name[nb]=HTML-fil … -Name[nds]=HTML-Datei... -Name[ne]=HTML फाइल... -Name[nl]=HTML-bestand... -Name[nn]=HTML-fil … -Name[pa]=HTML ਫਾਇਲ... -Name[pl]=Plik HTML... -Name[pt]=Ficheiro HTML... -Name[pt_BR]=Arquivo HTML... -Name[ro]=Fișier HTML... -Name[ru]=Страница HTML... -Name[rw]=Idosiye HTML... -Name[se]=HTML-fiila … -Name[sk]=Súbor HTML... -Name[sl]=Datoteka HTML ... -Name[sr]=HTML фајл... -Name[sr@Latn]=HTML fajl... -Name[sv]=HTML-fil... -Name[ta]=HTML கோப்பு... -Name[te]=హెచ్ టి ఎం ఎల్ దస్త్రం... -Name[tg]=Файли HTML... -Name[th]=แฟ้ม HTML... -Name[tr]=HTML Dosyası... -Name[tt]=HTML Birem... -Name[uk]=Файл HTML... -Name[uz]=HTML-fayli... -Name[uz@cyrillic]=HTML-файли... -Name[vi]=Tập tin HTML... -Name[wa]=Fitchî HTML... -Name[zh_CN]=HTML 文件... -Name[zh_TW]=HTML 檔案... Comment=Enter HTML filename: -Comment[af]=Voer HTML lêernaam in: -Comment[ar]=أدخل إسم ملف لغة علامات النصّ الفائق: -Comment[be]=Вызначце назву файла HTML: -Comment[bg]=Въведете името на HTML файла: -Comment[bn]=HTML ফাইলের নাম: -Comment[br]=Roit un anv ar restr : -Comment[bs]=Unesite ime HTML datoteke: -Comment[ca]=Entra el nom del fitxer HTML: -Comment[cs]=Zadejte název HTML souboru: -Comment[csb]=Wpiszë miono lopkù HTML: -Comment[da]=Indtast HTML-filnavn: -Comment[de]=Name der HTML-Datei eingeben: -Comment[el]=Δώστε το όνομα του αρχείου HTML: -Comment[eo]=Enigu HTML-dosiernomon: -Comment[es]=Introduzca el nombre del archivo HTML: -Comment[et]=Sisesta HTML-faili nimi: -Comment[eu]=Sartu HTML fitxategiaren izena: -Comment[fa]=نام پروندۀ زنگام را وارد کنید: -Comment[fi]=Anna HTML-tiedostonimi: -Comment[fr]=Donnez le nom du fichier HTML : -Comment[fy]=Namme fan HTML-triem ynfiere: -Comment[ga]=Iontráil ainm an chomhaid HTML: -Comment[gl]=Introduza o nome do ficheiro HTML: -Comment[he]=הזן שם לקובץ ה־HTML: -Comment[hi]=एचटीएमएल फ़ाइल-नाम भरें: -Comment[hr]=Unesite naziv HTML datoteke: -Comment[hu]=A HTML-fájl neve: -Comment[is]=Sláðu inn HTML skráarnafn: -Comment[it]=Immetti nome file HTML: -Comment[ja]=HTML ファイル名を入力: -Comment[ka]=HTML ფაილის სახელი შეიყვანეთ: -Comment[kk]=HTML файлын келтіріңіз: -Comment[km]=បញ្ចូលឈ្មោះឯកសារ HTML ៖ -Comment[ko]=HTML 파일 이름을 입력하십시오: -Comment[lt]=Įveskite HTML bylos vardą: -Comment[lv]=Ievadiet HTML faila nosaukumu: -Comment[mk]=Внесете го името на HTML датотеката: -Comment[ms]=Masukkan nama fail HTML: -Comment[mt]=Ittajpja isem ta' fajl HTML: -Comment[nb]=Skriv inn HTML-filnavn: -Comment[nds]=Naam vun de HTML-Datei ingeven: -Comment[ne]=HTML फाइलनाम प्रविष्ट गर्नुहोस्: -Comment[nl]=Naam van HTML-bestand invoeren: -Comment[nn]=Oppgje HTML-filnamn: -Comment[pa]=HTML ਫਾਇਲ ਨਾਂ ਦਿਓ: -Comment[pl]=Podaj nazwę pliku HTML: -Comment[pt]=Indique o nome do ficheiro HTML: -Comment[pt_BR]=Insira nome do arquivo HTML: -Comment[ro]=Introduceți numele fișierului HTML: -Comment[ru]=Введите имя страницы HTML: -Comment[rw]=Kwinjiza izinadosiye HTML: -Comment[se]=Bija HTML-fiilanama: -Comment[sk]=Zadajte meno súboru HTML: -Comment[sl]=Vnesite ime datoteke HTML: -Comment[sr]=Унесите име HTML фајла: -Comment[sr@Latn]=Unesite ime HTML fajla: -Comment[sv]=Ange HTML-filnamn: -Comment[ta]=HTML கோப்பு பெயரை உள்ளிடு: -Comment[te]=హెచ్ టి ఎం ఎల్ దస్త్రం పేరును వ్రాయండి: -Comment[tg]=Номи файли HTML-ро ворид кунед: -Comment[th]=เติมชื่อแฟ้ม HTML: -Comment[tr]=HTML dosyasını girin: -Comment[tt]=HTML-birem adın kert: -Comment[uk]=Введіть назву файла HTML: -Comment[uz]=HTML-faylning nomini kiriting: -Comment[uz@cyrillic]=HTML-файлнинг номини киритинг: -Comment[vi]=Điền tên tập tin HTML: -Comment[wa]=Dinez l' no do fitchî HTML: -Comment[zh_CN]=输入 HTML 文件名: -Comment[zh_TW]=輸入 HTML 檔案名稱: Type=Link URL=.source/HTMLFile.html Icon=text-html diff --git a/kdesktop/init/Templates/HTMLFile.html b/kdesktop/init/Templates/HTMLFile.html index c217ab3fc..93f60ef75 100644 --- a/kdesktop/init/Templates/HTMLFile.html +++ b/kdesktop/init/Templates/HTMLFile.html @@ -5,4 +5,4 @@ <style></style> </head> <body></body> -</html>
\ No newline at end of file +</html> diff --git a/kdesktop/init/Templates/TextFile.desktop b/kdesktop/init/Templates/TextFile.desktop index 5ca080129..edc9a40dc 100644 --- a/kdesktop/init/Templates/TextFile.desktop +++ b/kdesktop/init/Templates/TextFile.desktop @@ -1,148 +1,6 @@ [Desktop Entry] Name=Text File... -Name[af]=Teks Lêer... -Name[ar]=ملف نصي... -Name[be]=Тэкставы файл... -Name[bg]=Текстов файл... -Name[bn]=টেক্সট ফাইল... -Name[br]=Restr skrid ... -Name[bs]=Tekst datoteka... -Name[ca]=Fitxer de text... -Name[cs]=Textový soubor... -Name[csb]=Tekstowi lopk... -Name[cy]=Ffeil Testun... -Name[da]=Tekstfil... -Name[de]=Textdatei ... -Name[el]=Αρχείο κειμένου... -Name[eo]=Tekstdosiero... -Name[es]=Archivo de texto... -Name[et]=Tekstifail... -Name[eu]=Testu fitxategia... -Name[fa]=پروندۀ متنی... -Name[fi]=Tekstitiedosto... -Name[fr]=Fichier texte... -Name[fy]=Teksttriem...... -Name[ga]=Téacschomhad... -Name[gl]=Ficheiro de Texto... -Name[he]=קובץ טקסט... -Name[hi]=पाठ फ़ाइल... -Name[hr]=Tekstualna datoteka... -Name[hu]=Szöveges fájl... -Name[is]=Textaskrá... -Name[it]=File di testo... -Name[ja]=テキストファイル... -Name[ka]=ტექსტური ფაილი... -Name[kk]=Мәтін файлы... -Name[km]=ឯកសារអត្ថបទ... -Name[ko]=텍스트 파일... -Name[lt]=Teksto byla... -Name[lv]=Teksta Fails... -Name[mk]=Текстуална датотека... -Name[mn]=Текст файл... -Name[ms]=Fail Teks... -Name[mt]=Fajl ta' test... -Name[nb]=Tekstfil … -Name[nds]=Textdatei... -Name[ne]=पाठ फाइल... -Name[nl]=Tekstbestand... -Name[nn]=Tekstfil … -Name[pa]=ਪਾਠ ਫਾਇਲ... -Name[pl]=Plik tekstowy... -Name[pt]=Ficheiro de Texto... -Name[pt_BR]=Arquivo Texto... -Name[ro]=Fișier text... -Name[ru]=Текстовый файл... -Name[rw]= Idosiye Mwandiko... -Name[se]=Teakstafiila … -Name[sk]=Textový súbor... -Name[sl]=Besedilna datoteka ... -Name[sr]=Текстуални фајл... -Name[sr@Latn]=Tekstualni fajl... -Name[sv]=Textfil... -Name[ta]=உரைக் கோப்பு -Name[te]=వచన దస్త్రం... -Name[tg]=Файли матнӣ... -Name[th]=แฟ้มข้อความ... -Name[tr]=Metin Dosyası... -Name[tt]=Mäten Bireme... -Name[uk]=Текстовий файл... -Name[uz]=Matn fayli... -Name[uz@cyrillic]=Матн файли... -Name[vi]=Tập tin Văn bản... -Name[wa]=Fitchî tecse... -Name[zh_CN]=文本文件... -Name[zh_TW]=文字檔案... Comment=Enter text filename: -Comment[af]=Voer teks lêernaam in: -Comment[ar]=أدخل اسم الملف النصي: -Comment[be]=Вызначце назву тэкставага файла: -Comment[bg]=Въведете име на текстовия файл: -Comment[bn]=টেক্সট ফাইলের নাম: -Comment[br]=Roit un anv ar restr skrid : -Comment[bs]=Unesite ime tekst datoteke: -Comment[ca]=Entra el nom del fitxer de text: -Comment[cs]=Zadejte název textového souboru: -Comment[csb]=Wpiszë miono tekstowégò lopkù: -Comment[da]=Indtast tekstfilnavn: -Comment[de]=Name der Textdatei eingeben: -Comment[el]=Δώστε το όνομα του αρχείου κειμένου: -Comment[eo]=Enigu la tekstodosieran nomon: -Comment[es]=Introduzca el nombre del archivo de texto: -Comment[et]=Sisesta tekstifaili nimi: -Comment[eu]=Sartu testu fitxategiaren izena -Comment[fa]=نام پروندۀ متنی را وارد کنید: -Comment[fi]=Anna tekstitiedoston nimi: -Comment[fr]=Donnez le nom du fichier de texte : -Comment[fy]=Namme fan teksttriem ynfiere: -Comment[ga]=Iontráil ainm an téacschomhaid: -Comment[gl]=Introduza o nome do ficheiro de texto: -Comment[he]=הזן שם לקובץ הטקסט: -Comment[hi]=पाठ फ़ाइल-नाम भरें: -Comment[hr]=Upišite naziv tekstualne datoteke: -Comment[hu]=A szöveges fájl neve: -Comment[is]=Sláðu inn nafn á textaskrá: -Comment[it]=Immetti nome file di testo: -Comment[ja]=テキストファイル名を入力: -Comment[ka]=შეიყვანეთ ტექსტური ფაილის სახელი: -Comment[kk]=Мәтін файлын келтіріңіз: -Comment[km]=បញ្ចូលឈ្មោះឯកសារអត្ថបទ ៖ -Comment[ko]=텍스트 파일 이름을 입력하십시오: -Comment[lt]=Įveskite teksto bylos vardą: -Comment[lv]=Ievadiet teksta faila nosaukumu: -Comment[mk]=Внесете го името на текстуалната датотека: -Comment[ms]=Masukkan nama fail teks: -Comment[mt]=Ittajpja isem ta' fajl b'test: -Comment[nb]=Skriv inn navnet på tekstfila: -Comment[nds]=Naam vun de Textdatei ingeven: -Comment[ne]=पाठ फाइलनाम प्रविष्ट गर्नुहोस्: -Comment[nl]=Naam van tekstbestand invoeren: -Comment[nn]=Oppgje tekstfilnamn: -Comment[pa]=ਪਾਠ ਫਾਇਲ ਨਾਂ ਦਿਓ: -Comment[pl]=Podaj nazwę pliku tekstowego: -Comment[pt]=Indique o nome do ficheiro de texto: -Comment[pt_BR]=Insira nome do arquivo de texto: -Comment[ro]=Introduceți numele fișierului text: -Comment[ru]=Введите имя тестового файла: -Comment[rw]=Kwinjiza izinadosiye mwandiko: -Comment[se]=Bija teakstafiilanama: -Comment[sk]=Zadajte meno textového súboru: -Comment[sl]=Vnesite ime besedilne datoteke: -Comment[sr]=Унесите име текстуалног фајла: -Comment[sr@Latn]=Unesite ime tekstualnog fajla: -Comment[sv]=Ange textfilnamn: -Comment[ta]=உரை கோப்பு பெயரை உள்ளிடு: -Comment[te]=వచన దస్త్రం పేరును వ్రాయండి: -Comment[tg]=Номи файли матнро ворид кунед: -Comment[th]=เติมชื่อแฟ้มข้อความ: -Comment[tr]=Metin dosya adını girin: -Comment[tt]=Mäten-birem adın kert: -Comment[uk]=Введіть назву текстового файла: -Comment[uz]=Matn faylining nomini kiriting: -Comment[uz@cyrillic]=Матн файлининг номини киритинг: -Comment[vi]=Điền tên tập tin văn bản: -Comment[wa]=Dinez l' no do fitchî tecse: -Comment[zh_CN]=输入文本文件名: -Comment[zh_TW]=輸入純文字檔案名稱: Type=Link URL=.source/TextFile.txt Icon=text-plain diff --git a/kdesktop/init/Templates/ZIP-Device.desktop b/kdesktop/init/Templates/ZIP-Device.desktop index 4ec2bbefd..4067456c6 100644 --- a/kdesktop/init/Templates/ZIP-Device.desktop +++ b/kdesktop/init/Templates/ZIP-Device.desktop @@ -7,86 +7,7 @@ Icon=media-floppy-zip-mounted UnmountIcon=media-floppy-zip-unmounted Actions=Eject; X-TDE-Priority=TopLevel + [Desktop Action Eject] Name=Eject -Name[af]=Uitskiet -Name[ar]=أقذف -Name[az]=Çıxart -Name[be]=Вызваліць -Name[bg]=Изваждане -Name[bn]=ইজেক্ট -Name[br]=Stlepel -Name[bs]=Izbaci -Name[ca]=Expulsa -Name[cs]=Vysunout -Name[csb]=Wësënie -Name[cy]=Allfwrw -Name[da]=Skub ud -Name[de]=Auswerfen -Name[el]=Εξαγωγή -Name[eo]=Eligo -Name[es]=Expulsar -Name[et]=Väljastamine -Name[eu]=Egotzi -Name[fa]=پس زدن -Name[fi]=Poista -Name[fr]=Éjecter -Name[fy]=Utsmytknop -Name[ga]=Díchuir -Name[gl]=Expulsar -Name[he]=הוצא -Name[hi]=बाहर -Name[hr]=Izbaci -Name[hu]=Kidobás -Name[is]=Henda út -Name[it]=Espelli -Name[ja]=取り出し -Name[ka]=CD-ს ამოღება -Name[kk]=Алып-шығару -Name[km]=ច្រានចេញ -Name[ko]=꺼내기 -Name[lo]=ເອົາແຜ່ນອອກ -Name[lt]=Išmesti -Name[lv]=Izņemt -Name[mk]=Извади -Name[mn]=Гаргах -Name[ms]=Lenting -Name[mt]=Iftaħ -Name[nb]=Løs ut -Name[nds]=Rutsmieten -Name[ne]=निकाल्नुहोस् -Name[nl]=Uitwerpen -Name[nn]=Løys ut -Name[nso]=Ntsha -Name[oc]=Expulsa -Name[pa]=ਬਾਹਰ ਕੱਢੋ -Name[pl]=Wysuń -Name[pt]=Ejectar -Name[pt_BR]=Ejetar -Name[ro]=Ejectează -Name[ru]=Извлечь CD -Name[rw]=Gusohora -Name[se]=Bálkes olggos -Name[sk]=Vysunúť -Name[sl]=Izvrzi -Name[sr]=Избаци -Name[sr@Latn]=Izbaci -Name[ss]=Khafuna -Name[sv]=Mata ut -Name[ta]=வெளித்தள் -Name[te]=ఎజెక్ట్ -Name[tg]=Ихроҷ -Name[th]=เอาแผ่นออก -Name[tr]=Çıkart -Name[tt]=Çığar -Name[uk]=Виштовхнути -Name[uz]=Chiqarish -Name[uz@cyrillic]=Чиқариш -Name[ven]=Bvisa -Name[vi]=Đẩy đĩa ra -Name[wa]=Fé rexhe -Name[xh]=Khuphela ngaphandle -Name[zh_CN]=弹出 -Name[zh_TW]=退出 -Name[zu]=Khipha Exec=tdeeject %v diff --git a/kdesktop/init/Templates/linkCAMERA.desktop b/kdesktop/init/Templates/linkCAMERA.desktop index dc0522fd7..0f0d7a9b9 100644 --- a/kdesktop/init/Templates/linkCAMERA.desktop +++ b/kdesktop/init/Templates/linkCAMERA.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=Camera Device... -Name[af]=Kamera Toestel... -Name[ar]=جهاز الكاميرا... -Name[be]=Камера... -Name[bg]=Фотоапарат... -Name[bn]=ক্যমেরা ডিভাইস... -Name[br]=Trobarzhell ar gamera ... -Name[bs]=Kamera uređaj... -Name[ca]=Dispositiu de càmera... -Name[cs]=Kamera... -Name[csb]=Òdjimkòwô kaméra... -Name[cy]=Dyfais Camera... -Name[da]=Kamera-enhed... -Name[de]=Kamera ... -Name[el]=Συσκευή κάμερας... -Name[eo]=kamero-aparato... -Name[es]=Cámara... -Name[et]=Kaameraseade -Name[eu]=Kamera... -Name[fa]=دستگاه دوربین... -Name[fi]=Kamerat... -Name[fr]=Appareil photo -Name[fy]=Kamera... -Name[ga]=Gléas Ceamara... -Name[gl]=Dispositivo de Cámara... -Name[he]=התקן מצלמה... -Name[hi]=कैमरा उपकरण... -Name[hr]=Kamera... -Name[hu]=Fényképezőgép... -Name[is]=Myndavél... -Name[it]=Dispositivo macchina fotografica... -Name[ja]=カメラデバイス... -Name[ka]=კამერის მოწყობილობა -Name[kk]=Фотокамера құрылғысы... -Name[km]=ឧបករណ៍ម៉ាស៊ីនថត... -Name[ko]=카메라 장치... -Name[lt]=Kameros įrenginys... -Name[lv]=Kameras iekārta... -Name[mk]=Камера... -Name[mn]=Камерын Төхөөрөмж... -Name[ms]=Peranti Kamera... -Name[mt]=Kamera... -Name[nb]=Kameraenhet … -Name[nds]=Kamera... -Name[ne]=क्यामेरा यन्त्र... -Name[nl]=Camera... -Name[nn]=Kameraeining … -Name[pa]=ਕੈਮਰਾ ਜੰਤਰ... -Name[pl]=Aparat fotograficzny... -Name[pt]=Máquina Fotográfica... -Name[pt_BR]=Dispositivo de Câmera... -Name[ro]=Dispozitiv foto... -Name[ru]=Камера... -Name[rw]=Apareye Kamera... -Name[se]=Govvenapperáhttaovttadat … -Name[sk]=Zariadenie digitálneho fotoaparátu... -Name[sl]=Naprava kamere ... -Name[sr]=Камера... -Name[sr@Latn]=Kamera... -Name[sv]=Kameraenhet... -Name[ta]=புகைப்பட கருவி சாதனங்கள் -Name[te]=కెమెరా పరికరం... -Name[tg]=Дастгоҳи камера... -Name[th]=อุปกรณ์กล้อง... -Name[tr]=Kamera Aygıtı... -Name[tt]=kamera Cıhazı... -Name[uk]=Пристрій фотоапарата... -Name[uz]=Fotoaparat uskunasi... -Name[uz@cyrillic]=Фотоапарат ускунаси... -Name[vi]=Máy ảnh số... -Name[wa]=Éndjin camera... -Name[zh_CN]=相机设备... -Name[zh_TW]=照相機設備... Comment=New camera -Comment[af]=Nuwe kamera -Comment[ar]=كاميرا جديدة -Comment[be]=Новая камера -Comment[bg]=Нов фотоапарат -Comment[bn]=নতুন ক্যামেরা -Comment[br]=Kamera nevez -Comment[bs]=Nova kamera -Comment[ca]=Càmera nova -Comment[cs]=Nová kamera -Comment[csb]=Nowô òdjimkòwô kaméra -Comment[cy]=Camera Newydd -Comment[da]=Nyt kamera -Comment[de]=Neue Kamera -Comment[el]=Νέα κάμερα -Comment[eo]=Nova kamero -Comment[es]=Nueva cámara -Comment[et]=Uus kaamera -Comment[eu]=Kamera berria -Comment[fa]=دوربین جدید -Comment[fi]=Uusi kamera -Comment[fr]=Nouvel appareil photo -Comment[fy]=Nije kamera -Comment[ga]=Ceamara nua -Comment[gl]=Nova cámara -Comment[he]=מצלמה חדשה -Comment[hi]=नया कैमरा -Comment[hr]=Nova kamera -Comment[hu]=Új fényképezőgép -Comment[is]=Ný myndavél -Comment[it]=Nuova macchina fotografica -Comment[ja]=新しいカメラ -Comment[ka]=ახალი კამერა -Comment[kk]=Жаңа фотокамера -Comment[km]=ម៉ាស៊ីនថតថ្មី -Comment[ko]=새 카메라 -Comment[lt]=Nauja kamera -Comment[lv]=Jauna kamera -Comment[mk]=Нова камера -Comment[mn]=Шинэ камер -Comment[ms]=Kamera baru -Comment[mt]=Kamera ġdida -Comment[nb]=Nytt kamera -Comment[nds]=Niege Kamera -Comment[ne]=नयाँ क्यामेरा -Comment[nl]=Nieuwe camera -Comment[nn]=Nytt kamera -Comment[pa]=ਨਵਾਂ ਕੈਮਰਾ -Comment[pl]=Nowy aparat fotograficzny -Comment[pt]=Nova máquina fotográfica -Comment[pt_BR]=Nova câmera -Comment[ro]=Aparat foto nou -Comment[ru]=Ссылка на устройство цифровой камеры -Comment[rw]=Kamera nshya -Comment[se]=Ođđa govvenapperáhtta -Comment[sk]=Nový digitálny fotoaparát -Comment[sl]=Nov fotoaparat -Comment[sr]=Нова камера -Comment[sr@Latn]=Nova kamera -Comment[sv]=Ny kamera -Comment[ta]=புதிய புகைப்பட கருவி -Comment[te]=కొత్త కెమెరా -Comment[tg]=Камераи нав -Comment[th]=เพิ่มกล้องใหม่ -Comment[tr]=Yeni kamera -Comment[tt]=Yaña kamera -Comment[uk]=Новий фотоапарат -Comment[uz]=Yangi fotoaparat -Comment[uz@cyrillic]=Янги фотоапарат -Comment[vi]=Tạo máy ảnh số mới -Comment[wa]=Novele camera -Comment[zh_CN]=新建相机 -Comment[zh_TW]=新增照相機 Type=Link URL=.source/CAMERA-Device.desktop Icon=camera-unmounted diff --git a/kdesktop/init/Templates/linkCDROM.desktop b/kdesktop/init/Templates/linkCDROM.desktop index ea630d1c7..1f73d4076 100644 --- a/kdesktop/init/Templates/linkCDROM.desktop +++ b/kdesktop/init/Templates/linkCDROM.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=CD-ROM Device... -Name[af]=CD-ROM Toestel -Name[ar]=جهاز الأقراص المدمجة... -Name[be]=Прылада CD-ROM... -Name[bg]=CD-ROM... -Name[bn]=সিডি-রম ডিভাইস... -Name[br]=Trobarzhell CD-ROM ... -Name[bs]=CD-ROM uređaj... -Name[ca]=Dispositiu CD-ROM... -Name[cs]=Jednotka CD-ROM... -Name[csb]=Nëk CD-ROM... -Name[cy]=Dyfais CD-ROM... -Name[da]=Cd-rom-enhed... -Name[de]=CD-ROM-Laufwerk ... -Name[el]=Συσκευή CD-ROM... -Name[eo]=Lumdiskingo... -Name[es]=Unidad de CD-ROM... -Name[et]=CD-ROM seade... -Name[eu]=CD-ROM gailua... -Name[fa]=دستگاه CD-ROM... -Name[fi]=CD-ROM-laitteet... -Name[fr]=Lecteur de CD-ROM... -Name[fy]=kompaktskiifstasjon ... -Name[ga]=Gléas CD-ROM... -Name[gl]=Dispositivo de CD-ROM... -Name[he]=התקן תקליטור... -Name[hi]=सीडी-रोम उपकरण... -Name[hr]=CD/DVD-ROM uređaj... -Name[hu]=CD-meghajtó... -Name[is]=Geisladrif... -Name[it]=Dispositivo CD-ROM... -Name[ja]=CD-ROM デバイス... -Name[ka]=CD-ROM მოწყობილობა -Name[kk]=CD-ROM құрылғысы... -Name[km]=ឧបករណ៍ CD-ROM... -Name[ko]=CD-ROM 장치... -Name[lt]=CD-ROM įrenginys... -Name[lv]=CD-ROM Iekārta... -Name[mk]=CD-ROM Уред... -Name[mn]=КД-ROM төхөөрөмж... -Name[ms]=Peranti CD-ROM... -Name[mt]=CDROM... -Name[nb]=CD-ROM-enhet … -Name[nds]=CD-ROM-Reedschap... -Name[ne]=CD-ROM यन्त्र... -Name[nl]=CD-romspeler... -Name[nn]=CD-ROM-eining … -Name[pa]=CD-ROM ਜੰਤਰ... -Name[pl]=Urządzenie CD-ROM... -Name[pt]=Dispositivo de CD-ROM... -Name[pt_BR]=Dispositivo de CD-ROM... -Name[ro]=Dispozitiv CD-ROM... -Name[ru]=CD-ROM... -Name[rw]=Apareye CD-ROM... -Name[se]=CD-ROM-ovttadat … -Name[sk]=Zariadenie CD-ROM... -Name[sl]=Naprava CD-ROM ... -Name[sr]=CD/DVD-ROM уређај... -Name[sr@Latn]=CD/DVD-ROM uređaj... -Name[sv]=Cdrom-enhet... -Name[ta]=CD-ROM சாதனம்... -Name[te]=సీడి-రామ్ పరికరం... -Name[tg]=Дастгоҳи CD-ROM... -Name[th]=อุปกรณ์ซีดีรอม -Name[tr]=CD-ROM Aygıtı... -Name[tt]=CD-ROM Cıhazı... -Name[uk]=Пристрій CD-ROM... -Name[uz]=Kompakt-disk uskunasi... -Name[uz@cyrillic]=Компакт-диск ускунаси... -Name[vi]=Thiết bị đọc đĩa CD-ROM... -Name[wa]=Éndjin léjheu di plakes lazer... -Name[zh_CN]=CD-ROM 设备... -Name[zh_TW]=光碟機設備 Comment=New CD-ROM Device -Comment[af]=Nuwe CD-ROM Toestel -Comment[ar]=جهاز أقراص مدمجة جديد -Comment[be]=Новая прылада CD-ROM -Comment[bg]=Ново устройство CD-ROM -Comment[bn]=নতুন সিডি-রম ডিভাইস -Comment[br]=Trobarzhell CD-ROM Nevez -Comment[bs]=Novi CD/DVD-ROM uređaj -Comment[ca]=Dispositiu CD-ROM nou -Comment[cs]=Nová jednotka CD-ROM -Comment[csb]=Nowi nëk CD -Comment[cy]=Dyfais CD-ROM Newydd -Comment[da]=Ny cd-rom-enhed -Comment[de]=Neues CD-ROM-Laufwerk -Comment[el]=Νέα συσκευή CD-ROM -Comment[eo]=Nova lumdiskingo... -Comment[es]=Nueva unidad de CD-ROM -Comment[et]=Uus CD-ROM seade -Comment[eu]=CD-ROM gailu berria -Comment[fa]=دستگاه CD-ROM جدید -Comment[fi]=Uusi CD/DVD-ROM -laite -Comment[fr]=Nouveau lecteur de CD-ROM -Comment[fy]=Nije kompaktskiifstasjon -Comment[ga]=Gléas nua CD-ROM -Comment[gl]=Novo Dispositivo de CD-ROM -Comment[he]=התקן תקליטור חדש -Comment[hi]=नया सीडी-रोम उपकरण -Comment[hr]=Novi CD/DVD-ROM uređaj -Comment[hu]=Új CD-meghajtó -Comment[is]=Nýtt geisladrif -Comment[it]=Nuovo dispositivo CD-ROM -Comment[ja]=新規 CD-ROM デバイス -Comment[ka]=ახალი CD-ROM მოწყობილობა -Comment[kk]=Жаңа CD-ROM құрылғысы -Comment[km]=ឧបករណ៍ CD-ROM ថ្មី -Comment[ko]=새 CD-ROM 장치 -Comment[lt]=Naujas CD-ROM įrenginys -Comment[lv]=Jauna CD-ROM Iekārta -Comment[mk]=Нов CD-ROM уред -Comment[mn]=Шинэ КД-ROM төхөөрөмж -Comment[ms]=Peranti CD-ROM Baru -Comment[mt]=CD-ROM ġdid -Comment[nb]=Ny CD-ROM-enhet -Comment[nds]=Niege CD-ROM-Reedschap -Comment[ne]=नयाँ CD-ROM यन्त्र -Comment[nl]=Nieuwe cd-romspeler -Comment[nn]=Ny CD-ROM-eining -Comment[pa]=ਨਵਾਂ CD-ROM ਜੰਤਰ -Comment[pl]=Nowe urządzenie CD-ROM -Comment[pt]=Novo Dispositivo de CD-ROM -Comment[pt_BR]=Novo dispositivo de CD-ROM -Comment[ro]=Dispozitiv CD-ROM nou -Comment[ru]=Ссылка на устройство CD-ROM -Comment[rw]=Apareye CD-ROM Nshya -Comment[se]=Ođđa CD-ROM-ovttadat -Comment[sk]=Nové zariadenie CD-ROM -Comment[sl]=Nova naprava CD-ROM -Comment[sr]=Нови CD/DVD-ROM уређај -Comment[sr@Latn]=Novi CD/DVD-ROM uređaj -Comment[sv]=Ny cdrom-enhet -Comment[ta]=புதிய CD-ROM சாதனம் -Comment[te]=కొత్త సీడి-రామ్ పరికరం -Comment[tg]=Дастгоҳи нави CD-ROM -Comment[th]=กำหนดอุปกรณ์ซีดีใหม่ -Comment[tr]=Yeni CD-ROM Aygıtı -Comment[tt]=Yaña CD-ROM Cıhazı -Comment[uk]=Новий пристрій CD-ROM -Comment[uz]=Yangi kompakt-disk uskunasi -Comment[uz@cyrillic]=Янги компакт-диск ускунаси -Comment[vi]=Tạo CD-ROM mới -Comment[wa]=Novea éndjin léjheu di plakes lazer -Comment[zh_CN]=新建 CD-ROM 设备 -Comment[zh_TW]=新光碟機設備 Type=Link URL=.source/CDROM-Device.desktop Icon=media-optical-cdrom-unmounted diff --git a/kdesktop/init/Templates/linkCDWRITER.desktop b/kdesktop/init/Templates/linkCDWRITER.desktop index 0f0113e40..ad2057139 100644 --- a/kdesktop/init/Templates/linkCDWRITER.desktop +++ b/kdesktop/init/Templates/linkCDWRITER.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=CDWRITER Device... -Name[af]=CD Skrywer Toestel -Name[ar]=جهاز تسجيل الأقراص المدمجة... -Name[be]=Прылада CDWRITER... -Name[bg]=CDWRITER... -Name[bn]=সিডি-রাইটার ডিভাইস... -Name[br]=Trobarzhell an engraver CD ... -Name[bs]=CD pržilica... -Name[ca]=Dispositiu CDWRITER... -Name[cs]=Vypalovačka CD... -Name[csb]=Wëpôlôrz CD... -Name[cy]=Dyfais CDWRITER... -Name[da]=Cd-skriver enhed... -Name[de]=CD-Brenner ... -Name[el]=Συσκευή CDWRITER... -Name[eo]=Lumdiska skribilo... -Name[es]=Grabadora de CD... -Name[et]=CD-kirjutaja... -Name[eu]=CDWRITER gailua... -Name[fa]=دستگاه CDWRITER... -Name[fi]=CDWRITER-laite... -Name[fr]=Graveur de CD-ROM... -Name[fy]=kompaktskiifstasjon... -Name[ga]=Gléas CDWRITER... -Name[gl]=Dispositivo CDWRITER... -Name[he]=התקן צורב... -Name[hi]=सीडी-राइटर उपकरण... -Name[hr]=CD/DVD pržilica... -Name[hu]=CD-író... -Name[is]=Geisladiskaskrifari... -Name[it]=Masterizzatore... -Name[ja]=CD ライターデバイス... -Name[ka]=CDWRITER მოწყობილობა -Name[kk]=CDWRITER құрылғысы... -Name[km]=ឧបករណ៍ CDWRITER... -Name[ko]=CDWRITER 장치... -Name[lt]=CDWRITER įrenginys... -Name[lv]=CD rakstīšanas iekārta... -Name[mk]=CDWRITER Уред... -Name[mn]=КД бичигч төхөөрөмж -Name[ms]=Peranti CDWRITER... -Name[mt]=CDWRITER... -Name[nb]=CD-brenner-enhet -Name[nds]=CD-Brenner... -Name[ne]=CDWRITER यन्त्र... -Name[nl]=CD-writer... -Name[nn]=CD-brennareining … -Name[pa]=CDWRITER ਜੰਤਰ... -Name[pl]=Nagrywarka CD... -Name[pt]=Gravador de CDs... -Name[pt_BR]=Dispositivo de Gravação de CD... -Name[ro]=Dispozitiv CD-Writer... -Name[ru]=Пишущий CD-ROM... -Name[rw]=Apareye MWANDIKA-CD... -Name[se]=CDWRITER-ovttadat … -Name[sk]=Zariadenie CDWRITER... -Name[sl]=Naprava CDWRITER ... -Name[sr]=CD/DVD резач... -Name[sr@Latn]=CD/DVD rezač... -Name[sv]=Cd-brännarenhet... -Name[ta]=CDWRITER சாதனம் -Name[te]=సీడి వ్రైటర్ పరికరం... -Name[tg]=Дастгоҳи CDWRITER... -Name[th]=อุปกรณ์เขียนซีดี... -Name[tr]=CD Yazıcı Aygıtı... -Name[tt]=CD-Yazğıç Cıhazı... -Name[uk]=Пристрій CDWRITER... -Name[uz]=Kompakt-disk yozuvchi uskuna... -Name[uz@cyrillic]=Компакт-диск ёзувчи ускуна... -Name[vi]=Thiết bị ghi đĩa CD... -Name[wa]=Éndjin broûleu di plakes lazer... -Name[zh_CN]=刻录机设备... -Name[zh_TW]=光碟燒錄機設備 Comment=New CDWRITER Device -Comment[af]=Nuwe CD Skrywer Toestel -Comment[ar]=جهاز تسجيل أقراص مدمجة جديد -Comment[be]=Новая прылада CDWRITER -Comment[bg]=Ново устройство CDWRITER -Comment[bn]=নতুন সিডি-রাইটার ডিভাইস -Comment[br]=Trobarzhell CDSKRIVER nevez -Comment[bs]=Nova CD pržilica -Comment[ca]=Dispositiu CDWRITER nou -Comment[cs]=Nová vypalovačka CD -Comment[csb]=Nowi wëpôlôrz CD -Comment[cy]=Dyfais CDWRITER Newydd -Comment[da]=Ny cd-skriver enhed -Comment[de]=Neuer CD-Brenner -Comment[el]=Νέα συσκευή CDWRITER -Comment[eo]=Nova lumdisk-skribilo -Comment[es]=Nueva grabadora de CD -Comment[et]=Uus CD-kirjutaja -Comment[eu]=CDWRITER gailu berria -Comment[fa]=دستگاه CDWRITER جدید -Comment[fi]=Uusi CDWRITER-laite -Comment[fr]=Nouveau graveur de CD-ROM -Comment[fy]=Nije kompaktskiifstasjon -Comment[ga]=Gléas CDWRITER Nua -Comment[gl]=Novo Dispositivo CDWRITER -Comment[he]=התקן צורב חדש -Comment[hi]=नया सीडी-राइटर उपकरण -Comment[hr]=Nova CD/DVD pržilica -Comment[hu]=Új CD-író -Comment[is]=Nýr geisladiskaskrifari -Comment[it]=Nuovo masterizzatore -Comment[ja]=新規 CD ライターデバイス -Comment[ka]=ახალი CDWRITER მოწყობილობა -Comment[kk]=Жаңа CDWRITER құрылғысы -Comment[km]=ឧបករណ៍ CDWRITER ថ្មី -Comment[ko]=새 CDWRITER 장치 -Comment[lt]=Naujas CDWRITER įrenginys -Comment[lv]=Jauna CD rakstīšanas iekārta -Comment[mk]=Нов CDWRITER уред -Comment[mn]=Шинэ КД бичигч төхөөрөмж -Comment[ms]=Peranti CDWRITER Baru -Comment[mt]=Apparat CDWRITER ġdid -Comment[nb]=Ny CD-brenner-enhet -Comment[nds]=Niegen CD-Brenner -Comment[ne]=नयाँ CDWRITER यन्त्र -Comment[nl]=Nieuwe CD-writer -Comment[nn]=Ny CD-brennareining -Comment[pa]=ਨਵਾਂ CDWRITER ਜੰਤਰ -Comment[pl]=Nowa nagrywarka CD -Comment[pt]=Novo Gravador de CDs -Comment[pt_BR]=Novo dispositivo de Gravação de CD -Comment[ro]=Dispozitiv CD-Writer nou -Comment[ru]=Ссылка на устройство пишущего CD-ROM -Comment[rw]=Apareye MWANDIKA-CD Nshya -Comment[se]=Ođđa CDWRITER-ovttadat -Comment[sk]=Nové zariadenie CDWRITER -Comment[sl]=Nova naprava CDWRITER -Comment[sr]=Нови CD/DVD резач -Comment[sr@Latn]=Novi CD/DVD rezač -Comment[sv]=Ny cd-brännarenhet -Comment[ta]=புது CDWRITER சாதனம் -Comment[te]=కొత్త సీడి వ్రైటర్ పరికరం -Comment[tg]=Дастгоҳ нави CDWRITER -Comment[th]=กำหนดอุปกรณ์เขียนซีดีใหม่ -Comment[tr]=Yeni CD Yazıcı Aygıtı -Comment[tt]=Yaña CD-Yazğıç Cıhazı -Comment[uk]=Новий пристрій CDWRITER -Comment[uz]=Yangi kompakt-disk yozuvchi uskuna -Comment[uz@cyrillic]=Янги компакт-диск ёзувчи ускуна -Comment[vi]=Tạo thiết bị ghi CD mới -Comment[wa]=Novea éndjin broûleu di plakes lazer -Comment[zh_CN]=新建刻录机设备 -Comment[zh_TW]=新光碟燒錄機設備 Type=Link URL=.source/CDWRITER-Device.desktop -Icon=cr-rw-unmounted +Icon=cd-rw-unmounted diff --git a/kdesktop/init/Templates/linkDVDROM.desktop b/kdesktop/init/Templates/linkDVDROM.desktop index f2edc7941..1e0427731 100644 --- a/kdesktop/init/Templates/linkDVDROM.desktop +++ b/kdesktop/init/Templates/linkDVDROM.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=DVD-ROM Device... -Name[af]=DVD-ROM Toestel -Name[ar]=جهاز قارئ أقراص رقمية مرئية... -Name[be]=Прылада DVD-ROM... -Name[bg]=DVD-ROM... -Name[bn]=ডিভিডি-রম ডিভাইস... -Name[br]=Trobarzhell DVD-ROM ... -Name[bs]=DVD-ROM uređaj... -Name[ca]=Dispositiu DVD-ROM... -Name[cs]=Jednotka DVD-ROM... -Name[csb]=Nëk DVD-ROM... -Name[cy]=Dyfais DVD-ROM... -Name[da]=Dvd-rom-enhed... -Name[de]=DVD-ROM-Laufwerk ... -Name[el]=Συσκευή DVD-ROM... -Name[eo]=DVDdiskingo... -Name[es]=Unidad de DVD-ROM... -Name[et]=DVD-ROM seade... -Name[eu]=DVD-ROM gailua... -Name[fa]=دستگاه DVD-ROM... -Name[fi]=DVD-ROM-laite -Name[fr]=Lecteur de DVD-ROM... -Name[fy]=Dûbelskiifstasjon -Name[ga]=Gléas DVD-ROM... -Name[gl]=Dispositivo DVD-ROM... -Name[he]=התקן DVD... -Name[hi]=डीवीडी-रोम उपकरण... -Name[hr]=CD/DVD-ROM uređaj... -Name[hu]=DVD-meghajtó... -Name[is]=DVD-ROM-drif... -Name[it]=Dispositivo DVD-ROM... -Name[ja]=DVD-ROM デバイス... -Name[ka]=DVD-ROM მოწყობილობა -Name[kk]=DVD-ROM құрылғысы... -Name[km]=ឧបករណ៍ DVD-ROM... -Name[ko]=DVD-ROM 장치... -Name[lt]=DVD-ROM įrenginys... -Name[lv]=DVD-ROM Iekārta... -Name[mk]=DVD-ROM Уред... -Name[mn]=DVD-ROM төхөөрөмж... -Name[ms]=Peranti DVD-ROM... -Name[mt]=DVD-ROM... -Name[nb]=DVD-ROM-enhet … -Name[nds]=DVD-ROM-Reedschap... -Name[ne]=DVD-ROM यन्त्र... -Name[nl]=DVD-romspeler... -Name[nn]=DVD-ROM-eining … -Name[pa]=DVD-ROM ਜੰਤਰ... -Name[pl]=Urządzenie DVD-ROM... -Name[pt]=Leitor de DVD-ROMs... -Name[pt_BR]=Dispositivo de DVD-ROM... -Name[ro]=Dispozitiv DVD-ROM... -Name[ru]=DVD-ROM... -Name[rw]=Apareye DVD-ROM Nshya... -Name[se]=DVD-ROM-ovttadat … -Name[sk]=Zariadenie DVD-ROM... -Name[sl]=Naprava DVD-ROM ... -Name[sr]=CD/DVD-ROM уређај... -Name[sr@Latn]=CD/DVD-ROM uređaj... -Name[sv]=Dvdrom-enhet... -Name[ta]=டிவிடிராம் சாதனம் -Name[te]=డివిడి-రామ్ పరికరం... -Name[tg]=Дастгоҳи DVD-ROM... -Name[th]=อุปกรณ์ดีวีดีรอม... -Name[tr]=CD/DVD-ROM Aygıtı... -Name[tt]=DVD-ROM Cıhazı... -Name[uk]=Пристрій DVD-ROM... -Name[uz]=DVD-ROM uskunasi... -Name[uz@cyrillic]=DVD-ROM ускунаси... -Name[vi]=Thiết bị đọc đĩa DVD-ROM... -Name[wa]=Éndjin léjheu di plakes lazer DVD... -Name[zh_CN]=DVD-ROM 设备... -Name[zh_TW]=DVD-ROM 設備... Comment=New DVD-ROM Device -Comment[af]=Nuwe DVD-ROM Toestel -Comment[ar]=جهاز قارئ أقراص رقمية مرئية جديد -Comment[be]=Новая прылада DVD-ROM -Comment[bg]=Ново устройство DVD-ROM -Comment[bn]=নতুন ডিভিডি-রম ডিভাইস -Comment[br]=Trobarzhell DVD-ROM Nevez -Comment[bs]=Novi DVD-ROM uređaj -Comment[ca]=Dispositiu DVD-ROM nou -Comment[cs]=Nová jednotka DVD-ROM -Comment[csb]=Nowi nëk DVD-ROM -Comment[cy]=Dyfais DVD-ROM Newydd -Comment[da]=Ny dvd-rom enhed -Comment[de]=Neues DVD-ROM-Laufwerk -Comment[el]=Νέα συσκευή DVD-ROM -Comment[eo]=Nova DVDdiskingo... -Comment[es]=Nueva unidad de DVD-ROM -Comment[et]=Uus DVD-ROM seade -Comment[eu]=DVD-ROM gailu berria -Comment[fa]=دستگاه DVD-ROM جدید -Comment[fi]=Uusi DVD-ROM-laite -Comment[fr]=Nouveau lecteur de DVD-ROM -Comment[fy]=Nije dûbelskiifstasjon -Comment[ga]=Gléas nua DVD-ROM -Comment[gl]=Novo Dispositivo DVD-ROM -Comment[he]=התקן DVD חדש -Comment[hi]=नया डीवीडी-रोम उपकरण -Comment[hr]=Novi CD/DVD-ROM uređaj -Comment[hu]=Új DVD-meghajtó -Comment[is]=Nýtt DVD-ROM-drif -Comment[it]=Nuovo dispositivo DVD-ROM -Comment[ja]=新規 DVD-ROM デバイス -Comment[ka]=ახალი DVD-ROM მოწყობილობა -Comment[kk]=Жаңа DVD-ROM құрылғысы -Comment[km]=ឧបករណ៍ DVD-ROM ថ្មី -Comment[ko]=새 DVD-ROM 장치 -Comment[lt]=Naujas DVD-ROM įrenginys -Comment[lv]=Jauna DVD-ROM Iekārta -Comment[mk]=Нов DVD-ROM уред -Comment[mn]=Шинэ DVD-төхөөрөмж -Comment[ms]=Peranti DVD-ROM Baru -Comment[mt]=DVD-ROM ġdid -Comment[nb]=Ny DVD-ROM-enhet -Comment[nds]=Niege DVD-ROM-Reedschap -Comment[ne]=नयाँ DVD-ROM यन्त्र -Comment[nl]=Nieuwe DVD-romspeler -Comment[nn]=Ny DVD-ROM-eining -Comment[pa]=ਨਵਾਂ DVD-ROM ਜੰਤਰ -Comment[pl]=Nowe urządzenie DVD-ROM... -Comment[pt]=Novo leitor de DVD-ROMs -Comment[pt_BR]=Novo dispositivo de DVD-ROM -Comment[ro]=Dispozitiv DVD-ROM nou -Comment[ru]=Ссылка на устройство DVD-ROM -Comment[rw]=Apareye DVD-ROOM Nshya -Comment[se]=Ođđa DVD-ROM-ovttadat -Comment[sk]=Nové zariadenie DVD-ROM -Comment[sl]=Nova naprava DVD-ROM -Comment[sr]=Нови CD/DVD-ROM уређај -Comment[sr@Latn]=Novi CD/DVD-ROM uređaj -Comment[sv]=Ny dvdrom-enhet -Comment[ta]=புது DVD-ROM சாதனம் -Comment[te]=కొత్త డివిడి-రామ్ పరికరం -Comment[tg]=Дастгоҳи нави DVD-ROM -Comment[th]=กำหนดอุปกรณ์ซีดี/ดีวีดีรอมใหม่ -Comment[tr]=Yeni DVD-ROM Aygıtı -Comment[tt]=Yaña DVD-ROM Cıhazı -Comment[uk]=Новий пристрій DVD-ROM -Comment[uz]=Yangi DVD uskunasi -Comment[uz@cyrillic]=Янги DVD ускунаси -Comment[vi]=Tạo DVD-ROM mới -Comment[wa]=Novea éndjin léjheu di plakes lazer DVD -Comment[zh_CN]=新建 DVD-ROM 设备 -Comment[zh_TW]=新 DVD-ROM 設備 Type=Link URL=.source/DVDROM-Device.desktop Icon=media-optical-dvd-unmounted diff --git a/kdesktop/init/Templates/linkFloppy.desktop b/kdesktop/init/Templates/linkFloppy.desktop index 4b7b6c367..d61466a93 100644 --- a/kdesktop/init/Templates/linkFloppy.desktop +++ b/kdesktop/init/Templates/linkFloppy.desktop @@ -1,158 +1,6 @@ [Desktop Entry] Name=Floppy Device... -Name[af]=Sagteskyf Toestel... -Name[ar]=جهاز أقراص مرنة... -Name[be]=Дыскета... -Name[bg]=Флопи... -Name[bn]=ফ্লপি ডিভাইস... -Name[br]=Trobarzhell Pladennig ... -Name[bs]=Disketni uređaj... -Name[ca]=Dispositiu de disquet... -Name[cs]=Disketová jednotka... -Name[csb]=Nëk disczétków... -Name[cy]=Dyfais Disg Meddal... -Name[da]=Floppy-enhed... -Name[de]=Diskettenlaufwerk ... -Name[el]=Συσκευή δισκέτας... -Name[eo]=Disketingo... -Name[es]=Unidad de disquetes... -Name[et]=Flopiseade... -Name[eu]=Diskete gailua... -Name[fa]=دستگاه فلاپی... -Name[fi]=Levykeasema... -Name[fr]=Lecteur de disquettes... -Name[fy]=Slappe skiifstasjon... -Name[ga]=Gléas Diosca Flapach... -Name[gl]=Dispositivo de Disquete... -Name[he]=התקן תקליטון... -Name[hi]=फ़्लॉपी उपकरण... -Name[hr]=Disketni uređaj... -Name[hu]=Floppy-meghajtó... -Name[is]=Disklingadrif... -Name[it]=Dispositivo dischetti... -Name[ja]=フロッピーデバイス... -Name[ka]=დრეკადი დისკის წამყვანი -Name[kk]=Иілгіш диск... -Name[km]=ដ្រាយថាសទន់... -Name[ko]=플로피 장치... -Name[lt]=Diskelių įrenginys... -Name[lv]=Diskešu Iekārta... -Name[mk]=Дискетна единица... -Name[mn]=Уян диск... -Name[ms]=Peranti Liut... -Name[mt]=Floppy... -Name[nb]=Diskettenhet … -Name[nds]=Diskett-Reedschap... -Name[ne]=फ्लपी यन्त्र... -Name[nl]=Diskettestation... -Name[nn]=Disketteining … -Name[pa]=ਫਲਾਪੀ ਜੰਤਰ... -Name[pl]=Stacja dyskietek... -Name[pt]=Leitor de Disquetes... -Name[pt_BR]=Dispositivo de disquete... -Name[ro]=Dispozitiv Floppy... -Name[ru]=Дисковод... -Name[rw]=Apareye Disikete... -Name[se]=Dibmaskearroovttadat … -Name[sk]=Disketová mechanika... -Name[sl]=Disketna naprava ... -Name[sr]=Флопи уређај... -Name[sr@Latn]=Flopi uređaj... -Name[sv]=Diskettenhet... -Name[ta]=நெகிழ்வட்டு சாதனம்... -Name[te]=ఫ్లాపీ పరికరం... -Name[tg]=Дастгоҳи Floppy... -Name[th]=อุปกรณ์ฟลอปปี้... -Name[tr]=Disket Aygıtı... -Name[tt]=Floppy Cıhazı... -Name[uk]=Пристрій гнучкого диска... -Name[uz]=Disket uskunasi... -Name[uz@cyrillic]=Дискет ускунаси... -Name[vi]=Ổ mềm... -Name[wa]=Éndjin léjheu di plaketes... -Name[zh_CN]=软驱设备... -Name[zh_TW]=軟碟設備... Comment=New Floppy Device -Comment[af]=Nuwe Sagteskyf Toestel -Comment[ar]=جهاز أقراص مرنة جديد -Comment[az]=Yeni Disket Avadanlığı -Comment[be]=Новая дыскета -Comment[bg]=Ново флопи-дисково устройство -Comment[bn]=নতুন ফ্লপি ডিভাইস -Comment[br]=Trobarzhell Bladennig Nevez -Comment[bs]=Novi disketni uređaj -Comment[ca]=Dispositiu de disquet nou -Comment[cs]=Nová disketová jednotka -Comment[csb]=Nowi nëk disczétków -Comment[cy]=Dyfais Disg Meddal Newydd -Comment[da]=Ny floppy-enhed -Comment[de]=Neues Diskettenlaufwerk -Comment[el]=Νέα συσκευή δισκέτας -Comment[eo]=Nova disketa ingo -Comment[es]=Nueva unidad de disquetes -Comment[et]=Uus flopiseade -Comment[eu]=Diskete gailu berria -Comment[fa]=دستگاه فلاپی جدید -Comment[fi]=Uusi levykeasema -Comment[fr]=Nouveau lecteur de disquettes -Comment[fy]=Nije slappe skiifstasjon -Comment[ga]=Gléas nua diosca flapach -Comment[gl]=Nova Disqueteira -Comment[he]=התקן תקליטון חדש -Comment[hi]=नया फ़्लॉपी उपकरण -Comment[hr]=Novi disketni uređaj -Comment[hu]=Új floppy-meghajtó -Comment[id]=Divais Floppy baru -Comment[is]=Nýtt disklingadrif -Comment[it]=Nuovo dispositivo dischetti -Comment[ja]=新規フロッピーディスク -Comment[ka]=ახალი დრეკადი დისკის წამყვანი -Comment[kk]=Жаңа иілгіш диск құрылғысы -Comment[km]=ឧបករណ៍ថាសទន់ថ្មី -Comment[ko]=새 플로피 장치 -Comment[lo]=ກຳນົດອັຸປະກອນຟອບປີ້ໃຫມ่ -Comment[lt]=Naujas diskelių įrenginys -Comment[lv]=Jauna Diskešu iekārta -Comment[mk]=Нова дискетна единица -Comment[mn]=Шинэ уян диск хөтлөгч -Comment[ms]=Peranti Liut Baru -Comment[mt]=Apparat floppy ġdid -Comment[nb]=Ny diskettenhet -Comment[nds]=Niege Diskettreedschap -Comment[ne]=नयाँ फ्लपी यन्त्र -Comment[nl]=Nieuw diskettestation -Comment[nn]=Ny disketteining -Comment[nso]=Leano le Leswa la Floopy -Comment[oc]=Dispositiu de disquet nou -Comment[pa]=ਨਵਾਂ ਫਲਾਪੀ ਜੰਤਰ -Comment[pl]=Nowa stacja dyskietek -Comment[pt]=Novo leitor de disquetes -Comment[pt_BR]=Novo dispositivo de disquete -Comment[ro]=Dispozitiv Floppy nou -Comment[ru]=Ссылка на устройство дисковода -Comment[rw]=Apareye Disikete Nshya -Comment[se]=Ođđa dibmaskearroovttadat -Comment[sk]=Nová disketová mechanika -Comment[sl]=Nova disketna naprava -Comment[sr]=Нови флопи уређај -Comment[sr@Latn]=Novi flopi uređaj -Comment[sv]=Ny diskettenhet -Comment[ta]=புது நெகிழ்வட்டு சாதனம் -Comment[te]=కొత్త ఫ్లాపీ పరికరం -Comment[tg]=Дастгоҳи нави Floppy -Comment[th]=กำหนดอุปกรณ์ฟล็อปปีใหม่ -Comment[tr]=Yeni Disket Aygıtı -Comment[tt]=Yaña Floppy Cıhazı -Comment[uk]=Новий пристрій гнучкого диска -Comment[uz]=Yangi disket uskunasi -Comment[uz@cyrillic]=Янги дискет ускунаси -Comment[ven]=Maano maswa a Floppy -Comment[vi]=Tạo ổ mềm mới -Comment[wa]=Novea éndjin léjheu di plaketes... -Comment[xh]=Icebo Elitsha le Floppy -Comment[zh_CN]=新建软驱设备 -Comment[zh_TW]=新軟碟設備 -Comment[zu]=Ithuluzi le-Floppy elisha Type=Link URL=.source/Floppy.desktop Icon=media-floppy-3_5-unmounted diff --git a/kdesktop/init/Templates/linkHD.desktop b/kdesktop/init/Templates/linkHD.desktop index 6c58dc395..15c94ac4a 100644 --- a/kdesktop/init/Templates/linkHD.desktop +++ b/kdesktop/init/Templates/linkHD.desktop @@ -1,157 +1,6 @@ [Desktop Entry] Name=Hard Disc Device... -Name[af]=Hardeskyf Toestel... -Name[ar]=جهاز القرص الصلب... -Name[be]=Раздзел жорсткага дыска... -Name[bg]=Твърд диск... -Name[bn]=হার্ড ডিস্ক ডিভাইস... -Name[br]=Trobarzhell Bladenn ... -Name[bs]=Hard disk uređaj... -Name[ca]=Dispositius de disc dur... -Name[cs]=Pevný disk... -Name[csb]=Cwiardi disk... -Name[cy]=Dyfais Disg Caled... -Name[da]=Harddisk-enhed... -Name[de]=Festplatte ... -Name[el]=Συσκευή σκληρού δίσκου... -Name[eo]=Fiksdiskingo... -Name[es]=Disco duro... -Name[et]=Kõvaketas... -Name[eu]=Diska gogorra... -Name[fa]=دستگاه دیسک سخت... -Name[fi]=Kiintolevy... -Name[fr]=Disque dur... -Name[fy]=Fêste skiif... -Name[ga]=Gléas Diosca Crua... -Name[gl]=Dispositivo de Disco Duro... -Name[he]=התקן כונן קשיח... -Name[hi]=हार्ड डिस्क उपकरण... -Name[hr]=Tvrdi disk... -Name[hu]=Merevlemez-partíció... -Name[is]=Harður diskur... -Name[it]=Disco rigido... -Name[ja]=ハードディスクデバイス... -Name[ka]=ხისტი დისკი... -Name[kk]=Қатқыл диск... -Name[km]=ឧបករណ៍ថាសរឹង... -Name[ko]=하드 디스크 장치... -Name[lt]=Kietojo disko įrenginys... -Name[lv]=Cietais Disks... -Name[mk]=Тврд диск... -Name[mn]=Хатуу диск... -Name[ms]=Peranti Cakera Keras... -Name[mt]=Ħard disk... -Name[nb]=Harddisk … -Name[nds]=Fastplaat... -Name[ne]=हार्डडिस्क यन्त्र... -Name[nl]=Harde Schijf... -Name[nn]=Harddisk … -Name[pa]=ਹਾਰਡ-ਡਿਸਕ ਜੰਤਰ... -Name[pl]=Twardy dysk... -Name[pt]=Disco Rígido... -Name[pt_BR]=Disco rígido... -Name[ro]=Dispozitiv Hard Disc... -Name[ru]=Жёсткий диск... -Name[rw]=Ububiko Disiki... -Name[se]=Garraskearru-ovttadat … -Name[sk]=Pevný disk... -Name[sl]=Naprava trdega diska ... -Name[sr]=Хард диск... -Name[sr@Latn]=Hard disk... -Name[sv]=Hårddisk... -Name[ta]=வட்டு -Name[te]=హార్డ్ డిస్క్ పరికరం... -Name[tg]=Дастгоҳи Диски Сахти... -Name[th]=อุปกรณ์ฮาร์ดดิสก์... -Name[tr]=Sabit Disk Aygıtı... -Name[tt]=Eçke Disk Cıhazı... -Name[uk]=Пристрій жорсткого диска... -Name[uz]=Qattiq disk uskunasi... -Name[uz@cyrillic]=Қаттиқ диск ускунаси... -Name[vi]=Ổ cứng... -Name[wa]=Éndjin di deure plake... -Name[zh_CN]=硬盘设备... -Name[zh_TW]=硬碟設備... Comment=New Hard Disc -Comment[af]=Nuwe Hardeskyf -Comment[ar]=قرص صلب جديد -Comment[az]=Yeni Sabit Disk -Comment[be]=Новы раздзел жорсткага дыска -Comment[bg]=Нов твърд диск -Comment[bn]=নতুন হার্ড ডিস্ক -Comment[br]=Trobarzhell Bladenn Nevez -Comment[bs]=Novi hard disk -Comment[ca]=Disc dur nou -Comment[cs]=Nový pevný disk -Comment[csb]=Nowi cwiardi disk -Comment[cy]=Disg Caled Newydd -Comment[da]=Ny harddisk -Comment[de]=Neue Festplatte -Comment[el]=Νέος σκληρός δίσκος -Comment[en_GB]=New Hard Disk -Comment[eo]=Nova fiksdisko -Comment[es]=Nuevo disco duro -Comment[et]=Uus kõvaketas -Comment[eu]=Disko gogor berria -Comment[fa]=دیسک سخت جدید -Comment[fi]=Uusi kiintolevy -Comment[fr]=Nouveau disque dur -Comment[fy]=Nije Fêste skiif -Comment[ga]=Diosca crua nua -Comment[gl]=Novo Disco Duro -Comment[he]=כונן קשיח חדש -Comment[hi]=नया हार्ड डिस्क -Comment[hr]=Novi tvrdi disk -Comment[hu]=Új merevlemez-partíció -Comment[is]=Nýr harður diskur -Comment[it]=Nuovo disco rigido -Comment[ja]=新規ハードディスク -Comment[ka]=ახალი ხისტი დისკი -Comment[kk]=Жаңа қатқыл дискі -Comment[km]=ថាសរឹងថ្មី -Comment[ko]=새 하드 디스크 -Comment[lo]=ກຳນົດອຸປະກອນຮາດດີສໃຫ່ມ -Comment[lt]=Naujas kietas diskas -Comment[lv]=Jauns Cietais Disks -Comment[mk]=Нов тврд диск -Comment[mn]=Шинэ хатуу диск -Comment[ms]=Cakera Keras Baru -Comment[mt]=Ħard disk ġdid -Comment[nb]=Ny harddisk -Comment[nds]=Niege Fastplaat -Comment[ne]=नयाँ हार्डडिस्क -Comment[nl]=Nieuwe harde schijf -Comment[nn]=Ny harddisk -Comment[nso]=Hard Disc ye Ntshwa -Comment[pa]=ਨਵੀਂ ਹਾਰਡ-ਡਿਸਕ -Comment[pl]=Nowy twardy dysk -Comment[pt]=Novo Disco Rígido -Comment[pt_BR]=Novo disco rígido -Comment[ro]=Hard Disc nou -Comment[ru]=Ссылка на устройство жёсткого диска -Comment[rw]=Ububiko Disiki Bushya -Comment[se]=Ođđa garraskearru -Comment[sk]=Nový pevný disk -Comment[sl]=Nov trdi disk -Comment[sr]=Нови хард диск -Comment[sr@Latn]=Novi hard disk -Comment[sv]=Ny hårddisk -Comment[ta]=புது வன் தகடு -Comment[te]=కొత్త హార్డ్ డిస్క్ -Comment[tg]=Диски Сахти нав -Comment[th]=กำหนดอุปกรณ์ฮาร์ดดิสก์ใหม่ -Comment[tr]=Yeni Sabit Disk -Comment[tt]=Yaña Qatı Disk -Comment[uk]=Новий жорсткий диск -Comment[uz]=Yangi qattiq disk uskunasi -Comment[uz@cyrillic]=Янги қаттиқ диск ускунаси -Comment[ven]=Disiki ntswa yo khwathaho -Comment[vi]=Tạo ổ cứng mới -Comment[wa]=Novea éndjin di deure plake -Comment[xh]=Hard Disc Entsha -Comment[zh_CN]=新建硬盘 -Comment[zh_TW]=新硬碟設備 -Comment[zu]=I-diski Elukhuni Entsha Type=Link URL=.source/HD.desktop Icon=drive-harddisk-unmounted diff --git a/kdesktop/init/Templates/linkMO.desktop b/kdesktop/init/Templates/linkMO.desktop index 35fd2bf72..1a486e632 100644 --- a/kdesktop/init/Templates/linkMO.desktop +++ b/kdesktop/init/Templates/linkMO.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=MO Device... -Name[af]=MO Toestel... -Name[ar]=جهاز MO... -Name[be]=Прылада MO... -Name[bg]=MO... -Name[bn]=MO ডিভাইস... -Name[br]=Trobarzhell MO ... -Name[bs]=MO uređaj... -Name[ca]=Dispositiu MO... -Name[cs]=MO zařízení... -Name[csb]=Nëk MO... -Name[cy]=Dyfais MO... -Name[da]=MO-enhed... -Name[de]=MO-Laufwerk ... -Name[el]=Συσκευή MO... -Name[eo]=Magnetdiskingo... -Name[es]=Dispositivo de MO... -Name[et]=MO seade... -Name[eu]=MO gailua... -Name[fa]=دستگاه MO... -Name[fi]=MO-laite... -Name[fr]=Périphérique MO... -Name[fy]=Magnetyske skiif stasjon... -Name[ga]=Gléas MO... -Name[gl]=Dispositivo MO... -Name[he]=התקן MO... -Name[hi]=एमओ उपकरण... -Name[hr]=MO uređaj... -Name[hu]=Magnetooptikai eszköz... -Name[is]=MO tæki... -Name[it]=Dispositivo MO... -Name[ja]=MO デバイス... -Name[ka]=MO მოწყობილობა -Name[kk]=Магнитооптик құрылғысы... -Name[km]=ឧបករណ៍ MO... -Name[ko]=MO 장치... -Name[lt]=MO įrenginys... -Name[lv]=MO Iekārta... -Name[mk]=MO Уред... -Name[mn]=MO Төхөөрөмж... -Name[ms]=Peranti MO... -Name[mt]=Apparat MO... -Name[nb]=MO-enhet … -Name[nds]=MO-Reedschap... -Name[ne]=MO यन्त्र... -Name[nl]=MO-apparaat... -Name[nn]=MO-eining … -Name[pa]=MO ਜੰਤਰ... -Name[pl]=Napęd magnetooptyczny... -Name[pt]=Dispositivo MO... -Name[pt_BR]=Dispositivo MO... -Name[ro]=Dispozitiv MO... -Name[ru]=Магнитооптическое устройство... -Name[rw]=Apareye MO... -Name[se]=MO-ovttadat … -Name[sk]=Disk MO... -Name[sl]=MO naprava ... -Name[sr]=МО уређај... -Name[sr@Latn]=MO uređaj... -Name[sv]=Magneto-optisk enhet... -Name[ta]=MO சாதனம்... -Name[te]=ఎంఓ పరికరం... -Name[tg]=Дастгоҳи MO... -Name[th]=อุปกรณ์ MO -Name[tr]=MO Aygıtı... -Name[tt]=MO Cıhazı... -Name[uk]=Пристрій MO... -Name[uz]=MO uskunasi -Name[uz@cyrillic]=MO ускунаси -Name[vi]=Thiết bị MO... -Name[wa]=Éndjin MO... -Name[zh_CN]=MO 设备... -Name[zh_TW]=MO 設備... Comment=New MO Device -Comment[af]=Nuwe MO Toestel -Comment[ar]=جهاز MO جديد -Comment[be]=Новая прылада MO -Comment[bg]=Ново устройство MO -Comment[bn]=নতুন MO ডিভাইস -Comment[br]=Trobarzhell MO nevez -Comment[bs]=Novi MO uređaj -Comment[ca]=Dispositiu MO nou -Comment[cs]=Nová MO mechanika -Comment[csb]=Nowi nëk MO -Comment[cy]=Dyfais MO Newydd -Comment[da]=Ny MO-enhed -Comment[de]=Neues MO-Laufwerk -Comment[el]=Νέα συσκευή MO -Comment[eo]=Nova magnetdiskingo -Comment[es]=Nuevo dispositivo de MO -Comment[et]=Uus MO seade -Comment[eu]=MO gailu berria -Comment[fa]=دستگاه MO جدید -Comment[fi]=Uusi MO-laite -Comment[fr]=Nouveau périphérique MO -Comment[fy]=Nije magnetyske skiif stasjon -Comment[ga]=Gléas MO Nua -Comment[gl]=Novo Dispositivo MO -Comment[he]=התקן MO חדש -Comment[hi]=नया एमओ उपकरण -Comment[hr]=Novi MO uređaj -Comment[hu]=Új magnetooptikai eszköz -Comment[is]=Nýtt MO tæki -Comment[it]=Nuovo dispositivo MO -Comment[ja]=新規 MO デバイス -Comment[ka]=ახალი MO მოწყობილობა -Comment[kk]=Жаңа магнитооптик құрылғысы -Comment[km]=ឧបករណ៍ MO ថ្មី -Comment[ko]=새 MO 장치 -Comment[lt]=Naujas MO įrenginys -Comment[lv]=Jauna MO iekārta -Comment[mk]=Нов MO уред -Comment[mn]=Шинэ MO төхөөрөмж -Comment[ms]=Peranti MO Baru -Comment[mt]=Apparat MO ġdid -Comment[nb]=Ny MO-enhet -Comment[nds]=Niege MO-Reedschap -Comment[ne]=नयाँ MO यन्त्र -Comment[nl]=Nieuw MO-aparaat -Comment[nn]=Ny MO-eining -Comment[pa]=ਨਵਾਂ MO ਜੰਤਰ -Comment[pl]=Nowy napęd magnetooptyczny -Comment[pt]=Novo Dispositivo MO -Comment[pt_BR]=Novo dispositivo MO -Comment[ro]=Dispozitiv MO nou -Comment[ru]=Ссылка на магнитооптическое устройство -Comment[rw]= Apareye MO Nshya -Comment[se]=Ođđa MO-ovttadat -Comment[sk]=Nové zariadenie MO -Comment[sl]=Nova MO naprava -Comment[sr]=Нови МО уређај -Comment[sr@Latn]=Novi MO uređaj -Comment[sv]=Ny magneto-optisk enhet -Comment[ta]=புது MO சாதனம் -Comment[te]=కొత్త ఎంఓ పరికరం -Comment[tg]=Дастгоҳи нави MO -Comment[th]=กำหนดอุปกรณ์ MO ใหม่ -Comment[tr]=Yeni MO Aygıtı -Comment[tt]=Yaña MO Cıhazı -Comment[uk]=Новий пристрій MO -Comment[uz]=Yangi MO uskunasi -Comment[uz@cyrillic]=Янги MO ускунаси -Comment[vi]=Tạo MO mới -Comment[wa]=Novea éndjin MO -Comment[zh_CN]=新建 MO 设备 -Comment[zh_TW]=新 MO 設備 Type=Link URL=.source/MO-Device.desktop Icon=mo-unmounted diff --git a/kdesktop/init/Templates/linkNFS.desktop b/kdesktop/init/Templates/linkNFS.desktop index fee766937..bfa98b4d6 100644 --- a/kdesktop/init/Templates/linkNFS.desktop +++ b/kdesktop/init/Templates/linkNFS.desktop @@ -1,91 +1,6 @@ [Desktop Entry] Name=NFS... -Name[ar]=نظام ملفات الشبكة (NFS)... -Name[bn]=এন-এফ-এস (NFS)... -Name[br]=NFS ... -Name[de]=NFS ... -Name[hi]=एनएफ़एस... -Name[hu]=NFS-megosztás... -Name[nb]=NFS … -Name[nn]=NFS … -Name[ru]=Диск NFS... -Name[se]=NFS … -Name[sl]=NFS ... -Name[te]=ఎన్ ఎఫ్ ఎస్... -Name[th]=การเชื่อมโยง NFS... Comment=New NFS Link -Comment[af]=Nuwe NFS Skakel -Comment[ar]=رابط NFS جديد -Comment[be]=Новая спасылка на NFS -Comment[bg]=Нова връзка NFS -Comment[bn]=নতুন এন-এফ-এস লিঙ্ক -Comment[br]=Liamm NFS Nevez -Comment[bs]=Novi NFS link -Comment[ca]=Enllaç NFS nou -Comment[cs]=Nový NFS odkaz -Comment[csb]=Nowi lënk do NFS -Comment[cy]=Cyswllt NFS Newydd -Comment[da]=Nyt NFS-link -Comment[de]=Neue NFS-Verknüpfung -Comment[el]=Νέος δεσμός NFS -Comment[eo]=Nova NFS-ligo -Comment[es]=Nuevo enlace NFS -Comment[et]=Uus NFS viit -Comment[eu]=NFS esteka berria -Comment[fa]=پیوند NFS جدید -Comment[fi]=Uusi NFS-linkki -Comment[fr]=Nouveau lien NFS -Comment[fy]=Nije NFS-Keppeling -Comment[ga]=Nasc nua NFS -Comment[gl]=Nova Ligazón NFS -Comment[he]=קישור NFS חדש -Comment[hi]=नया एनएफ़एस लिंक -Comment[hr]=Nova NFS veza -Comment[hu]=Új NFS-link -Comment[is]=Ný NFS tenging -Comment[it]=Nuovo collegamento NFS -Comment[ja]=新規 NFS リンク -Comment[ka]=ახალი NFS ბმული -Comment[kk]=Жаңа NFS сілтемесі -Comment[km]=តំណ NFS ថ្មី -Comment[ko]=새 NFS 연결 -Comment[lt]=Nauja NFS nuoroda -Comment[lv]=Jauna NFS saite -Comment[mk]=Нова NFS врска -Comment[mn]=Шинэ NFS холбоос -Comment[ms]=Pautan NFS Baru -Comment[mt]=Link ġdid għal NFS -Comment[nb]=Ny NFS-lenke -Comment[nds]=Niegen NFS-Link -Comment[ne]=नयाँ NFS लिङ्क -Comment[nl]=Nieuwe NFS-koppeling -Comment[nn]=Ny NFS-lenkje -Comment[pa]=ਨਵਾਂ NFS ਸੰਬੰਧ -Comment[pl]=Nowy skrót do NFS... -Comment[pt]=Nova ligação NFS -Comment[pt_BR]=Novo Link NFS -Comment[ro]=Legătură NFS nouă -Comment[ru]=Ссылка на диск NFS -Comment[rw]= Ihuza NFS Rishya -Comment[se]=Ođđa NFS-liŋka -Comment[sk]=Nový odkaz NFS -Comment[sl]=Nova povezava NFS -Comment[sr]=Нова NFS веза -Comment[sr@Latn]=Nova NFS veza -Comment[sv]=Ny NFS-länk -Comment[ta]=புது NFS இணைப்பு -Comment[te]=కొత్త ఎన్ ఎఫ్ ఎస్ లింక్ -Comment[tg]=NFS-и пайванди нав -Comment[th]=สร้างการเชื่อมโยง NFS ใหม่ -Comment[tr]=Yeni NFS Bağlantısı -Comment[tt]=NFS öçen Yaña Bäy -Comment[uk]=Нове посилання NFS -Comment[uz]=NFS bilan yangi bogʻ -Comment[uz@cyrillic]=NFS билан янги боғ -Comment[vi]=Tạo liên kết NFS mới -Comment[wa]=Novea loyén NFS -Comment[zh_CN]=新建 NFS 链接 -Comment[zh_TW]=新 NFS 鏈結 Type=Link URL=.source/NFS.desktop Icon=nfs-unmounted diff --git a/kdesktop/init/Templates/linkProgram.desktop b/kdesktop/init/Templates/linkProgram.desktop index 9f31f45d2..6398875d8 100644 --- a/kdesktop/init/Templates/linkProgram.desktop +++ b/kdesktop/init/Templates/linkProgram.desktop @@ -1,153 +1,6 @@ [Desktop Entry] Name=Link to Application... -Name[af]=Skakel na Program... -Name[ar]=رابط لتطبيق... -Name[be]=Спасылка на праграму... -Name[bg]=Връзка към програма... -Name[bn]=অ্যাপলিকেশন-এ লিঙ্ক... -Name[br]=Liamm ouzh un arload ... -Name[bs]=Veza do programa... -Name[ca]=Enllaç a aplicació... -Name[cs]=Odkaz na aplikaci... -Name[csb]=Lënk do programë... -Name[cy]=Cyswllt i Gymhwysiad... -Name[da]=Link til program... -Name[de]=Verknüpfung zu Programm ... -Name[el]=Δεσμός με εφαρμογή... -Name[eo]=Ligo al aplikaĵo... -Name[es]=Enlace a aplicación... -Name[et]=Viit rakendusele... -Name[eu]=Esteka aplikazioari... -Name[fa]=پیوند به کاربرد... -Name[fi]=Linkki sovellukseen... -Name[fr]=Lien vers une application... -Name[fy]=Keppeling nei tappasing... -Name[ga]=Nasc go Feidhmchlár... -Name[gl]=Ligazón a unha Aplicación... -Name[he]=קישור ליישום... -Name[hi]=अनुप्रयोग को लिंक... -Name[hr]=Veza s aplikacijom... -Name[hu]=Alkalmazásra mutató link... -Name[is]=Tengja við forrit... -Name[it]=Collegamento ad un'applicazione... -Name[ja]=アプリケーションへのリンク... -Name[ka]=პროგრამის ბმული... -Name[kk]=Қолданбаға сілтеме... -Name[km]=តំណទៅកម្មវិធី... -Name[ko]=프로그램으로 향한 연결... -Name[lt]=Programos nuoroda... -Name[lv]=Saite uz Aplikāciju... -Name[mk]=Врска до апликација... -Name[mn]=Програмтай холбох... -Name[ms]=Paut ke Aplikasi... -Name[mt]=Link għal programm... -Name[nb]=Lenke til program … -Name[nds]=Link na'n Programm... -Name[ne]=अनुप्रयोगमा लिङ्क गर्नुहोस्... -Name[nl]=Koppeling naar toepassing... -Name[nn]=Lenkje til program … -Name[pa]=ਕਾਰਜ ਨਾਲ ਸੰਬੰਧ... -Name[pl]=Skrót do programu... -Name[pt]=Atalho para Aplicação... -Name[pt_BR]=Link para Aplicativo... -Name[ro]=Legătură către aplicație... -Name[ru]=Ссылка на приложение... -Name[rw]=Ihuza kuri Porogaramu... -Name[se]=Liŋka prográmmii … -Name[sk]=Odkaz na aplikáciu... -Name[sl]=Povezava do programa ... -Name[sr]=Веза ка програму... -Name[sr@Latn]=Veza ka programu... -Name[sv]=Länk till program... -Name[ta]=விண்ணப்பத்துக்கு இணை... -Name[tg]=Пайванд ба барномаи... -Name[th]=เชื่อมโยงไปยังแอพพลิเคชัน... -Name[tr]=Uygulamaya Bağlantı... -Name[tt]=Yazılımğa Bäy... -Name[uk]=Посилання на програму... -Name[uz]=Dastur bilan bogʻ... -Name[uz@cyrillic]=Дастур билан боғ... -Name[vi]=Liên kết tới một Chương trình... -Name[wa]=Loyén viè on programe... -Name[zh_CN]=应用程序链接... -Name[zh_TW]=應用程式連結... Comment=New Link to Application -Comment[af]=Nuwe Skakel na Aansoek -Comment[ar]=إرتباط جديد بتطبيق -Comment[be]=Новая спасылка на праграму -Comment[bg]=Нова връзка към програма -Comment[bn]=অ্যাপলিকেশন-এ নতুন লিঙ্ক -Comment[br]=Liamm nevez ouzh un arload ... -Comment[bs]=Nova veza do programa -Comment[ca]=Nou enllaç a l'aplicació -Comment[cs]=Nový odkaz na aplikaci -Comment[csb]=Nowi lënk do programë -Comment[cy]=Cyswllt Newydd i Gymhwysiad -Comment[da]=Nyt link til program -Comment[de]=Neue Verknüpfung mit Programm -Comment[el]=Νέος δεσμός με εφαρμογή -Comment[eo]=Nova ligo al aplikaĵo -Comment[es]=Nuevo enlace a aplicación -Comment[et]=Uus viit rakendusele -Comment[eu]=Aplikazioarekiko esteka berria -Comment[fa]=پیوند جدید به کاربرد -Comment[fi]=Uusi linkki sovellukseen -Comment[fr]=Nouveau lien vers une application -Comment[fy]=Nije keppeling naar toepassing -Comment[ga]=Nasc nua go feidhmchlár -Comment[gl]=Nova Ligazón a unha Aplicación -Comment[he]=קישור חדש ליישום -Comment[hi]=अनुप्रयोग को नई लिंक -Comment[hr]=Nova veza s aplikacijom -Comment[hu]=Alkalmazásra mutató új link -Comment[is]=Nýtt tengi við forrit -Comment[it]=Nuovo collegamento ad un'applicazione -Comment[ja]=新規アプリケーションリンク -Comment[ka]=პროგრამის ახალი ბმული -Comment[kk]=Қолданбаға жаңа сілтеме -Comment[km]=តំណថ្មីទៅកម្មវិធី -Comment[ko]=프로그램으로 향한 새 연결 -Comment[lo]=ສ້າງລິ້ງໄປຍັງແອບພີເຄຊັ້ນໃຫມ່ -Comment[lt]=Nauja programos nuoroda -Comment[lv]=Jauna Saite uz Aplikāciju -Comment[mk]=Нова врска до апликација -Comment[mn]=програмтай шинээр холбох -Comment[ms]=Pautan Baru ke Aplikasi -Comment[mt]=Link ġdid ġħal programm -Comment[nb]=Ny lenke til program -Comment[nds]=Niegen Link na'n Programm -Comment[ne]=अनुप्रयोगमा नयाँ लिङ्क गर्नुहोस् -Comment[nl]=Nieuwe koppeling naar toepassing -Comment[nn]=Ny lenkje til program -Comment[nso]=Kgokaganyo ye Ntshwa go Tshomiso -Comment[pa]=ਕਾਰਜ ਨਾਲ ਨਵਾਂ ਸੰਬੰਧ -Comment[pl]=Nowy skrót do programu -Comment[pt]=Novo Atalho para Aplicação -Comment[pt_BR]=Novo link para Aplicativo -Comment[ro]=Legătură nouă către aplicație -Comment[ru]=Новая ссылка на приложение -Comment[rw]=Ihuza Rishya kuri Porogaramu -Comment[se]=Ođđa liŋka prográmmii -Comment[sk]=Nový odkaz na aplikáciu -Comment[sl]=Nova povezava do programa -Comment[sr]=Нова веза ка програму -Comment[sr@Latn]=Nova veza ka programu -Comment[sv]=Ny länk till program -Comment[ta]=பயன்பாட்டுக்கான புதிய இணைப்பு -Comment[tg]=Пайванди нав ба барнома -Comment[th]=สร้างการเชื่อมโยงใหม่ไปยังแอพพลิเคชัน -Comment[tr]=Uygulamaya Yeni Bağlantı -Comment[tt]=Yazılım öçen Yaña Bäy -Comment[uk]=Нове посилання на програму -Comment[uz]=Dastur bilan yangi bogʻ -Comment[uz@cyrillic]=Дастур билан янги боғ -Comment[ven]=Thumanyo ntswa kha apulifikhesheni -Comment[vi]=Tạo liên kết mới tới một chương trình -Comment[wa]=Novea loyén viè on programe -Comment[xh]=Ikhonkco Elitsha Lwesicelo -Comment[zh_CN]=新建应用程序链接 -Comment[zh_TW]=新建應用程式連結 -Comment[zu]=Isixhumanisi esisha esiya kumyaleli Icon=application-x-executable Type=Link URL=.source/Program.desktop diff --git a/kdesktop/init/Templates/linkURL.desktop b/kdesktop/init/Templates/linkURL.desktop index 1af2d73bb..70210442f 100644 --- a/kdesktop/init/Templates/linkURL.desktop +++ b/kdesktop/init/Templates/linkURL.desktop @@ -1,153 +1,6 @@ [Desktop Entry] Name=Link to Location (URL)... -Name[af]=Skakel na Ligging (URL)... -Name[ar]=رابط لموقع... -Name[be]=Спасылка на месцазнаходжанне (URL)... -Name[bg]=Връзка към адрес... -Name[bn]=ইউ-আর-এল অবস্থানে লিঙ্ক... -Name[br]=Liamm ouzh ul lec'hiadur (URL) ... -Name[bs]=Veza do lokacije (URL)... -Name[ca]=Enllaç al localitzador (URL)... -Name[cs]=Odkaz na umístění (URL)... -Name[csb]=Lënk do adresë (URL)... -Name[cy]=Cyswllt i Leoliad (URL)... -Name[da]=Internetlink (URL)... -Name[de]=Verknüpfung zu Adresse (URL) ... -Name[el]=Δεσμός με τοποθεσία (URL)... -Name[eo]=Ligo al situo (URL)... -Name[es]=Enlace a dirección (URL)... -Name[et]=Viit asukohale (URL)... -Name[eu]=Esteka kokapenari (URL)... -Name[fa]=پیوند به محل )نشانی وب(... -Name[fi]=Linkki sijaintiin (URL)... -Name[fr]=Lien vers une URL... -Name[fy]=Keppeling nei lokaasje (URL-adres)... -Name[ga]=Nasc le Suíomh (URL)... -Name[gl]=Ligazón a un Sítio (URL)... -Name[he]=קישור למיקום (URL)... -Name[hi]=स्थान (यूआरएल) को लिंक... -Name[hr]=Veza s lokacijom (URL)... -Name[hu]=Internet-cím (URL)... -Name[is]=Staðsetningartengill... -Name[it]=Collegamento ad un indirizzo (URL)... -Name[ja]=場所へのリンク (URL) -Name[ka]=ადგილმდებარეობის ბმული (URL)... -Name[kk]=URL-адреске сілтеме... -Name[km]=តំណទៅទីតាំង (URL)... -Name[ko]=위치로 향한 연결 (URL)... -Name[lt]=Adreso nuoroda (URL)... -Name[lv]=Saite uz Vietu (URL)... -Name[mk]=Врска до локација (URL)... -Name[mn]=Хаягтай (URL) холбох... -Name[ms]=Paut ke Aplikasi (URL)... -Name[mt]=Link għal lokazzjoni (URL)... -Name[nb]=Lenke til nettadresse (URL) … -Name[nds]=Link na'n Oort (URL)... -Name[ne]=स्थानमा लिङ्क गर्नुहोस् (यूआरएल)... -Name[nl]=Koppeling naar locatie (URL-adres)... -Name[nn]=Lenkje til nettadresse (URL) … -Name[pa]=ਸਥਿਤੀ (URL) ਨਾਲ ਸੰਬੰਧ... -Name[pl]=Skrót do adresu (URL)... -Name[pt]=Atalho para Localização (URL)... -Name[pt_BR]=Link para Localização (URL)... -Name[ro]=Legătură către locație (URL)... -Name[ru]=Адрес Интернета... -Name[rw]=Ihuza ku ndangahantu (URL)... -Name[se]=Liŋka fierpmádatčujuhussii (URL) … -Name[sk]=Odkaz na umiestnenie (URL)... -Name[sl]=Povezava do lokacije (URL) ... -Name[sr]=Веза ка локацији (URL)... -Name[sr@Latn]=Veza ka lokaciji (URL)... -Name[sv]=Länk till plats (URL)... -Name[ta]=இடத்திற்கு இணை (URL)... -Name[tg]=Пайванд ба макони (URL)... -Name[th]=เชื่อมโยงไปยังตำแหน่ง (URL)... -Name[tr]=Konuma (URL) Bağlantı... -Name[tt]=Urınlaşu öçen Bäy (URL)... -Name[uk]=Посилання до адреси (URL)... -Name[uz]=Mavzu bilan bogʻ (URL)... -Name[uz@cyrillic]=Мавзу билан боғ (URL)... -Name[vi]=Liên kết tới trang mạng (URL)... -Name[wa]=Loyén viè ene plaece (URL)... -Name[zh_CN]=到位置(URL)的链接... -Name[zh_TW]=到位置的連結(URL) Comment=Enter link to location (URL): -Comment[af]=Invoer skakel na ligging (Url): -Comment[ar]=أدخل رابط لموقع: -Comment[be]=Вызначце спасылку на месцазнаходжанне (URL): -Comment[bg]=Въведете връзката към адреса: -Comment[bn]=লিঙ্কের অবস্থান: -Comment[br]=Roit al liamm ouzh ul lec'hiadur (URL) : -Comment[bs]=Unesite vezu do lokacije (URL): -Comment[ca]=Entreu un enllaç al localitzador (URL): -Comment[cs]=Zadejte odkaz na umístění (URL): -Comment[csb]=Nowi lënk do internetowi adresë (URL): -Comment[cy]=Mewnosodwch cyswllt i leoliad (URL): -Comment[da]=Indtast internetlink (URL): -Comment[de]=Verknüpfung mit Adresse (URL) eingeben: -Comment[el]=Δώστε δεσμό στην τοποθεσία (URL): -Comment[eo]=Enigu ligon al situo (URL): -Comment[es]=Introduzca el enlace a la dirección (URL): -Comment[et]=Sisesta viit asukohale (URL): -Comment[eu]=Sartu kokapenarekiko (URL) esteka: -Comment[fa]=پیوند به محل )نشانی وب( را وارد کنید: -Comment[fi]=Anna linkki sijaintiin (URL): -Comment[fr]=Nouveau lien vers une URL : -Comment[fy]=Keppeling nei lokaasje ynfiere (URL-adres): -Comment[ga]=Iontráil nasc le suíomh (URL): -Comment[gl]=Introduza a ligazón á localización (URL): -Comment[he]=הזן את הקישור למיקום (URL): -Comment[hi]=स्थान (यूआरएल) को लिंक भरें: -Comment[hr]=Nova veza s lokacijom (URL) -Comment[hu]=Adja meg az internet-címet (URL-t): -Comment[is]=Gefðu upp slóð að staðsetningu: -Comment[it]=Immetti collegamento all'indirizzo (URL): -Comment[ja]=新規の場所へのリンク(URL): -Comment[ka]=შეიყვანეთ პროგრამის ბმული ბმული (URL) -Comment[kk]=URL-адресін келтіріңіз: -Comment[km]=បញ្ចូលតំណទៅទីតាំង (URL) ៖ -Comment[ko]=연결할 위치(URL)를 입력하십시오: -Comment[lo]=ສ້າງລິໄປຍັງຕຳແຫນ່ງ (URL) ໃຫ່ມ -Comment[lt]=Nauja adreso nuoroda (URL) -Comment[lv]=Jauna Saite uz Vietu (URL): -Comment[mk]=Внесете врска до локацијата (URL): -Comment[mn]=Холбох хаяг (URL) өгөх: -Comment[ms]=Masukkan pautan ke lokasi (URL): -Comment[mt]=Link ġdid għal lokazzjoni (URL) -Comment[nb]=Ny lenke til en nettadresse: -Comment[nds]=Link na'n Oort (URL) ingeven: -Comment[ne]=स्थानमा प्रविष्टि लिङ्क गर्नुहोस् (यूआरएल): -Comment[nl]=Koppeling naar locatie invoeren (URL-adres): -Comment[nn]=Ny lenkje til Internettadresse: -Comment[nso]=Tsenya sekgokaganyi go tulo (URL): -Comment[pa]=ਸਥਿਤੀ (URL) ਨਾਲ ਸੰਬੰਧ ਦਿਓ: -Comment[pl]=Nowy skrót do adresu internetowego (URL): -Comment[pt]=Indique o atalho para a localização (URL): -Comment[pt_BR]=Digite o link para a localização (URL): -Comment[ro]=Introduceți legătura către locație (URL): -Comment[ru]=Адрес в Интернете: -Comment[rw]=Kwinjiza ihuza ku ndangahantu (URL): -Comment[se]=Bija liŋkka fierpmádatčujuhussii (URL): -Comment[sk]=Zadajte odkaz na umiestnenie (URL): -Comment[sl]=Vnesite povezavo do mesta (URL): -Comment[sr]=Унесите везу ка локацији (URL): -Comment[sr@Latn]=Unesite vezu ka lokaciji (URL): -Comment[sv]=Ange länk till plats (URL): -Comment[ta]=இடத்திற்கான இணைப்பை உள்ளிடு (URL): -Comment[tg]=Бадарғаро ба адреси (URL) ворид кунед: -Comment[th]=สร้างการเชื่อมโยงไปยังตำแหน่ง (URL) ใหม่ -Comment[tr]=Konuma bağlantıyı girin: -Comment[tt]=Urınlaşu bäyen kertü (URL): -Comment[uk]=Введіть посилання до адреси (URL): -Comment[uz]=Mavzuga bogʻni (URL) kiriting: -Comment[uz@cyrillic]=Мавзуга боғни (URL) киритинг: -Comment[ven]=Dzhenisani vhukwamani kha fhethu (URL): -Comment[vi]=Nhập liên kết tới trang mạng: -Comment[wa]=Novea loyén viè ene plaece (URL): -Comment[xh]=Ngenisa ikhonkco twindawo ekuyo (URL): -Comment[zh_CN]=输入到位置(URL)的链接: -Comment[zh_TW]=輸入到位置的連結(URL): -Comment[zu]=Ngenisa isixhumanisi esiya endaweni (URL): URL=.source/URL.desktop Type=Link Icon=www diff --git a/kdesktop/init/Templates/linkZIP.desktop b/kdesktop/init/Templates/linkZIP.desktop index 37f03bcd2..aaf2bc55e 100644 --- a/kdesktop/init/Templates/linkZIP.desktop +++ b/kdesktop/init/Templates/linkZIP.desktop @@ -1,150 +1,6 @@ [Desktop Entry] Name=ZIP Device... -Name[af]=ZIP Toestel... -Name[ar]=جهاز ZIP... -Name[be]=Прылада ZIP... -Name[bg]=ZIP... -Name[bn]=ZIP ডিভাইস... -Name[br]=Trobarzhell ZIP ... -Name[bs]=ZIP uređaj... -Name[ca]=Dispositiu ZIP... -Name[cs]=ZIP jednotka... -Name[csb]=Nëk ZIP... -Name[cy]=Dyfais ZIP... -Name[da]=ZIP-enhed... -Name[de]=ZIP-Laufwerk ... -Name[el]=Συσκευή ZIP... -Name[eo]=ZIP-ingo... -Name[es]=Unidad ZIP... -Name[et]=ZIP seade... -Name[eu]=ZIP gailua... -Name[fa]=دستگاه ZIP... -Name[fi]=ZIP-laite... -Name[fr]=Lecteur ZIP... -Name[fy]=ZIP-apparaat... -Name[ga]=Gléas Zip... -Name[gl]=Dispositivo Zip... -Name[he]=התקן ZIP... -Name[hi]=जिप उपकरण... -Name[hr]=ZIP uređaj... -Name[hu]=ZIP-meghajtó... -Name[is]=ZIP-drif... -Name[it]=Dispositivo ZIP... -Name[ja]=ZIP デバイス... -Name[ka]=ZIP მოწყობილობა... -Name[kk]=ZIP құрылғысы... -Name[km]=ឧបករណ៍ ZIP... -Name[ko]=ZIP 장치... -Name[lt]=ZIP įrenginys... -Name[lv]=ZIP Iekārta... -Name[mk]=ZIP Уред... -Name[mn]=ZIP Төхөөрөмж.. -Name[ms]=Peranti ZIP... -Name[mt]=Apparat ZIP -Name[nb]=ZIP-enhet … -Name[nds]=ZIP-Reedschap... -Name[ne]=ZIP यन्त्र... -Name[nl]=ZIP-apparaat... -Name[nn]=ZIP-eining … -Name[pa]=ZIP ਜੰਤਰ... -Name[pl]=Napęd ZIP... -Name[pt]=Dispositivo ZIP... -Name[pt_BR]=Dispositivo ZIP... -Name[ro]=Dispozitiv ZIP... -Name[ru]=ZIP... -Name[rw]=Apareye ZIPU... -Name[se]=ZIP-Ovttadat … -Name[sk]=Mechanika ZIP... -Name[sl]=Naprava ZIP ... -Name[sr]=ZIP Уређај... -Name[sr@Latn]=ZIP Uređaj... -Name[sv]=Zip-enhet... -Name[ta]=ZIP சாதனங்கள் -Name[te]=జిప్ పరికరం... -Name[tg]=Дастгоҳи ZIP... -Name[th]=อุปกรณ์ ZIP... -Name[tr]=ZIP Aygıtı... -Name[tt]=ZIP Cıhazı... -Name[uk]=Пристрій ZIP... -Name[uz]=ZIP uskunasi... -Name[uz@cyrillic]=ZIP ускунаси... -Name[vi]=Ổ ZIP... -Name[wa]=Éndjin léjheu di plaketes ZIP... -Name[zh_CN]=ZIP 设备... -Name[zh_TW]=ZIP 設備... Comment=New ZIP Device -Comment[af]=Nuwe ZIP Toestel... -Comment[ar]=جهاز ZIP جديد -Comment[be]=Новая прылада ZIP -Comment[bg]=Ново устройство ZIP -Comment[bn]=নতুন ZIP ডিভাইস -Comment[br]=Trobarzhell ZIP Nevez -Comment[bs]=Novi ZIP uređaj -Comment[ca]=Dispositiu ZIP nou -Comment[cs]=Nová ZIP jednotka -Comment[csb]=Nowi nëk ZIP -Comment[cy]=Dyfais ZIP Newydd -Comment[da]=Ny ZIP-enhed -Comment[de]=Neues ZIP-Laufwerk -Comment[el]=Νέα συσκευή ZIP -Comment[eo]=Nova ZIP-ingo -Comment[es]=Nueva unidad ZIP -Comment[et]=Uus ZIP seade -Comment[eu]=ZIP gailu berria -Comment[fa]=دستگاه ZIP جدید -Comment[fi]=Uusi ZIP-laite -Comment[fr]=Nouveau lecteur ZIP -Comment[fy]=Nije ZIP-apparaat -Comment[ga]=Gléas Nua Zip -Comment[gl]=Novo Dispositivo Zip -Comment[he]=התקן ZIP חדש -Comment[hi]=नया जिप उपकरण -Comment[hr]=Novi ZIP uređaj -Comment[hu]=Új ZIP-lemezes meghajtó -Comment[is]=Nýtt ZIP-drif -Comment[it]=Nuovo dispositivo ZIP -Comment[ja]=新規 ZIP デバイス -Comment[ka]=ახალი ZIP მოწყობილობა -Comment[kk]=Жаңа ZIP құрылғысы -Comment[km]=ឧបករណ៍ ZIP ថ្មី -Comment[ko]=새 ZIP 장치 -Comment[lt]=Naujas ZIP įrenginys -Comment[lv]=Jauna ZIP iekārta -Comment[mk]=Нов ZIP уред -Comment[mn]=Шинэ ZIP Төхөөрөмж.. -Comment[ms]=Peranti ZIP Baru -Comment[mt]=Apparat ZIP ġdid -Comment[nb]=Ny ZIP-enhet -Comment[nds]=Niege ZIP-Reedschap -Comment[ne]=नयाँ ZIP यन्त्र -Comment[nl]=Nieuw ZIP-apparaat -Comment[nn]=Ny ZIP-eining -Comment[pa]=ਨਵਾਂ ZIP ਜੰਤਰ -Comment[pl]=Nowy napęd ZIP -Comment[pt]=Novo Dispositivo ZIP -Comment[pt_BR]=Novo Dispositivo ZIP -Comment[ro]=Dispozitiv ZIP nou -Comment[ru]=Ссылка на устройство ZIP -Comment[rw]=Apareye ZIP Nshya -Comment[se]=Ođđa ZIP-ovttadat … -Comment[sk]=Nové zariadenie ZIP -Comment[sl]=Nova naprava ZIP -Comment[sr]=Нови ZIP уређај -Comment[sr@Latn]=Novi ZIP uređaj -Comment[sv]=Ny Zip-enhet -Comment[ta]=புதிய ZIP சாதனம் -Comment[te]=కొత్త జిప్ పరికరం -Comment[tg]=Дастгоҳи нави ZIP -Comment[th]=กำหนดอุปกรณ์ ZIP ตัวใหม่ -Comment[tr]=Yeni ZIP Aygıtı -Comment[tt]=Yaña ZIP Cıhazı -Comment[uk]=Новий пристрій ZIP -Comment[uz]=Yangi ZIP uskunasi -Comment[uz@cyrillic]=Янги ZIP ускунаси -Comment[vi]=Tạo ổ ZIP mới -Comment[wa]=Novea éndjin léjheu di plaketes ZIP -Comment[zh_CN]=新建 ZIP 设备 -Comment[zh_TW]=新 ZIP 設備 Type=Link URL=.source/ZIP-Device.desktop Icon=media-floppy-zip-unmounted diff --git a/kdesktop/init/Trash b/kdesktop/init/Trash index 064d0ab28..6bdc8cb28 100644 --- a/kdesktop/init/Trash +++ b/kdesktop/init/Trash @@ -4,85 +4,9 @@ URL=trash:/ Encoding=UTF-8 Icon=trashcan_full EmptyIcon=trashcan_empty + Name=Trash -Name[af]=Gemors -Name[ar]=سلة النفايات -Name[az]=Zibil -Name[be]=Сметніца -Name[bg]=Кошче -Name[bn]=আবর্জনা -Name[br]=Pod-lastez -Name[bs]=Smeće -Name[ca]=Paperera -Name[cs]=Koš -Name[csb]=Kòsz -Name[cy]=Sbwriel -Name[da]=Affald -Name[de]=Mülleimer -Name[el]=Κάδος απορριμμάτων -Name[en_GB]=Wastebin -Name[en_US]=Trash -Name[eo]=Rubujo -Name[es]=Papelera -Name[et]=Prügikast -Name[eu]=Zaborra -Name[fa]=زباله -Name[fi]=Roskakori -Name[fr]=Corbeille -Name[fy]=Jiskefet -Name[ga]=Bruscar -Name[gl]=Lixo -Name[he]=אשפה -Name[hi]=रद्दी -Name[hr]=Otpad -Name[hsb]=Papjernik -Name[hu]=Szemétkosár -Name[is]=Rusl -Name[it]=Cestino -Name[ja]=ごみ箱 -Name[ka]=ურნა -Name[kk]=Өшірілгендер -Name[km]=ធុងសំរាម -Name[lo]=ຖັງຂີ້ເຫຍື່ອ -Name[lt]=Šiukšliadėžė -Name[lv]=Miskaste -Name[mk]=Корпа -Name[mn]=Хогийн сав -Name[ms]=Sampah -Name[mt]=Skart -Name[nb]=Papirkurv -Name[nds]=Affalltünn -Name[ne]=रद्दीटोकरी -Name[nl]=Prullenbak -Name[nn]=Papirkorg -Name[nso]=Seswaraditlakala -Name[pa]=ਰੱਦੀ -Name[pl]=Kosz -Name[pt]=Lixo -Name[pt_BR]=Lixo -Name[ro]=Gunoi -Name[ru]=Корзина -Name[se]=Ruskalihtti -Name[sk]=Kôš -Name[sl]=Smeti -Name[sr]=Смеће -Name[sr@Latn]=Smeće -Name[sv]=Skräp -Name[ta]=குப்பை -Name[te]=చెత్త బుట్ట -Name[tg]=Ахлотдон -Name[th]=ถังขยะ -Name[tr]=Çöp -Name[tt]=Çüplek -Name[uk]=Смітник -Name[uz]=Chiqindilar qutisi -Name[uz@cyrillic]=Чиқиндилар қутиси -Name[ven]=Tshikha -Name[vi]=Thùng rác -Name[wa]=Batch -Name[xh]=Inkukumo -Name[zh_CN]=回收站 -Name[zh_TW]=資源回收桶 -Name[zu]=Izibi -Comment=Contains removed files -X-Trinity-BuiltIn=true
\ No newline at end of file + +Comment=Contains removed files + +X-Trinity-BuiltIn=true diff --git a/kdesktop/init/Web_Browser b/kdesktop/init/Web_Browser index 9a13b38c0..0b0b47def 100644 --- a/kdesktop/init/Web_Browser +++ b/kdesktop/init/Web_Browser @@ -1,40 +1,17 @@ [Desktop Entry] -Comment=Browse the World Wide Web -Comment[en_US]=Browse the World Wide Web Exec=kfmclient openBrowser %u -GenericName=Web Browser -GenericName[en_US]=Web Browser Icon=konqueror MimeType=application/vnd.mozilla.xul+xml;application/xhtml+xml;application/xml;image/gif;image/jpeg;image/png;text/html;text/xml + Name=Web Browser -Name[ca]=Navegador web -Name[cs]=Webový prohlížeč -Name[de]=Web-Browser -Name[en_US]=Web Browser -Name[es]=Navegador web -Name[fa]=مرورگر اینترنتی -Name[fi]=-selain -Name[fr]=Navigateur Web -Name[hu]=webböngésző -Name[it]=Browser Web -Name[ja]=ウェブ・ブラウザ -Name[ko]=웹 브라우저 -Name[nb]=Nettleser -Name[nl]=webbrowser -Name[nn]=Nettlesar -Name[no]=Nettleser -Name[pl]=Przeglądarka WWW -Name[pt]=Navegador Web -Name[pt_BR]=Navegador Web -Name[sk]=Internetový prehliadač -Name[sv]=Webbläsaren -Path= + +GenericName=Web Browser + +Comment=Browse the World Wide Web + StartupNotify=true Terminal=false -TerminalOptions= Type=Application -X-DCOP-ServiceType= X-TDE-SubstituteUID=false -X-TDE-Username= X-Trinity-BuiltIn=true OnlyShowIn=TDE; diff --git a/kdesktop/init/directory.autostart b/kdesktop/init/directory.autostart index d63845aed..be595f359 100644 --- a/kdesktop/init/directory.autostart +++ b/kdesktop/init/directory.autostart @@ -1,68 +1,3 @@ [Desktop Entry] Type=Directory Name=Autostart -Name[af]=Outomatiese begin -Name[ar]=بدء تشغيل تلقائي -Name[az]=Öz-Özünə Başlama -Name[be]=Аўтазапуск -Name[bg]=Автоматично стартиране -Name[bn]=অটো-স্টার্ট -Name[br]=Emloc'h -Name[ca]=Autoengega -Name[csb]=Aùtosztart -Name[cy]=Hunan-gychwyn -Name[el]=Αυτόματη Έναρξη -Name[eo]=Aŭtolanĉo -Name[es]=Inicio automático -Name[eu]=Autoabiatu -Name[fa]=خودآغاز -Name[fi]=Käynnistä -Name[fr]=Démarrage automatique -Name[fy]=Automatysk Begjinne -Name[ga]=Tús uathoibríoch -Name[gl]=Autoinício -Name[he]=הפעלה אוטומטית -Name[hi]=स्वतःप्रारंभ -Name[hr]=Automatsko pokretanje -Name[hu]=Automatikus indítás -Name[is]=Sjálfræsing -Name[it]=Avvio automatico -Name[ja]=自動起動 -Name[ka]=ავტოგაშვება -Name[kk]=Автобастау -Name[km]=ចាប់ផ្ដើមស្វ័យប្រវត្តិ -Name[lo]=ເລິ່ມອັດໂນມັດ -Name[lt]=Autostartas -Name[lv]=Autostarts -Name[mk]=Автостарт -Name[mn]=Автомат эхлэгч -Name[ms]=Automula -Name[mt]=Awto-bidu -Name[ne]=स्वत: सुरु -Name[nso]=Thomo yago Itirisa -Name[pa]=ਸਵੈ-ਚਾਲਤ -Name[pt]=Arranque -Name[pt_BR]=Inicialização Automática -Name[ru]=Автозапуск -Name[se]=Autoálggaheapmi -Name[sk]=Autoštart -Name[sl]=Samodejni zagon -Name[sr]=Аутоматско покретање -Name[sr@Latn]=Automatsko pokretanje -Name[ta]=தானாகதுவக்கு -Name[te]=స్వయంచాలన -Name[tg]=Сар кунии автоматикӣ -Name[th]=เริ่มอัตโนมัติ -Name[tr]=Otomatik Başlat -Name[tt]=Üze Cibäreläse -Name[uk]=Автостарт -Name[uz]=Avto-boshlash -Name[uz@cyrillic]=Авто-бошлаш -Name[ven]=Thoma -Name[vi]=Tự khởi động -Name[wa]=Enonde tot seu -Name[xh]=Isiqalo esizenzekelayo -Name[zh_CN]=自动启动 -Name[zh_TW]=自動啟動 -Name[zu]=Ukuqala ngokuzenzekela - diff --git a/kdesktop/init/directory.desktop b/kdesktop/init/directory.desktop index 2269e69dd..53574d2da 100644 --- a/kdesktop/init/directory.desktop +++ b/kdesktop/init/directory.desktop @@ -3,79 +3,3 @@ Type=Directory BgImage= Icon=desktop Name=Desktop -Name[af]=Werkskerm -Name[ar]=سطح المكتب -Name[az]=Masa Üstü -Name[be]=Працоўны стол -Name[bg]=Работен плот -Name[bn]=ডেস্কটপ -Name[br]=Gorretaol -Name[bs]=Radna površina -Name[ca]=Escriptori -Name[cs]=Pracovní plocha -Name[csb]=Pùlt -Name[cy]=Penbwrdd -Name[de]=Arbeitsfläche -Name[el]=Επιφάνεια εργασίας -Name[eo]=Tabulo -Name[es]=Escritorio -Name[et]=Töölaud -Name[eu]=Mahaigaina -Name[fa]=رومیزی -Name[fi]=Työpöytä -Name[fo]=Skriviborð -Name[fr]=Bureau -Name[fy]=Buroblêd -Name[ga]=Deasc -Name[gl]=Escritorio -Name[he]=שולחן עבודה -Name[hi]=डेस्कटॉप -Name[hr]=Radna površina -Name[hsb]=Dźěłowy powjerch -Name[hu]=Munkaasztal -Name[is]=Skjáborð -Name[ja]=デスクトップ -Name[ka]=სამუშაო დაფა -Name[kk]=Жұмыс үстелі -Name[km]=ផ្ទៃតុ -Name[ko]=데스크톱 -Name[lo]=ພື້ນທີ່ເຮັດວງກ -Name[lt]=Darbastalis -Name[lv]=Darbvirsma -Name[mk]=Работна површина -Name[mn]=Ажлын тавцан -Name[ms]=Ruang Kerja -Name[nb]=Skrivebord -Name[nds]=Schriefdisch -Name[ne]=डेस्कटप -Name[nl]=Bureaublad -Name[nn]=Skrivebord -Name[oc]=BurèU -Name[pa]=ਵੇਹੜਾ -Name[pl]=Pulpit -Name[pt]=Ambiente de Trabalho -Name[pt_BR]=Área de Trabalho -Name[ru]=Рабочий стол -Name[rw]=Ibiro -Name[se]=Čállinbeavdi -Name[sk]=Plocha -Name[sl]=Namizje -Name[sr]=Радна површина -Name[sr@Latn]=Radna površina -Name[ss]=Desktop -Name[sv]=Skrivbord -Name[ta]=மேல்மேசை -Name[te]=రంగస్ఠలం -Name[tg]=Мизи корӣ -Name[th]=พื้นที่ทำงาน -Name[tr]=Masaüstü -Name[tt]=Östäl -Name[uk]=Стільниця -Name[uz]=Ish stoli -Name[uz@cyrillic]=Иш столи -Name[ven]=Desikithopo -Name[vi]=Màn hình nền -Name[wa]=Sicribanne -Name[zh_CN]=桌面 -Name[zh_TW]=桌面 - diff --git a/kdesktop/init/directory.templates b/kdesktop/init/directory.templates index d77fa5cb6..8cfeee2e3 100644 --- a/kdesktop/init/directory.templates +++ b/kdesktop/init/directory.templates @@ -1,78 +1,3 @@ [Desktop Entry] Type=Directory Name=Templates -Name[af]=Voorbeelde -Name[ar]=القوالب -Name[az]=Nümunələr -Name[be]=Шаблоны -Name[bg]=Шаблони -Name[bn]=টেমপ্লেট -Name[br]=Patromoù -Name[bs]=Šabloni -Name[ca]=Plantilles -Name[cs]=Šablony -Name[csb]=Mùstrë -Name[cy]=Patrymluniau -Name[da]=Skabeloner -Name[de]=Vorlagen -Name[el]=Πρότυπα -Name[eo]=Ŝablonoj -Name[es]=Plantillas -Name[et]=Mallid -Name[eu]=Txantiloiak -Name[fa]=الگوها -Name[fi]=Pohjat -Name[fr]=Modèles -Name[fy]=Sjabloanen -Name[ga]=Teimpléid -Name[gl]=Modelos -Name[he]=תבניות -Name[hi]=टैम्प्लेट्स -Name[hr]=Predlošci -Name[hu]=Sablonok -Name[is]=Snið -Name[it]=Modelli -Name[ja]=テンプレート -Name[ka]=ნიმუშები -Name[kk]=Үлгілер -Name[km]=ពុម្ព -Name[lo]=ຕົ້ນແບບ -Name[lt]=Šablonai -Name[lv]=Šabloni -Name[mk]=Шаблони -Name[mn]=Шаблом -Name[ms]=Templat -Name[mt]=Mudelli -Name[nb]=Maler -Name[nds]=Vörlagen -Name[ne]=टेम्प्लेट -Name[nl]=Sjablonen -Name[nn]=Malar -Name[nso]=Dipapiso -Name[pa]=ਨਮੂਨਾ -Name[pl]=Wzorce -Name[pt]=Modelos -Name[pt_BR]=Modelos -Name[ro]=Modele -Name[ru]=Шаблоны -Name[se]=Mállet -Name[sk]=Šablóny -Name[sl]=Predloge -Name[sr]=Шаблони -Name[sr@Latn]=Šabloni -Name[sv]=Mallar -Name[ta]=வார்ப்புருக்கள் -Name[te]=టెంప్లెటులు -Name[tg]=Намунаҳо -Name[th]=ต้นแบบ -Name[tr]=Şablonlar -Name[tt]=Ürçetmä -Name[uk]=Шаблони -Name[uz]=Namunalar -Name[uz@cyrillic]=Намуналар -Name[vi]=Tiêu bản -Name[wa]=Modeles -Name[zh_CN]=模板 -Name[zh_TW]=範本 -Name[zu]=Ama-Templates - diff --git a/kdesktop/kcustommenu.cc b/kdesktop/kcustommenu.cpp index 2e825c0d9..f3d3cf817 100644 --- a/kdesktop/kcustommenu.cc +++ b/kdesktop/kcustommenu.cpp @@ -57,7 +57,7 @@ KCustomMenu::KCustomMenu(const TQString &configfile, TQWidget *parent) insertMenuItem( menuItem, -1 ); } - connect(this, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotActivated(int))); + connect(this, TQ_SIGNAL(activated(int)), this, TQ_SLOT(slotActivated(int))); } KCustomMenu::~KCustomMenu() @@ -71,7 +71,7 @@ KCustomMenu::slotActivated(int id) KService::Ptr s = d->entryMap[id]; if (!s) return; - kapp->startServiceByDesktopPath(s->desktopEntryPath()); + tdeApp->startServiceByDesktopPath(s->desktopEntryPath()); } // The following is copied from kicker's PanelServiceMenu diff --git a/kdesktop/kcustommenu.h b/kdesktop/kcustommenu.h index 93b8d671f..a8f2cf5c4 100644 --- a/kdesktop/kcustommenu.h +++ b/kdesktop/kcustommenu.h @@ -29,7 +29,7 @@ */ class KCustomMenu : public TQPopupMenu { - Q_OBJECT + TQ_OBJECT public: /** * Create a custome menu described by @p configfile. diff --git a/kdesktop/kdesktop.desktop.cmake b/kdesktop/kdesktop.desktop.cmake index 03d65ced5..2d91c337b 100644 --- a/kdesktop/kdesktop.desktop.cmake +++ b/kdesktop/kdesktop.desktop.cmake @@ -1,85 +1,10 @@ [Desktop Entry] Exec=@TDE_BIN_DIR@/kdesktop X-DCOP-ServiceType=wait -Name=TDE Desktop -Name[af]=TDE Werkskerm -Name[ar]=سطح المكتب TDE -Name[az]=TDE Masa üstü -Name[be]=Працоўны стол TDE -Name[bn]=কে.ডি.ই. ডেস্কটপ -Name[br]=Burev TDE -Name[bs]=TDE radna površina -Name[ca]=Escriptori TDE -Name[cs]=Pracovní plocha TDE -Name[csb]=Pùlt TDE -Name[cy]=Penbwrdd TDE -Name[da]=TDE-desktop -Name[de]=TDE-Arbeitsfläche -Name[el]=Επιφάνεια εργασίας του TDE -Name[eo]=TDE Labortablo -Name[es]=Escritorio de TDE -Name[et]=TDE töölaud -Name[eu]=TDE mahaigaina -Name[fa]=رومیزی TDE -Name[fi]=TDE-työpöytä -Name[fr]=Bureau de TDE -Name[fy]=TDE Buroblêd -Name[ga]=Deasc TDE -Name[gl]=Escritório de TDE -Name[he]=שולחן העבודה של TDE -Name[hi]=केडीई डेस्कटॉप -Name[hr]=TDE radna površina -Name[hu]=Munkaasztal -Name[id]=Desktop TDE -Name[is]=TDE skjáborð -Name[it]=Desktop TDE -Name[ja]=TDE デスクトップ -Name[ka]=TDE სამუშაო დაფა -Name[kk]=TDE үстелі -Name[km]=ផ្ទៃតុ TDE -Name[ko]=데스크톱 -Name[lo]=ພື້ນທີ່ທຳງານ TDE -Name[lt]=TDE Darbastalis -Name[lv]=TDE Darbvirsma -Name[mk]=TDE Десктоп -Name[mn]=TДЭ-Ажлын тавцан -Name[ms]=Desktop TDE -Name[mt]=Desktop TDE -Name[nb]=TDE Skrivebord -Name[nds]=TDE-Schriefdisch -Name[ne]=TDE डेस्कटप -Name[nl]=TDE Bureaublad -Name[nn]=TDE-skrivebord -Name[nso]=Desktop ya TDE -Name[pa]=TDE ਵੇਹੜਾ -Name[pl]=Pulpit TDE -Name[pt]=Ecrã do TDE -Name[pt_BR]=Área de Trabalho TDE -Name[ro]=Ecran TDE -Name[ru]=Рабочий стол TDE -Name[rw]=TDE Ibiro -Name[se]=TDE-čallinbeavdi -Name[sk]=Pracovná plocha -Name[sl]=Namizje TDE -Name[sr]=TDE радна површина -Name[sr@Latn]=TDE radna površina -Name[sv]=TDE-skrivbord -Name[ta]=TDE மேல்மேசை -Name[te]=కెడిఈ రంగస్థలం -Name[tg]=Мизи Кории TDE -Name[th]=พื้นที่ทำงาน TDE -Name[tr]=TDE Masaüstü -Name[tt]=TDE Östäl -Name[uk]=Стільниця TDE -Name[uz]=TDE ish stoli -Name[uz@cyrillic]=TDE иш столи -Name[ven]=Desikithopo ya TDE -Name[vi]=Môi trường TDE -Name[wa]=Sicribanne TDE -Name[zh_CN]=TDE 桌面 -Name[zh_TW]=TDE 桌面 -Name[zu]=I-Desktop ye-TDE +X-TDE-autostart-after=mediamanager Type=Service X-TDE-StartupNotify=false OnlyShowIn=TDE; X-TDE-autostart-phase=0 + +Name=TDE Desktop diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg index 8086ad8fd..183fcc417 100644 --- a/kdesktop/kdesktop.kcfg +++ b/kdesktop/kdesktop.kcfg @@ -52,7 +52,7 @@ <default>true</default> <label></label> <whatsthis></whatsthis> - <!-- init.cc:138 --> + <!-- init.cpp:138 --> <!-- if (!config->readBoolEntry("CopyDesktopLinks", true)) --> </entry> <entry key="AutoLineUpIcons" type="Bool"> @@ -64,11 +64,16 @@ <default>false</default> <label>Sort directories first</label> <whatsthis></whatsthis> - <!-- krootwm.cc:251 --> + <!-- krootwm.cpp:251 --> <!-- aSortDirsFirst->setChecked( tdeconfig->readBoolEntry("SortDirectoriesFirst", true)); --> - <!-- krootwm.cc:496 --> + <!-- krootwm.cpp:496 --> <!-- config->writeEntry( "SortDirectoriesFirst", b ); --> </entry> + <entry key="TerminalApplication" type="Path"> + <default>konsole</default> + <label>Terminal application</label> + <whatsthis>Defines which terminal application is used.</whatsthis> + </entry> </group> <group name="Mouse Buttons"> <entry key="WheelSwitchesWorkspace" type="Bool"> @@ -80,14 +85,9 @@ <default>Forward</default> <label></label> <whatsthis></whatsthis> - <!-- desktop.cc:397 --> + <!-- desktop.cpp:397 --> <!-- (config->readEntry("WheelDirection", default_dir_string) == forward_string) ? Forward : Reverse; --> </entry> - <entry key="TerminalApplication" type="Path"> - <default>konsole</default> - <label>Terminal application</label> - <whatsthis>Defines which terminal application is used.</whatsthis> - </entry> <entry key="Left" type="String"> <default></default> <label>Left Mouse Button Action</label> @@ -123,7 +123,7 @@ </group> <group name="FMSettings"> <entry key="NormalTextColor" type="Color"> <!--SHARED--> - <default>Qt::white</default> + <default>TQt::white</default> <label>Normal text color used for icon labels</label> <whatsthis></whatsthis> </entry> @@ -155,6 +155,16 @@ <label>Align direction</label> <whatsthis>If this is enabled, icons are aligned vertically, otherwise horizontally.</whatsthis> </entry> + <entry key="IconSpacing" type="Int"> + <default>5</default> + <label>Icon spacing</label> + <whatsthis><p>This is the minimal distance (in pixels) between the icons on your desktop.</p></whatsthis> + </entry> + <entry key="SpacingCtrlScroll" type="Bool"> + <default>false</default> + <label>Change spacing by Ctrl+Mouse Scroll</label> + <whatsthis><p>If this is enabled, you can change desktop icon spacing by pressing Ctrl and scrolling on the desktop background.</p></whatsthis> + </entry> <entry key="Preview" type="StringList"> <default></default> <label>Show Icon Previews For</label> @@ -190,7 +200,7 @@ <default></default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:254 --> + <!-- kdiconview.cpp:254 --> <!-- m_itemsAlwaysFirst = config->readListEntry("AlwaysFirstItems"); // Distributor plug-in --> </entry> </group> @@ -199,14 +209,14 @@ <default>true</default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:258 --> + <!-- kdiconview.cpp:258 --> <!-- m_enableMedia=config->readBoolEntry("enabled",false); --> </entry> <entry key="exclude" type="String"> <default>media/nfs_mounted,media/nfs_unmounted,media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted</default> <label>Device Types to exclude</label> <whatsthis>The device types which you do not want to see on the desktop.</whatsthis> - <!-- kdiconview.cc:261 --> + <!-- kdiconview.cpp:261 --> <!-- TQString tmpList=config->readEntry("exclude","media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted"); --> </entry> <entry name="MediaFreeSpaceDisplayEnabled" key="FreeSpaceDisplayEnabled" type="Bool"> diff --git a/kdesktop/kdesktopSetAsBackground.desktop b/kdesktop/kdesktopSetAsBackground.desktop index 298d3e489..3bc655803 100644 --- a/kdesktop/kdesktopSetAsBackground.desktop +++ b/kdesktop/kdesktopSetAsBackground.desktop @@ -1,210 +1,44 @@ [Desktop Entry] X-TDE-ServiceTypes=image/* -Actions=setAsBackground;tileAsBackground; +Actions=centeredAsBackground;tiledAsBackground;centeredTiledAsBackground;centeredMaxpectAsBackground;tiledMaxpectAsBackground;scaledAsBackground;centeredAutoFitAsBackground;scaleAndCropAsBackground X-TDE-Submenu=Set as Background -X-TDE-Submenu[af]=Stel as agtergrond -X-TDE-Submenu[be]=Зрабіць фонавым малюнкам -X-TDE-Submenu[bg]=Установяване като фон -X-TDE-Submenu[bn]=পশ্চাদ্পট হিসাবে বেছে নাও -X-TDE-Submenu[bs]=Postavi kao pozadinu -X-TDE-Submenu[ca]=Estableix com a fons -X-TDE-Submenu[cs]=Nastavit jako pozadí -X-TDE-Submenu[csb]=Ùstôwi jakno spòdlé -X-TDE-Submenu[da]=Sæt som baggrund -X-TDE-Submenu[de]=Als Hintergrund setzen -X-TDE-Submenu[el]=Ορισμός ως ταπετσαρία -X-TDE-Submenu[eo]=Agordu kiel fono -X-TDE-Submenu[es]=Establecer como fondo -X-TDE-Submenu[et]=Sea taustapildiks -X-TDE-Submenu[eu]=Ezarri atzeko plano gisa -X-TDE-Submenu[fa]=تنظیم به عنوان زمینه -X-TDE-Submenu[fi]=Aseta taustakuvaksi -X-TDE-Submenu[fr]=Définir comme arrière-plan -X-TDE-Submenu[fy]=As eftergrûn brûke -X-TDE-Submenu[gl]=Pór como Fondo de Escritório -X-TDE-Submenu[he]=קבע כרקע -X-TDE-Submenu[hr]=Postavi kao pozadinu -X-TDE-Submenu[hu]=Beállítás háttérképnek -X-TDE-Submenu[is]=Setja sem bakgrunn -X-TDE-Submenu[it]=Imposta come sfondo -X-TDE-Submenu[ja]=背景としてセット -X-TDE-Submenu[kk]=Ая ретінде орнату -X-TDE-Submenu[km]=កំណត់ជាផ្ទៃខាងក្រោយ -X-TDE-Submenu[lt]=Nustatyti fonu -X-TDE-Submenu[mk]=Постави како подлога -X-TDE-Submenu[nb]=Sett som bakgrunn -X-TDE-Submenu[nds]=As Achtergrund fastleggen -X-TDE-Submenu[ne]=पृष्ठभूमिको रुपमा सेट गर्छ -X-TDE-Submenu[nl]=Als achtergrond gebruiken -X-TDE-Submenu[nn]=Bruk som bakgrunn -X-TDE-Submenu[pa]=ਪਿੱਠਭੂਮੀ ਬਣਾਓ -X-TDE-Submenu[pl]=Ustaw jako tło -X-TDE-Submenu[pt]=Colocar como Fundo -X-TDE-Submenu[pt_BR]=Configurar como Plano de fundo -X-TDE-Submenu[ro]=Setează ca fundal -X-TDE-Submenu[ru]=Сделать фоновым рисунком -X-TDE-Submenu[se]=Geavat duogášgovvan -X-TDE-Submenu[sk]=Nastaviť ako pozadie -X-TDE-Submenu[sl]=Nastavi kot ozadje -X-TDE-Submenu[sr]=Постави као позадину -X-TDE-Submenu[sr@Latn]=Postavi kao pozadinu -X-TDE-Submenu[sv]=Använd som bakgrund -X-TDE-Submenu[th]=ตั้งให้เป็นพื้นหลัง -X-TDE-Submenu[tr]=Masaüstü Arkaplanı Yap -X-TDE-Submenu[uk]=Встановити як тло -X-TDE-Submenu[uz]=Ish stoliga qoʻyish -X-TDE-Submenu[uz@cyrillic]=Иш столига қўйиш -X-TDE-Submenu[vi]=Đặt làm Hình nền -X-TDE-Submenu[wa]=Mete come fond d' waitroûle -X-TDE-Submenu[zh_CN]=设为背景 -X-TDE-Submenu[zh_TW]=設為背景 -[Desktop Action setAsBackground] +[Desktop Action centeredAsBackground] Name=Centered -Name[af]=Gesentreer -Name[ar]=مركز -Name[be]=Пасярэдзіне -Name[bg]=Центрирано -Name[bn]=মাঝামাঝি -Name[br]=Kreizennet -Name[bs]=Centrirano -Name[ca]=Centrat -Name[cs]=Na střed -Name[csb]=Na westrzódkù -Name[cy]=Canoledig -Name[da]=Centreret -Name[de]=Zentriert -Name[el]=Κεντράρισμα -Name[en_GB]=Centred -Name[eo]=Meza -Name[es]=Centrado -Name[et]=Tsentreeritud -Name[eu]=Erdiratua -Name[fa]=مرکزی -Name[fi]=Keskitetty -Name[fr]=Centré -Name[fy]=sintraal setten -Name[ga]=Láraithe -Name[gl]=Centrado -Name[he]=ממורכז -Name[hi]=बीचों-बीच -Name[hr]=Sredinom -Name[hu]=Középre igazítva -Name[is]=Miðjað -Name[it]=Centrato -Name[ja]=中央 -Name[ka]=ცენტრზე -Name[kk]=Ортаға -Name[km]=កណ្ដាល -Name[lt]=Centruota -Name[lv]=Centrēts -Name[mk]=Центриран -Name[ms]=Tengah -Name[mt]=Iċċentrat -Name[nb]=Sentrert -Name[nds]=In de Merrn -Name[ne]=केन्द्रित -Name[nl]=Gecentreerd -Name[nn]=Sentrert -Name[pa]=ਕੇਂਦਰੀ -Name[pl]=Wyśrodkowane -Name[pt]=Centrado -Name[pt_BR]=Centralizado -Name[ro]=Centrat -Name[ru]=По центру -Name[rw]=Biri hagati -Name[se]=Guovdut -Name[sk]=V strede -Name[sl]=Usrediščeno -Name[sr]=Центрирано -Name[sr@Latn]=Centrirano -Name[sv]=Centrerad -Name[ta]=மைய -Name[te]=మద్యన -Name[tg]=Марказӣ -Name[th]=จัดกลาง -Name[tr]=Uzat -Name[tt]=Üzäkläşep -Name[uk]=По центру -Name[uz]=Markazda -Name[uz@cyrillic]=Марказда -Name[vi]=Giữa -Name[wa]=Å mitan -Name[zh_CN]=居中 -Name[zh_TW]=置中 Icon=background -Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6 +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 1 -[Desktop Action tileAsBackground] +[Desktop Action tiledAsBackground] Name=Tiled -Name[af]=Geteël -Name[ar]=مبلّط -Name[be]=Расцягнутае -Name[bg]=Каскадно -Name[bn]=টাইল করা -Name[br]=Teolet -Name[bs]=Popločano -Name[ca]=Repetit -Name[cs]=Dlaždice -Name[csb]=Kachelkòwóné -Name[cy]=Teiledig -Name[da]=Fliselagt -Name[de]=Gekachelt -Name[el]=Σε παράθεση -Name[eo]=kahela -Name[es]=Mosaico -Name[et]=Paanidena -Name[eu]=Mosaikoa -Name[fa]=کاشیشده -Name[fi]=Vierekkäin -Name[fr]=Mosaïque -Name[fy]=Tegele -Name[ga]=Tilithe -Name[gl]=Mosaico -Name[he]=פרוש -Name[hi]=चटाई-दार -Name[hr]=Popločeno -Name[hu]=Mozaikszerűen -Name[is]=Flísað -Name[it]=Ripetuto -Name[ja]=タイル状 -Name[ka]=მოზაიკა -Name[kk]=Қатарлап -Name[km]=ក្បឿង -Name[lt]=Iškloti -Name[mk]=Поплочен -Name[ms]=Berjubin -Name[mt]=Madum -Name[nb]=Flislagt -Name[nds]=Kachelt -Name[ne]=टायल गरिएको -Name[nl]=Tegels -Name[nn]=Jamsides -Name[pa]=ਤਣਿਆ -Name[pl]=Kafelkowane -Name[pt]=Mosaico -Name[pt_BR]=Ladrilhado -Name[ro]=Mozaic -Name[ru]=Черепицей -Name[rw]=Byudukaro -Name[se]=Bálddalaga -Name[sk]=Dlaždice -Name[sl]=Razdeljeno -Name[sr]=Поређано -Name[sr@Latn]=Poređano -Name[sv]=Sida vid sida -Name[ta]=பிண்ணனி -Name[te]=పలకలుగా -Name[tg]=Тахтасангӣ -Name[th]=ปูทั้งหน้าจอ -Name[tr]=Sırala -Name[tt]=Bülengän -Name[uk]=Плиткою -Name[uz]=Kafel -Name[uz@cyrillic]=Кафель -Name[vi]=Xếp ngói -Name[wa]=A schaeyes -Name[zh_CN]=平铺 -Name[zh_TW]=拼貼 Icon=background Exec=dcop kdesktop KBackgroundIface setWallpaper %u 2 + +[Desktop Action centeredTiledAsBackground] +Name=Center Tiled +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 3 + +[Desktop Action centeredMaxpectAsBackground] +Name=Centered Maxpect +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 4 + +[Desktop Action tiledMaxpectAsBackground] +Name=Tiled Maxpect +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 5 + +[Desktop Action scaledAsBackground] +Name=Scaled +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6 + +[Desktop Action centeredAutoFitAsBackground] +Name=Centered Auto Fit +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 7 + +[Desktop Action scaleAndCropAsBackground] +Name=Scale & Crop +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 8 diff --git a/kdesktop/kdesktopapp.cpp b/kdesktop/kdesktopapp.cpp index ba05dc655..b19817bbd 100644 --- a/kdesktop/kdesktopapp.cpp +++ b/kdesktop/kdesktopapp.cpp @@ -20,15 +20,15 @@ #include <kdesktopapp.h> KDesktopApp::KDesktopApp(): -KUniqueApplication() +TDEUniqueApplication() { #ifdef COMPOSITE initCmBackground(); #endif } -KDesktopApp::KDesktopApp(Display * dpy, Qt::HANDLE visual, Qt::HANDLE colormap): -KUniqueApplication(dpy, visual, colormap) +KDesktopApp::KDesktopApp(Display * dpy, TQt::HANDLE visual, TQt::HANDLE colormap): +TDEUniqueApplication(dpy, visual, colormap) { #ifdef COMPOSITE initCmBackground(); @@ -87,7 +87,7 @@ bool KDesktopApp::x11EventFilter (XEvent * xevent) emit cmBackgroundChanged(supported); } } - return KUniqueApplication::x11EventFilter (xevent); + return TDEUniqueApplication::x11EventFilter (xevent); } #endif diff --git a/kdesktop/kdesktopapp.h b/kdesktop/kdesktopapp.h index 94cdd1d33..4ce52c3a2 100644 --- a/kdesktop/kdesktopapp.h +++ b/kdesktop/kdesktopapp.h @@ -21,9 +21,9 @@ #define __kdesktopapp_h__ #include <config.h> -#include <kuniqueapplication.h> +#include <tdeuniqueapplication.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -33,13 +33,13 @@ # include <fixx11h.h> #endif -class KDesktopApp : public KUniqueApplication +class KDesktopApp : public TDEUniqueApplication { - Q_OBJECT + TQ_OBJECT public: KDesktopApp(); - KDesktopApp(Display * dpy, Qt::HANDLE visual = 0, - Qt::HANDLE colormap = 0); + KDesktopApp(Display * dpy, TQt::HANDLE visual = 0, + TQt::HANDLE colormap = 0); #ifdef COMPOSITE bool x11EventFilter (XEvent *); diff --git a/kdesktop/kdesktopbindings.cpp b/kdesktop/kdesktopbindings.cpp index 91bddb5b3..a4f46e717 100644 --- a/kdesktop/kdesktopbindings.cpp +++ b/kdesktop/kdesktopbindings.cpp @@ -1,6 +1,6 @@ #ifndef NOSLOTS # define DEF( name, key3, key4, fnSlot ) \ - keys->insert( name, i18n(name), TQString(), key3, key4, TQT_TQOBJECT(this), TQT_SLOT(fnSlot) ) + keys->insert( name, i18n(name), TQString(), key3, key4, this, TQ_SLOT(fnSlot) ) # define DEF2( name, key3, key4, receiver, slot ) \ keys->insert( name, i18n(name), TQString(), key3, key4, receiver, slot ); #else @@ -14,41 +14,62 @@ keys->insert( "Program:kdesktop", i18n("Desktop") ); #ifndef NOSLOTS - if (kapp->authorize("run_command")) + if (tdeApp->authorize("run_command")) { #endif - DEF( I18N_NOOP("Run Command"), ALT+Qt::Key_F2, WIN+Qt::Key_Return, slotExecuteCommand() ); + DEF( I18N_NOOP("Run Command"), ALT+TQt::Key_F2, WIN+TQt::Key_Return, slotExecuteCommand() ); #ifndef NOSLOTS } #endif - DEF( I18N_NOOP("Show Taskmanager"), CTRL+Qt::Key_Escape, WIN+CTRL+Qt::Key_Pause, slotShowTaskManager() ); - DEF( I18N_NOOP("Show Window List"), ALT+Qt::Key_F5, WIN+Qt::Key_0, slotShowWindowList() ); - DEF( I18N_NOOP("Switch User"), ALT+CTRL+Qt::Key_Insert, WIN+Qt::Key_Insert, slotSwitchUser() ); + DEF( I18N_NOOP("Show Taskmanager"), CTRL+TQt::Key_Escape, WIN+CTRL+TQt::Key_Pause, slotShowTaskManager() ); + DEF( I18N_NOOP("Show Window List"), ALT+TQt::Key_F5, WIN+TQt::Key_0, slotShowWindowList() ); + DEF( I18N_NOOP("Switch User"), ALT+CTRL+TQt::Key_Insert, WIN+TQt::Key_Insert, slotSwitchUser() ); #ifndef NOSLOTS - if (kapp->authorize("lock_screen")) + if (tdeApp->authorize("lock_screen")) { #endif - DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+Qt::Key_L, WIN+Qt::Key_ScrollLock, KRootWm::self(), TQT_SLOT(slotLock()) ); - DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQT_SLOT(slotLock()) ); + DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+TQt::Key_L, WIN+TQt::Key_ScrollLock, KRootWm::self(), TQ_SLOT(slotLock()) ); + DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQ_SLOT(slotLock()) ); #ifndef NOSLOTS } - if (kapp->authorize("start_screensaver")) + if (tdeApp->authorize("start_screensaver")) { #endif - DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+Qt::Key_S, WIN+Qt::Key_S, KRootWm::self(), TQT_SLOT(slotSave()) ); + DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+TQt::Key_S, WIN+TQt::Key_S, KRootWm::self(), TQ_SLOT(slotSave()) ); #ifndef NOSLOTS } - if (kapp->authorize("logout")) + if (tdeApp->authorize("logout")) { #endif - DEF( I18N_NOOP("Log Out"), ALT+CTRL+Qt::Key_Delete, WIN+Qt::Key_Escape, slotLogout() ); - DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_Delete, WIN+SHIFT+Qt::Key_Escape, slotLogoutNoCnf() ); - DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageDown, WIN+CTRL+SHIFT+Qt::Key_PageDown, slotHaltNoCnf() ); - DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageUp, WIN+CTRL+SHIFT+Qt::Key_PageUp, slotRebootNoCnf() ); + DEF( I18N_NOOP("Log Out"), ALT+CTRL+TQt::Key_Delete, WIN+TQt::Key_Escape, slotLogout() ); + DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_Delete, WIN+SHIFT+TQt::Key_Escape, slotLogoutNoCnf() ); + DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageDown, WIN+CTRL+SHIFT+TQt::Key_PageDown, slotHaltNoCnf() ); + DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageUp, WIN+CTRL+SHIFT+TQt::Key_PageUp, slotRebootNoCnf() ); #ifndef NOSLOTS } #endif + // Only add these options if supported by ksmserver + DCOPRef ksmref("ksmserver", "ksmserver"); + DCOPReply reply = ksmref.call("suspendOptions"); + + TQStringList suspendOptions; + if (reply.isValid()) { + reply.get(suspendOptions); + } + + if (suspendOptions.contains("freeze")) + DEF( I18N_NOOP("Freeze"), TDEShortcut(), TDEShortcut(), slotFreeze() ); + + if (suspendOptions.contains("suspend")) + DEF( I18N_NOOP("Suspend"), TDEShortcut(TQString("XF86Sleep")), TDEShortcut(TQString("XF86Sleep")), slotSuspend() ); + + if (suspendOptions.contains("hibernate")) + DEF( I18N_NOOP("Hibernate"), TDEShortcut(), TDEShortcut(), slotHibernate() ); + + if (suspendOptions.contains("hybridSuspend")) + DEF( I18N_NOOP("Hybrid Suspend"), TDEShortcut(), TDEShortcut(), slotHybridSuspend() ); + #undef DEF #undef DEF2 #undef WIN diff --git a/kdesktop/kdesktopshadowsettings.h b/kdesktop/kdesktopshadowsettings.h index c7e73db71..3c08cd574 100644 --- a/kdesktop/kdesktopshadowsettings.h +++ b/kdesktop/kdesktopshadowsettings.h @@ -24,7 +24,7 @@ #define __FX_DATA_DESKTOP #include <tqcolor.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeconfig.h> #include <kshadowsettings.h> diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cpp index d5b7ebbb1..70f1010b7 100644 --- a/kdesktop/kdiconview.cc +++ b/kdesktop/kdiconview.cpp @@ -27,7 +27,7 @@ #include <tdeapplication.h> #include <kcolordrag.h> #include <kdebug.h> -#include <kdesktopfile.h> +#include <tdedesktopfile.h> #include <kdirlister.h> #include <tdeglobalsettings.h> #include <kpropertiesdialog.h> @@ -42,7 +42,7 @@ #include <kivfreespaceoverlay.h> #include <kprotocolinfo.h> #include <kstdaction.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <kurldrag.h> #include <twin.h> #include <twinmodule.h> @@ -74,7 +74,7 @@ TQRect KDIconView::desktopRect() // ----------------------------------------------------------------------------- -void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y) +void KDIconView::saveIconPosition(TDESimpleConfig *config, int x, int y) { // save the icon position in absolute coordinates config->writeEntry("Xabs", x); @@ -90,7 +90,7 @@ void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y) // ----------------------------------------------------------------------------- -void KDIconView::readIconPosition(KSimpleConfig *config, int &x, int &y) +void KDIconView::readIconPosition(TDESimpleConfig *config, int &x, int &y) { // check if we have the position for the current desktop size TQRect desk = desktopRect(); @@ -138,7 +138,7 @@ KDIconView::KDIconView( TQWidget *parent, const char* name ) m_bNeedSave( false ), m_autoAlign( false ), m_hasExistingPos( false ), - m_bEditableDesktopIcons( kapp->authorize("editable_desktop_icons") ), + m_bEditableDesktopIcons( tdeApp->authorize("editable_desktop_icons") ), m_bShowDot( false ), m_bVertAlign( true ), m_dirLister( 0L ), @@ -162,44 +162,42 @@ KDIconView::KDIconView( TQWidget *parent, const char* name ) // Initialize media handler mMediaListView = new TQListView(); - connect( TQApplication::clipboard(), TQT_SIGNAL(dataChanged()), this, TQT_SLOT(slotClipboardDataChanged()) ); + connect( TQApplication::clipboard(), TQ_SIGNAL(dataChanged()), this, TQ_SLOT(slotClipboardDataChanged()) ); setURL( desktopURL() ); // sets m_url m_desktopDirs = TDEGlobal::dirs()->findDirs( "appdata", "Desktop" ); initDotDirectories(); - connect( this, TQT_SIGNAL( executed( TQIconViewItem * ) ), - TQT_SLOT( slotExecuted( TQIconViewItem * ) ) ); - connect( this, TQT_SIGNAL( returnPressed( TQIconViewItem * ) ), - TQT_SLOT( slotReturnPressed( TQIconViewItem * ) ) ); - connect( this, TQT_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( executed( TQIconViewItem * ) ), + TQ_SLOT( slotExecuted( TQIconViewItem * ) ) ); + connect( this, TQ_SIGNAL( returnPressed( TQIconViewItem * ) ), + TQ_SLOT( slotReturnPressed( TQIconViewItem * ) ) ); + connect( this, TQ_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( enableAction( const char * , bool ) ), - TQT_SLOT( slotEnableAction( const char * , bool ) ) ); + connect( this, TQ_SIGNAL( enableAction( const char * , bool ) ), + TQ_SLOT( slotEnableAction( const char * , bool ) ) ); // Hack: KonqIconViewWidget::slotItemRenamed is not virtual :-( - disconnect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), - this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); - connect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), - this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); + disconnect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), + this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); + connect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), + this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); if (!m_bEditableDesktopIcons) { - setItemsMovable(false); - setAcceptDrops(false); - viewport()->setAcceptDrops(false); + setIconsLocked(true); } } KDIconView::~KDIconView() { - if (m_dotDirectory && !m_bEditableDesktopIcons) { + if (m_dotDirectory && !m_bEditableDesktopIcons || m_iconsLocked) { m_dotDirectory->rollback(false); // Don't save positions } @@ -228,7 +226,7 @@ void KDIconView::initDotDirectories() delete m_dotDirectory; - m_dotDirectory = new KSimpleConfig( dotFileName ); + m_dotDirectory = new TDESimpleConfig( dotFileName ); // If we don't allow editable desktop icons, empty m_dotDirectory if (!m_bEditableDesktopIcons) { @@ -250,7 +248,7 @@ void KDIconView::initDotDirectories() if (TQFile::exists(localDotFileName)) { - KSimpleConfig dotDir(localDotFileName, true); // Read only + TDESimpleConfig dotDir(localDotFileName, true); // Read only TQStringList groups = dotDir.groupList(); TQStringList::ConstIterator gIt = groups.begin(); @@ -296,6 +294,7 @@ void KDIconView::initConfig( bool init ) m_bVertAlign = KDesktopSettings::vertAlign(); TQStringList oldPreview = previewSettings(); setPreviewSettings( KDesktopSettings::preview() ); + setSpacing( KDesktopSettings::iconSpacing() ); // read arrange configuration m_eSortCriterion = (SortCriterion)KDesktopSettings::sortCriterion(); @@ -371,16 +370,16 @@ void KDIconView::start() m_bNeedSave = false; - connect( m_dirLister, TQT_SIGNAL( clear() ), this, TQT_SLOT( slotClear() ) ); - connect( m_dirLister, TQT_SIGNAL( started(const KURL&) ), this, TQT_SLOT( slotStarted(const KURL&) ) ); - connect( m_dirLister, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) ); - connect( m_dirLister, TQT_SIGNAL( newItems( const KFileItemList & ) ), this, TQT_SLOT( slotNewItems( const KFileItemList & ) ) ); - connect( m_dirLister, TQT_SIGNAL( deleteItem( KFileItem * ) ), this, TQT_SLOT( slotDeleteItem( KFileItem * ) ) ); - connect( m_dirLister, TQT_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQT_SLOT( slotRefreshItems( const KFileItemList & ) ) ); + connect( m_dirLister, TQ_SIGNAL( clear() ), this, TQ_SLOT( slotClear() ) ); + connect( m_dirLister, TQ_SIGNAL( started(const KURL&) ), this, TQ_SLOT( slotStarted(const KURL&) ) ); + connect( m_dirLister, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) ); + connect( m_dirLister, TQ_SIGNAL( newItems( const KFileItemList & ) ), this, TQ_SLOT( slotNewItems( const KFileItemList & ) ) ); + connect( m_dirLister, TQ_SIGNAL( deleteItem( KFileItem * ) ), this, TQ_SLOT( slotDeleteItem( KFileItem * ) ) ); + connect( m_dirLister, TQ_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQ_SLOT( slotRefreshItems( const KFileItemList & ) ) ); // Start the directory lister ! m_dirLister->setShowingDotFiles( m_bShowDot ); - kapp->allowURLAction("list", KURL(), url()); + tdeApp->allowURLAction("list", KURL(), url()); startDirLister(); createActions(); } @@ -421,35 +420,35 @@ void KDIconView::createActions() { if (m_bEditableDesktopIcons) { - TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQT_SLOT( undo() ), &m_actionCollection, "undo" ); - connect( KonqUndoManager::self(), TQT_SIGNAL( undoAvailable( bool ) ), - undo, TQT_SLOT( setEnabled( bool ) ) ); - connect( KonqUndoManager::self(), TQT_SIGNAL( undoTextChanged( const TQString & ) ), - undo, TQT_SLOT( setText( const TQString & ) ) ); + TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQ_SLOT( undo() ), &m_actionCollection, "undo" ); + connect( KonqUndoManager::self(), TQ_SIGNAL( undoAvailable( bool ) ), + undo, TQ_SLOT( setEnabled( bool ) ) ); + connect( KonqUndoManager::self(), TQ_SIGNAL( undoTextChanged( const TQString & ) ), + undo, TQ_SLOT( setText( const TQString & ) ) ); undo->setEnabled( KonqUndoManager::self()->undoAvailable() ); - TDEAction* paCut = KStdAction::cut( TQT_TQOBJECT(this), TQT_SLOT( slotCut() ), &m_actionCollection, "cut" ); + TDEAction* paCut = KStdAction::cut( this, TQ_SLOT( slotCut() ), &m_actionCollection, "cut" ); TDEShortcut cutShortCut = paCut->shortcut(); cutShortCut.remove( KKey( SHIFT + Key_Delete ) ); // used for deleting files paCut->setShortcut( cutShortCut ); - KStdAction::copy( TQT_TQOBJECT(this), TQT_SLOT( slotCopy() ), &m_actionCollection, "copy" ); - KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPaste() ), &m_actionCollection, "paste" ); - TDEAction *pasteTo = KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" ); + KStdAction::copy( this, TQ_SLOT( slotCopy() ), &m_actionCollection, "copy" ); + KStdAction::paste( this, TQ_SLOT( slotPaste() ), &m_actionCollection, "paste" ); + TDEAction *pasteTo = KStdAction::paste( this, TQ_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" ); pasteTo->setEnabled( false ); // only enabled during popupMenu() TDEShortcut reloadShortcut = TDEStdAccel::shortcut(TDEStdAccel::Reload); - new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, TQT_TQOBJECT(this), TQT_SLOT( refreshIcons() ), &m_actionCollection, "reload" ); + new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, this, TQ_SLOT( refreshIcons() ), &m_actionCollection, "reload" ); - (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, TQT_TQOBJECT(this), TQT_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" ); - (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, TQT_TQOBJECT(this), TQT_SLOT( slotProperties() ), &m_actionCollection, "properties" ); + (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, this, TQ_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" ); + (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, this, TQ_SLOT( slotProperties() ), &m_actionCollection, "properties" ); TDEAction* trash = new TDEAction( i18n( "&Move to Trash" ), "edittrash", Key_Delete, &m_actionCollection, "trash" ); - connect( trash, TQT_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ), - this, TQT_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) ); + connect( trash, TQ_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ), + this, TQ_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) ); TDEConfig config("kdeglobals", true, false); config.setGroup( "KDE" ); - (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, TQT_TQOBJECT(this), TQT_SLOT( slotDelete() ), &m_actionCollection, "del" ); + (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, this, TQ_SLOT( slotDelete() ), &m_actionCollection, "del" ); // Initial state of the actions (cut/copy/paste/...) slotSelectionChanged(); @@ -486,6 +485,30 @@ void KDIconView::lineupIcons() saveIconPositions(); } +void KDIconView::incIconSpacing() +{ + if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() ) + { + setSpacing( ( spacing() + 1 ) ); + lineupIcons(); + + KDesktopSettings::setIconSpacing( spacing() ); + KDesktopSettings::writeConfig(); + } +} + +void KDIconView::decIconSpacing() +{ + if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() && spacing() > 5 ) + { + setSpacing( ( spacing() - 1 ) ); + lineupIcons(); + + KDesktopSettings::setIconSpacing( spacing() ); + KDesktopSettings::writeConfig(); + } +} + void KDIconView::setAutoAlign( bool b ) { m_autoAlign = b; @@ -503,8 +526,8 @@ void KDIconView::setAutoAlign( bool b ) else { KRootWm::self()->startup = false; } - connect( this, TQT_SIGNAL( iconMoved() ), - this, TQT_SLOT( lineupIcons() ) ); + connect( this, TQ_SIGNAL( iconMoved() ), + this, TQ_SLOT( lineupIcons() ) ); } else { // change maxItemWidth, because when grid-align was active, it changed this for the grid @@ -512,11 +535,20 @@ void KDIconView::setAutoAlign( bool b ) setMaxItemWidth( TQMAX( TQMAX( sz, previewIconSize( iconSize() ) ), KonqFMSettings::settings()->iconTextWidth() ) ); setFont( font() ); // Force calcRect() - disconnect( this, TQT_SIGNAL( iconMoved() ), - this, TQT_SLOT( lineupIcons() ) ); + disconnect( this, TQ_SIGNAL( iconMoved() ), + this, TQ_SLOT( lineupIcons() ) ); } } +void KDIconView::setIconsLocked( bool lock ) +{ + m_iconsLocked = lock; + + setItemsMovable(!lock); + setAcceptDrops(!lock); + viewport()->setAcceptDrops(!lock); +} + void KDIconView::startDirLister() { // if desktop is resized before start() is called (XRandr) @@ -534,7 +566,7 @@ void KDIconView::startDirLister() u.setPath( *it ); m_mergeDirs.append( u ); // And start listing this dir right now - kapp->allowURLAction("list", KURL(), u); + tdeApp->allowURLAction("list", KURL(), u); m_dirLister->openURL( u, true ); } configureMedia(); @@ -618,7 +650,7 @@ void KDIconView::contentsMousePressEvent( TQMouseEvent *e ) if (!m_dirLister) return; //kdDebug(1204) << "KDIconView::contentsMousePressEvent" << endl; // TQIconView, as of Qt 2.2, doesn't emit mouseButtonPressed for LMB on background - if ( e->button() == Qt::LeftButton && KRootWm::self()->hasLeftButtonMenu() ) + if ( e->button() == TQt::LeftButton && KRootWm::self()->hasLeftButtonMenu() ) { TQIconViewItem *item = findItem( e->pos() ); if ( !item ) @@ -644,7 +676,22 @@ void KDIconView::wheelEvent( TQWheelEvent* e ) TQIconViewItem *item = findItem( e->pos() ); if ( !item ) { - emit wheelRolled( e->delta() ); + TQWheelEvent *we = static_cast<TQWheelEvent*>(e); + + if ( we->state() == ControlButton ) + { + if ( we->delta() >= 0 ) + incIconSpacing(); + else + decIconSpacing(); + + we->accept(); + } + else + { + emit wheelRolled( e->delta() ); + } + return; } @@ -684,7 +731,7 @@ void KDIconView::slotMouseButtonClickedKDesktop(int _button, TQIconViewItem* _it { if (!m_dirLister) return; //kdDebug(1204) << "KDIconView::slotMouseButtonClickedKDesktop" << endl; - if ( _item && _button == Qt::MidButton ) { + if ( _item && _button == TQt::MidButton ) { slotExecuted(_item); } } @@ -702,7 +749,7 @@ void KDIconView::slotReturnPressed( TQIconViewItem *item ) void KDIconView::slotExecuted( TQIconViewItem *item ) { - kapp->propagateSessionManager(); + tdeApp->propagateSessionManager(); m_lastDeletedIconPos = TQPoint(); // user action -> not renaming an icon if (item) { visualActivate(item); @@ -792,7 +839,7 @@ void KDIconView::saveMediaListView() appname = "kdesktop"; else appname.sprintf("kdesktop-screen-%d", konq_screen_number); - kapp->dcopClient()->send( appname, "KDesktopIface", "configure()", data ); + tdeApp->dcopClient()->send( appname, "KDesktopIface", "configure()", data ); delete g_pConfig; } @@ -851,7 +898,7 @@ bool KDIconView::deleteGlobalDesktopFiles() // Ignore these special files // Name URL Type OnlyShowIn - // My Documents kxdglauncher --xdgname DOCUMENTS Application TDE; + // My Documents XDG_DOCUMENTS_DIR Application TDE; // My Computer media:/ Link TDE; // My Network Places remote:/ Link TDE; // Printers [exec] kjobviewer --all --show %i %m Application TDE; @@ -859,7 +906,7 @@ bool KDIconView::deleteGlobalDesktopFiles() // Web Browser kfmclient openBrowser %u Application TDE; if ( isDesktopFile(fItem) ) { - KSimpleConfig cfg( fItem->url().path(), true ); + TDESimpleConfig cfg( fItem->url().path(), true ); cfg.setDesktopGroup(); if ( cfg.readEntry( "X-Trinity-BuiltIn" ) == "true" ) { removeBuiltinIcon(cfg.readEntry( "Name" )); @@ -867,7 +914,7 @@ bool KDIconView::deleteGlobalDesktopFiles() } } - KDesktopFile df(desktopPath + fItem->url().fileName()); + TDEDesktopFile df(desktopPath + fItem->url().fileName()); df.writeEntry("Hidden", true); df.sync(); @@ -900,7 +947,7 @@ void KDIconView::slotDelete() // Not to be confused with the global popup-menu, KRootWm, when doing RMB on the desktop void KDIconView::popupMenu( const TQPoint &_global, const KFileItemList& _items ) { - if (!kapp->authorize("action/kdesktop_rmb")) return; + if (!tdeApp->authorize("action/kdesktop_rmb")) return; if (!m_dirLister) return; if ( _items.count() == 1 ) m_popupURL = _items.getFirst()->url(); @@ -1015,7 +1062,7 @@ bool KDIconView::makeFriendlyText( KFileIVI *fileIVI ) if ( !desktopFile.isEmpty() ) { - KSimpleConfig cfg( desktopFile, true ); + TDESimpleConfig cfg( desktopFile, true ); cfg.setDesktopGroup(); if (cfg.readBoolEntry("Hidden")) { return false; @@ -1098,7 +1145,7 @@ void KDIconView::slotNewItems( const KFileItemList & entries ) if (m_nextItemPos.isNull() && !m_dotDirectory) { // Not found, we'll need to save the new pos kdDebug(1214)<<"Neither a drop position stored nor m_dotDirectory set"<<endl; - m_dotDirectory = new KSimpleConfig( dotDirectoryPath(), true ); + m_dotDirectory = new TDESimpleConfig( dotDirectoryPath(), true ); // recursion slotNewItems( entries ); delete m_dotDirectory; @@ -1359,7 +1406,7 @@ void KDIconView::refreshTrashIcon() KFileIVI * fileIVI = static_cast<KFileIVI *>(it); KFileItem* item = fileIVI->item(); if ( isDesktopFile( item ) ) { - KSimpleConfig cfg( item->url().path(), true ); + TDESimpleConfig cfg( item->url().path(), true ); cfg.setDesktopGroup(); if ( cfg.readEntry( "Type" ) == "Link" && cfg.readEntry( "URL" ) == "trash:/" ) { @@ -1399,7 +1446,7 @@ void KDIconView::showFreeSpaceOverlay(KFileIVI* item) if (!m_paOutstandingFreeSpaceOverlaysTimer) { m_paOutstandingFreeSpaceOverlaysTimer = new TQTimer(this); - connect(m_paOutstandingFreeSpaceOverlaysTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotFreeSpaceOverlayStart())); + connect(m_paOutstandingFreeSpaceOverlaysTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotFreeSpaceOverlayStart())); } m_paOutstandingFreeSpaceOverlaysTimer->start(20, true); } @@ -1419,7 +1466,7 @@ void KDIconView::slotFreeSpaceOverlayStart() if (overlay) { - connect( overlay, TQT_SIGNAL( finished() ), this, TQT_SLOT( slotFreeSpaceOverlayFinished() ) ); + connect( overlay, TQ_SIGNAL( finished() ), this, TQ_SLOT( slotFreeSpaceOverlayFinished() ) ); overlay->start(); // Watch out, may emit finished() immediately!! return; // Let it run.... } @@ -1531,7 +1578,7 @@ void KDIconView::slotClipboardDataChanged() void KDIconView::renameDesktopFile(const TQString &path, const TQString &name) { - KDesktopFile cfg( path, false ); + TDEDesktopFile cfg( path, false ); // if we don't have the desktop entry group, then we assume that // it's not a config file (and we don't nuke it!) @@ -1620,7 +1667,7 @@ void KDIconView::slotAboutToCreate(const TQPoint &pos, const TQValueList<TDEIO:: saveIconPosition(m_dotDirectory, m_lastDropPos.x(), m_lastDropPos.y()); int dX = m_lastDropPos.x() - m_dropPos.x(); int dY = m_lastDropPos.y() - m_dropPos.y(); - if ((QABS(dX) > QABS(dY)) || (m_lastDropPos.x() + 2*gridX > width())) + if ((TQABS(dX) > TQABS(dY)) || (m_lastDropPos.x() + 2*gridX > width())) m_lastDropPos = TQPoint(m_dropPos.x(), m_lastDropPos.y() + gridY); else m_lastDropPos = TQPoint(m_lastDropPos.x() + gridX, m_lastDropPos.y()); @@ -1726,25 +1773,25 @@ void KDIconView::viewportWheelEvent( TQWheelEvent * e ) void KDIconView::updateWorkArea( const TQRect &wr ) { m_gotIconsArea = true; // now we have it! - + if (( iconArea() == wr ) && (m_needDesktopAlign == false)) { // nothing changed; avoid repaint/saveIconPosition ... return; } - + TQRect oldArea = iconArea(); setIconArea( wr ); - + kdDebug(1204) << "KDIconView::updateWorkArea wr: " << wr.x() << "," << wr.y() << " " << wr.width() << "x" << wr.height() << endl; kdDebug(1204) << " oldArea: " << oldArea.x() << "," << oldArea.y() << " " << oldArea.width() << "x" << oldArea.height() << endl; - + bool needRepaint = false; TQIconViewItem* item; int dx, dy; - + dx = wr.left() - oldArea.left(); dy = wr.top() - oldArea.top(); - + if ( dx != 0 || dy != 0 ) { if ( (dx > 0) || (dy > 0) ) { // the iconArea was shifted right/down; less space now @@ -1762,14 +1809,14 @@ void KDIconView::updateWorkArea( const TQRect &wr ) // the iconArea was shifted left/up; more space now - use it needRepaint = true; } - + if ( needRepaint ) { for ( item = firstItem(); item; item = item->nextItem() ) { item->moveBy( dx, dy ); } } } - + for ( item = firstItem(); item; item = item->nextItem() ) { TQRect r( item->rect() ); int dx = 0, dy = 0; @@ -1785,11 +1832,11 @@ void KDIconView::updateWorkArea( const TQRect &wr ) } } if ( needRepaint ) { - viewport()->repaint( FALSE ); - repaint( FALSE ); + viewport()->repaint( false ); + repaint( false ); saveIconPositions(); } - + m_needDesktopAlign = false; lineupIcons(); } @@ -1858,21 +1905,21 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect &curre if (area.isNull()) area = iconArea(); // If the proposed item rect is not contained by the desktop, by definition the item position is not free! - if (!area.contains(r, FALSE)) { + if (!area.contains(r, false)) { return false; } - + TQIconViewItem *it = firstItem(); for (; it; it = it->nextItem() ) { if ( !it->rect().isValid() || it == item ) { continue; } - + if ( it->intersects( r ) ) { return false; } } - + return true; } @@ -1882,7 +1929,7 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect, if (area.isNull()) area = iconArea(); // If the proposed item rect is not contained by the desktop, by definition the item position is not free! - if (!area.contains(rect, FALSE)) { + if (!area.contains(rect, false)) { return false; } @@ -1891,12 +1938,12 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect, if ( !rect.isValid() || it == item ) { continue; } - + if ( it->intersects( rect ) ) { return false; } } - + return true; } @@ -1921,12 +1968,12 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect ¤tI m_lastDeletedIconPos = TQPoint(); return; } - + //try to find a free place to put the item, honouring the m_bVertAlign property TQRect rect=item->rect(); if (m_bVertAlign) { kdDebug(1214)<<"moveToFreePosition for vertical alignment"<<endl; - + rect.moveTopLeft(TQPoint(currentIconArea.x()+spacing(),currentIconArea.y()+spacing())); do { success=false; @@ -1939,7 +1986,7 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect ¤tI break; } } - + if (!success) { rect.moveTopLeft(TQPoint(rect.right()+spacing(),spacing())); } diff --git a/kdesktop/kdiconview.h b/kdesktop/kdiconview.h index 7b20e1817..7ef8d4889 100644 --- a/kdesktop/kdiconview.h +++ b/kdesktop/kdiconview.h @@ -33,7 +33,7 @@ class KDirLister; class KonqSettings; -class KSimpleConfig; +class TDESimpleConfig; class TDEAccel; class KShadowEngine; class KDesktopShadowSettings; @@ -48,7 +48,7 @@ class KDesktopShadowSettings; */ class KDIconView : public KonqIconViewWidget, public KDirNotify { - Q_OBJECT + TQ_OBJECT public: KDIconView( TQWidget *parent, const char* name = 0L ); @@ -75,6 +75,7 @@ public: void lineupIcons(TQIconView::Arrangement); + void setIconsLocked( bool b ); void setAutoAlign( bool b ); TQStringList selectedURLs(); @@ -165,6 +166,9 @@ public slots: void slotClear(); void refreshIcons(); + void incIconSpacing(); + void decIconSpacing(); + protected slots: void slotFreeSpaceOverlayStart(); void slotFreeSpaceOverlayFinished(); @@ -201,8 +205,8 @@ private: void refreshTrashIcon(); static TQRect desktopRect(); - static void saveIconPosition(KSimpleConfig *config, int x, int y); - static void readIconPosition(KSimpleConfig *config, int &x, int &y); + static void saveIconPosition(TDESimpleConfig *config, int x, int y); + static void readIconPosition(TDESimpleConfig *config, int &x, int &y); void showFreeSpaceOverlay(KFileIVI* item); @@ -214,6 +218,7 @@ private: bool m_bNeedRepaint; bool m_bNeedSave; + bool m_iconsLocked; bool m_autoAlign; /** true if even one icon has an icon-position entry in the .directory */ @@ -238,7 +243,7 @@ private: TQStringList m_desktopDirs; /** The desktop's .directory, used for storing icon positions */ - KSimpleConfig *m_dotDirectory; + TDESimpleConfig *m_dotDirectory; /** Position of last deleted icon - used when renaming a file */ TQPoint m_lastDeletedIconPos; diff --git a/kdesktop/krootwm.cc b/kdesktop/krootwm.cpp index c14d1326c..9e751d573 100644 --- a/kdesktop/krootwm.cc +++ b/kdesktop/krootwm.cpp @@ -1,5 +1,5 @@ /* - * krootwm.cc Part of the KDE project. + * krootwm.cpp Part of the KDE project. * * Copyright (C) 1997 Matthias Ettrich * (C) 1997 Torben Weis, weis@kde.org @@ -32,8 +32,8 @@ #include <dirent.h> #include <errno.h> -#include <kprocess.h> -#include <kstandarddirs.h> +#include <tdeprocess.h> +#include <tdestandarddirs.h> #include <tdepopupmenu.h> #include <tdeapplication.h> #include <tdeconfig.h> @@ -52,7 +52,7 @@ #include <tdemessagebox.h> #include <kuser.h> #include <tqfile.h> -#include <ntqthread.h> +#include <tqthread.h> #include <tqeventloop.h> #include "krootwm.h" @@ -72,7 +72,7 @@ KRootWm * KRootWm::s_rootWm = 0; extern TQCString kdesktop_name, kicker_name, twin_name; -KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(FALSE) +KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(false) { s_rootWm = this; m_actionCollection = new TDEActionCollection(_desktop, this, "KRootWm::m_actionCollection"); @@ -86,16 +86,16 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), // Creates the new menu menuBar = 0; // no menubar yet menuNew = 0; - if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons")) + if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons")) { menuNew = new KNewMenu( m_actionCollection, "new_menu" ); - connect(menuNew->popupMenu(), TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotFileNewAboutToShow() ) ); - connect( menuNew, TQT_SIGNAL( activated() ), - m_pDesktop->iconView(), TQT_SLOT( slotNewMenuActivated() ) ); + connect(menuNew->popupMenu(), TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotFileNewAboutToShow() ) ); + connect( menuNew, TQ_SIGNAL( activated() ), + m_pDesktop->iconView(), TQ_SLOT( slotNewMenuActivated() ) ); } - if (kapp->authorizeTDEAction("bookmarks")) + if (tdeApp->authorizeTDEAction("bookmarks")) { bookmarks = new TDEActionMenu( i18n("Bookmarks"), "bookmark", m_actionCollection, "bookmarks" ); // The KBookmarkMenu is needed to fill the Bookmarks menu in the desktop menubar. @@ -109,13 +109,13 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), bookmarks = 0; bookmarkMenu = 0; } - + // The windowList and desktop menus can be part of a menubar (Mac style) // so we create them here desktopMenu = new TQPopupMenu; windowListMenu = new KWindowListMenu; - connect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); + connect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); // Create the actions #if 0 @@ -132,82 +132,82 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), } #endif - if (kapp->authorize("run_command")) + if (tdeApp->authorize("run_command")) { - new TDEAction(i18n("Run Command..."), "system-run", 0, TQT_TQOBJECT(m_pDesktop), TQT_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" ); - new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQT_SLOT( slotOpenTerminal() ), + new TDEAction(i18n("Run Command..."), "system-run", 0, m_pDesktop, TQ_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" ); + new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQ_SLOT( slotOpenTerminal() ), m_actionCollection, "open_terminal" ); } if (!TDEGlobal::config()->isImmutable()) { - new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQT_SLOT( slotConfigureDesktop() ), + new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQ_SLOT( slotConfigureDesktop() ), m_actionCollection, "configdesktop" ); - new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQT_SLOT( slotToggleDesktopMenu() ), + new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQ_SLOT( slotToggleDesktopMenu() ), m_actionCollection, "togglemenubar" ); } - new TDEAction(i18n("Unclutter Windows"), 0, this, TQT_SLOT( slotUnclutterWindows() ), + new TDEAction(i18n("Unclutter Windows"), 0, this, TQ_SLOT( slotUnclutterWindows() ), m_actionCollection, "unclutter" ); - new TDEAction(i18n("Cascade Windows"), 0, this, TQT_SLOT( slotCascadeWindows() ), + new TDEAction(i18n("Cascade Windows"), 0, this, TQ_SLOT( slotCascadeWindows() ), m_actionCollection, "cascade" ); // arrange menu actions - if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons")) + if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons")) { - new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCS() ), + new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCS() ), m_actionCollection, "sort_ncs"); - new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCI() ), + new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCI() ), m_actionCollection, "sort_nci"); - new TDEAction(i18n("By Size"), 0, this, TQT_SLOT( slotArrangeBySize() ), + new TDEAction(i18n("By Size"), 0, this, TQ_SLOT( slotArrangeBySize() ), m_actionCollection, "sort_size"); - new TDEAction(i18n("By Type"), 0, this, TQT_SLOT( slotArrangeByType() ), + new TDEAction(i18n("By Type"), 0, this, TQ_SLOT( slotArrangeByType() ), m_actionCollection, "sort_type"); - new TDEAction(i18n("By Date"), 0, this, TQT_SLOT( slotArrangeByDate() ), + new TDEAction(i18n("By Date"), 0, this, TQ_SLOT( slotArrangeByDate() ), m_actionCollection, "sort_date"); TDEToggleAction *aSortDirsFirst = new TDEToggleAction( i18n("Directories First"), 0, m_actionCollection, "sort_directoriesfirst" ); - connect( aSortDirsFirst, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleDirFirst( bool ) ) ); + connect( aSortDirsFirst, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleDirFirst( bool ) ) ); new TDEAction(i18n("Line Up Horizontally"), 0, - this, TQT_SLOT( slotLineupIconsHoriz() ), + this, TQ_SLOT( slotLineupIconsHoriz() ), m_actionCollection, "lineupHoriz" ); new TDEAction(i18n("Line Up Vertically"), 0, - this, TQT_SLOT( slotLineupIconsVert() ), + this, TQ_SLOT( slotLineupIconsVert() ), m_actionCollection, "lineupVert" ); TDEToggleAction *aAutoAlign = new TDEToggleAction(i18n("Align to Grid"), 0, m_actionCollection, "realign" ); - connect( aAutoAlign, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleAutoAlign( bool ) ) ); + connect( aAutoAlign, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleAutoAlign( bool ) ) ); TDEToggleAction *aLockIcons = new TDEToggleAction(i18n("Lock in Place"), 0, m_actionCollection, "lock_icons"); - connect( aLockIcons, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleLockIcons( bool ) ) ); + connect( aLockIcons, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleLockIcons( bool ) ) ); } if (m_bDesktopEnabled) { - new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQT_SLOT( slotRefreshDesktop() ), + new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQ_SLOT( slotRefreshDesktop() ), m_actionCollection, "refresh" ); } // Icons in sync with kicker - if (kapp->authorize("lock_screen")) + if (tdeApp->authorize("lock_screen")) { - new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQT_SLOT( slotLock() ), + new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQ_SLOT( slotLock() ), m_actionCollection, "lock" ); } - if (kapp->authorize("logout")) + if (tdeApp->authorize("logout")) { new TDEAction(i18n("Log Out \"%1\"...").arg(KUser().loginName()), "system-log-out", 0, - this, TQT_SLOT( slotLogout() ), m_actionCollection, "logout" ); + this, TQ_SLOT( slotLogout() ), m_actionCollection, "logout" ); } - if (kapp->authorize("start_new_session") && DM().isSwitchable()) + if (tdeApp->authorize("start_new_session") && DM().isSwitchable()) { new TDEAction(i18n("Start New Session"), "fork", 0, this, - TQT_SLOT( slotNewSession() ), m_actionCollection, "newsession" ); - if (kapp->authorize("lock_screen")) + TQ_SLOT( slotNewSession() ), m_actionCollection, "newsession" ); + if (tdeApp->authorize("lock_screen")) { new TDEAction(i18n("Lock Current && Start New Session"), "system-lock-screen", 0, this, - TQT_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" ); + TQ_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" ); } } @@ -249,8 +249,8 @@ void KRootWm::initConfig() // Read configuration for icons alignment if ( m_bDesktopEnabled ) { m_pDesktop->iconView()->setAutoAlign( KDesktopSettings::autoLineUpIcons() ); - if ( kapp->authorize( "editable_desktop_icons" ) ) { - m_pDesktop->iconView()->setItemsMovable( !KDesktopSettings::lockIcons() ); + if ( tdeApp->authorize( "editable_desktop_icons" ) ) { + m_pDesktop->iconView()->setIconsLocked( KDesktopSettings::lockIcons() ); TDEToggleAction *aLockIcons = static_cast<TDEToggleAction*>(m_actionCollection->action("lock_icons")); if (aLockIcons) aLockIcons->setChecked( KDesktopSettings::lockIcons() ); @@ -314,8 +314,8 @@ void KRootWm::buildMenus() if (m_actionCollection->action("newsession")) { sessionsMenu = new TQPopupMenu; - connect( sessionsMenu, TQT_SIGNAL(aboutToShow()), TQT_SLOT(slotPopulateSessions()) ); - connect( sessionsMenu, TQT_SIGNAL(activated(int)), TQT_SLOT(slotSessionActivated(int)) ); + connect( sessionsMenu, TQ_SIGNAL(aboutToShow()), TQ_SLOT(slotPopulateSessions()) ); + connect( sessionsMenu, TQ_SIGNAL(activated(int)), TQ_SLOT(slotSessionActivated(int)) ); } if (menuBar) { @@ -450,7 +450,7 @@ void KRootWm::buildMenus() TQPopupMenu* pWindowOperationsMenu = new TQPopupMenu; m_actionCollection->action("cascade")->plug( pWindowOperationsMenu ); m_actionCollection->action("unclutter")->plug( pWindowOperationsMenu ); - desktopMenu->insertItem(SmallIconSet("window_list"), i18n("Windows"), pWindowOperationsMenu); + desktopMenu->insertItem(SmallIconSet("window_duplicate"), i18n("Windows"), pWindowOperationsMenu); if (m_bDesktopEnabled) { @@ -464,7 +464,7 @@ void KRootWm::buildMenus() } int lastSep = desktopMenu->insertSeparator(); - if (sessionsMenu && kapp->authorize("switch_user")) + if (sessionsMenu && tdeApp->authorize("switch_user")) { desktopMenu->insertItem(SmallIconSet("switchuser" ), i18n("Switch User"), sessionsMenu); needSeparator = true; @@ -489,7 +489,7 @@ void KRootWm::buildMenus() desktopMenu->removeItem(lastSep); } - connect( desktopMenu, TQT_SIGNAL( aboutToShow() ), this, TQT_SLOT( slotFileNewAboutToShow() ) ); + connect( desktopMenu, TQ_SIGNAL( aboutToShow() ), this, TQ_SLOT( slotFileNewAboutToShow() ) ); if (menuBar) { menuBar->insertItem(i18n("File"), file); @@ -609,16 +609,16 @@ void KRootWm::mousePressed( const TQPoint& _global, int _button ) { if (!desktopMenu) return; // initialisation not yet done switch ( _button ) { - case Qt::LeftButton: + case TQt::LeftButton: if ( m_bShowMenuBar && menuBar ) menuBar->raise(); activateMenu( leftButtonChoice, _global ); break; - case Qt::MidButton: + case TQt::MidButton: activateMenu( middleButtonChoice, _global ); break; - case Qt::RightButton: - if (!kapp->authorize("action/kdesktop_rmb")) return; + case TQt::RightButton: + if (!tdeApp->authorize("action/kdesktop_rmb")) return; activateMenu( rightButtonChoice, _global ); break; default: @@ -637,13 +637,13 @@ void KRootWm::slotWindowList() { else r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos())); windowListMenu->init(); - disconnect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice + disconnect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice // windowListMenu->rect() is not valid before showing, use sizeHint() windowListMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), windowListMenu->sizeHint()).center()); windowListMenu->selectActiveWindow(); // make the popup more useful - connect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); + connect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); } void KRootWm::slotSwitchUser() { @@ -657,11 +657,11 @@ void KRootWm::slotSwitchUser() { else r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos())); slotPopulateSessions(); - disconnect( sessionsMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice + disconnect( sessionsMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice sessionsMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), sessionsMenu->sizeHint()).center()); - connect( sessionsMenu, TQT_SIGNAL( aboutToShow() ), - TQT_SLOT( slotPopulateSessions() ) ); + connect( sessionsMenu, TQ_SIGNAL( aboutToShow() ), + TQ_SLOT( slotPopulateSessions() ) ); } void KRootWm::slotArrangeByNameCS() @@ -732,12 +732,24 @@ void KRootWm::slotLineupIcons() { void KRootWm::slotToggleLockIcons( bool lock ) { - if (m_bDesktopEnabled) - { - m_pDesktop->iconView()->setItemsMovable( !lock ); - KDesktopSettings::setLockIcons( lock ); - KDesktopSettings::writeConfig(); - } + KDesktopSettings::setLockIcons( lock ); + KDesktopSettings::writeConfig(); + + // Also save it globally... + int desktop = TDEApplication::desktop()->primaryScreen(); + TQCString cfilename; + if (desktop == 0) + cfilename = "kdesktoprc"; + else + cfilename.sprintf("kdesktop-screen-%drc", desktop); + + TDEConfig *kdg_config = new TDEConfig(cfilename, false, false); + kdg_config->setGroup( "General" ); + kdg_config->writeEntry( "LockIcons", lock ); + kdg_config->sync(); + delete kdg_config; + + m_pDesktop->iconView()->setIconsLocked( lock ); } void KRootWm::slotRefreshDesktop() { @@ -763,8 +775,8 @@ void KRootWm::slotOpenTerminal() TDEConfigGroupSaver gs(TDEGlobal::config(), "General"); TQString terminal = TDEGlobal::config()->readPathEntry("TerminalApplication", "konsole"); - *p << terminal << "--workdir=" + TDEGlobalSettings::desktopPath() + "/"; - + *p << terminal; + p->setWorkingDirectory(TDEGlobalSettings::desktopPath()); p->start(TDEProcess::DontCare); delete p; @@ -774,12 +786,12 @@ void KRootWm::slotConfigureDesktop() { if (!m_configDialog) { m_configDialog = new KCMultiDialog( (TQWidget*)0, "configureDialog" ); - connect(m_configDialog, TQT_SIGNAL(finished()), this, TQT_SLOT(slotConfigClosed())); + connect(m_configDialog, TQ_SIGNAL(finished()), this, TQ_SLOT(slotConfigClosed())); TQStringList modules = configModules(); for (TQStringList::const_iterator it = modules.constBegin(); it != modules.constEnd(); ++it) { - if (kapp->authorizeControlModule(*it)) + if (tdeApp->authorizeControlModule(*it)) { m_configDialog->addModule(*it); } @@ -803,22 +815,22 @@ void KRootWm::slotToggleDesktopMenu() KDesktopSettings::writeConfig(); TQByteArray data; - kapp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data); + tdeApp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data); // for the standalone menubar setting - kapp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data ); - kapp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data ); - kapp->dcopClient()->send( "twin*", "", "reconfigure()", data ); + tdeApp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data ); + tdeApp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data ); + tdeApp->dcopClient()->send( "twin*", "", "reconfigure()", data ); } void KRootWm::slotUnclutterWindows() { - kapp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString("")); + tdeApp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString("")); } void KRootWm::slotCascadeWindows() { - kapp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString("")); + tdeApp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString("")); } @@ -828,7 +840,7 @@ void KRootWm::slotLock() { void KRootWm::slotSave() { - kapp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString("")); + tdeApp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString("")); } diff --git a/kdesktop/krootwm.h b/kdesktop/krootwm.h index 8fb5af8b9..efdd64c3e 100644 --- a/kdesktop/krootwm.h +++ b/kdesktop/krootwm.h @@ -64,7 +64,7 @@ class KRootWmThreadHelperObject; * This class is the handler for the menus (root popup menu and desktop menubar) */ class KRootWm: public TQObject { - Q_OBJECT + TQ_OBJECT public: KRootWm(SaverEngine*, KDesktop*); @@ -80,7 +80,7 @@ public: static KRootWm * self() { return s_rootWm; } /** - * share this with desktop.cc + * share this with desktop.cpp */ KNewMenu * newMenu() const { return menuNew; } diff --git a/kdesktop/kwebdesktop/CMakeLists.txt b/kdesktop/kwebdesktop/CMakeLists.txt index 741b8df34..34b84dc11 100644 --- a/kdesktop/kwebdesktop/CMakeLists.txt +++ b/kdesktop/kwebdesktop/CMakeLists.txt @@ -23,7 +23,11 @@ link_directories( ##### other data ################################ -install( FILES kwebdesktop.desktop DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs ) +tde_create_translated_desktop( + SOURCE kwebdesktop.desktop + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs + PO_DIR kdesktop-desktops +) install( FILES kwebdesktop.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) diff --git a/kdesktop/kwebdesktop/kwebdesktop.cpp b/kdesktop/kwebdesktop/kwebdesktop.cpp index 1e2499ea2..37358f758 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.cpp +++ b/kdesktop/kwebdesktop/kwebdesktop.cpp @@ -52,10 +52,10 @@ KWebDesktopRun::KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url ) { kdDebug() << "KWebDesktopRun::KWebDesktopRun starting get" << endl; TDEIO::Job * job = TDEIO::get(m_url, false, false); - connect( job, TQT_SIGNAL( result( TDEIO::Job *)), - this, TQT_SLOT( slotFinished(TDEIO::Job *))); - connect( job, TQT_SIGNAL( mimetype( TDEIO::Job *, const TQString &)), - this, TQT_SLOT( slotMimetype(TDEIO::Job *, const TQString &))); + connect( job, TQ_SIGNAL( result( TDEIO::Job *)), + this, TQ_SLOT( slotFinished(TDEIO::Job *))); + connect( job, TQ_SIGNAL( mimetype( TDEIO::Job *, const TQString &)), + this, TQ_SLOT( slotMimetype(TDEIO::Job *, const TQString &))); } void KWebDesktopRun::slotMimetype( TDEIO::Job *job, const TQString &_type ) @@ -79,7 +79,7 @@ void KWebDesktopRun::slotFinished( TDEIO::Job * job ) if (job->error()) { kdDebug() << job->errorString() << endl; - kapp->exit(1); + tdeApp->exit(1); } } @@ -141,7 +141,7 @@ void KWebDesktop::slotCompleted() TQPixmap snapshot = TQPixmap::grabWidget( m_part->widget() ); snapshot.save( m_imageFile, "PNG" ); // And terminate the app. - kapp->quit(); + tdeApp->quit(); } KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) @@ -166,7 +166,7 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) ((TQScrollView *)htmlPart->widget())->setHScrollBarMode( TQScrollView::AlwaysOff ); ((TQScrollView *)htmlPart->widget())->setVScrollBarMode( TQScrollView::AlwaysOff ); - connect( htmlPart, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) ); + connect( htmlPart, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) ); m_part = htmlPart; } else { // Try to find an appropriate viewer component @@ -176,13 +176,13 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) kdWarning() << "No handler found for " << mimeType << endl; else { kdDebug() << "Loaded " << m_part->className() << endl; - connect( m_part, TQT_SIGNAL( completed() ), - this, TQT_SLOT( slotCompleted() ) ); + connect( m_part, TQ_SIGNAL( completed() ), + this, TQ_SLOT( slotCompleted() ) ); } } if ( m_part ) { - connect( m_part, TQT_SIGNAL( canceled(const TQString &) ), - this, TQT_SLOT( slotCompleted() ) ); + connect( m_part, TQ_SIGNAL( canceled(const TQString &) ), + this, TQ_SLOT( slotCompleted() ) ); } return m_part; } diff --git a/kdesktop/kwebdesktop/kwebdesktop.desktop b/kdesktop/kwebdesktop/kwebdesktop.desktop index a60c009d0..b7d271879 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.desktop +++ b/kdesktop/kwebdesktop/kwebdesktop.desktop @@ -1,79 +1,5 @@ [TDE Desktop Program] Comment=TDE Web Desktop -Comment[af]=TDE Web Werkskerm -Comment[ar]=سطح المكتب TDE للشبكة -Comment[az]=TDE Veb Masa üstü -Comment[be]=Працоўны стол Web -Comment[bn]=কে.ডি.ই. ওয়েব ডেস্কটপ -Comment[br]=Burev gwiad TDE -Comment[bs]=TDE Web radna površina -Comment[ca]=Escriptori Web TDE -Comment[cs]=Aktivní plocha TDE -Comment[csb]=Pùlt w sztélu sécë WWW -Comment[cy]=Penbwrdd Gwe TDE -Comment[da]=TDE-net-desktop -Comment[de]=TDE-Web-Arbeitsfläche -Comment[el]=Επιφάνεια εργασίας Ιστού του TDE -Comment[eo]=TDEa TTT-tabulo -Comment[es]=Escritorio Web para TDE -Comment[et]=TDE veebitöölaud -Comment[eu]=TDE web mahaigaina -Comment[fa]=رومیزی وب TDE -Comment[fi]=TDE:n web-työpöytä -Comment[fr]=Bureau web de TDE -Comment[fy]=TDE Web Buroblêd -Comment[gl]=Escritório Web de TDE -Comment[he]=שולחן העבודה האינטרנטי של TDE -Comment[hi]=केडीई वेब डेस्कटॉप -Comment[hr]=TDE web radna površina -Comment[hu]=TDE internetes munkaasztal -Comment[id]=Desktop Web TDE -Comment[is]=TDE vefskjáborð -Comment[it]=Desktop Web di TDE -Comment[ja]=TDE ウェブデスクトップ -Comment[ka]=TDE ვებ სამუშაო დაფა -Comment[km]=ផ្ទៃតុបណ្ដាញ TDE -Comment[lo]=ພື້ນທີ່ທຳງານບົນເວ໊ບ TDE -Comment[lt]=TDE žiniatinklio darbastalis -Comment[lv]=TDE Web Darbvirsma -Comment[mk]=TDE веб-површина -Comment[mn]=КДЭ-Вэб-Ажлын тавцан -Comment[ms]=Desktop Web TDE -Comment[mt]=Desktop Web TDE -Comment[nb]=TDE nettskrivebord -Comment[nds]=TDE-Nettschriefdisch -Comment[ne]=TDE वेब डेस्कटप -Comment[nl]=TDE Web Bureaublad -Comment[nn]=TDE Vevskrivebord -Comment[nso]=Desktop ya Web ya TDE -Comment[oc]=BurèU Web TDE -Comment[pa]=TDE ਵੈੱਬ ਵੇਹੜਾ -Comment[pl]=Pulpit w stylu sieci WWW -Comment[pt]=Ecrã Web do TDE -Comment[pt_BR]=Área de Trabalho Web do TDE -Comment[ro]=Ecran web pentru TDE -Comment[rw]=TDE Ibiro Rubugamakuru -Comment[se]=TDE Web-čállinbeavdi -Comment[sk]=TDE Web pracovná plocha -Comment[sl]=Spletno namizje TDE -Comment[sr]=TDE веб радна површина -Comment[sr@Latn]=TDE veb radna površina -Comment[sv]=TDE-webbskrivbord -Comment[ta]=TDE வலை மேல்மேசை -Comment[te]=కెడిఈ వెబ్ రంగస్థలం -Comment[tg]=Мизи кории TDE Вэб -Comment[th]=พื้นที่ทำงาน TDE แบบเว็บ -Comment[tr]=TDE Web Masaüstü -Comment[tt]=TDE Web Östäl -Comment[uk]=Стільниця "а ля Web" для TDE -Comment[uz]=TDE veb-ish stoli -Comment[uz@cyrillic]=TDE веб-иш столи -Comment[ven]=Webe ya desikithopo ya TDE -Comment[vi]=màn hình nền kiểu trang mạng của TDE -Comment[wa]=Sicribanne waibe TDE -Comment[zh_CN]=TDE Web 桌面 -Comment[zh_TW]=TDE 網頁桌面 -Comment[zu]=I-Desktop ye-Web ye-TDE Executable=kwebdesktop Command=kwebdesktop %x %y %f http://www.kde.org/ PreviewCommand=kwebdesktop %x %y %f http://www.kde.org/ diff --git a/kdesktop/kwebdesktop/kwebdesktop.h b/kdesktop/kwebdesktop/kwebdesktop.h index 2641378cf..686e40297 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.h +++ b/kdesktop/kwebdesktop/kwebdesktop.h @@ -28,7 +28,7 @@ namespace TDEIO { class Job; } class KWebDesktop : public TQObject { - Q_OBJECT + TQ_OBJECT public: KWebDesktop( TQObject* parent, const TQCString & imageFile, int width, int height ) : TQObject( parent ), @@ -51,9 +51,9 @@ private: }; -class KWebDesktopRun : public QObject +class KWebDesktopRun : public TQObject { - Q_OBJECT + TQ_OBJECT public: KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url ); ~KWebDesktopRun() {} diff --git a/kdesktop/kwebdesktop/kwebdesktop.kcfg b/kdesktop/kwebdesktop/kwebdesktop.kcfg index b0920f410..b9a1edbb5 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.kcfg +++ b/kdesktop/kwebdesktop/kwebdesktop.kcfg @@ -11,7 +11,7 @@ <default>http://www.kde.org/</default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:1103 --> + <!-- kdiconview.cpp:1103 --> <!-- cfg.readEntry( "URL" ) == "trash:/" ) { --> </entry> </group> diff --git a/kdesktop/kxdglauncher.cpp b/kdesktop/kxdglauncher.cpp deleted file mode 100644 index 9d689d95f..000000000 --- a/kdesktop/kxdglauncher.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2010 Timothy Pearson <kb9vqf@pearsoncomputing.net> - - 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 <tqfile.h> -#include <tqdir.h> -#include <tqtimer.h> -#include <tqstring.h> -#include <tqtextcodec.h> - -#include <krun.h> -#include <tdefile.h> -#include <tdelocale.h> -#include <tdeapplication.h> -#include <tdecmdlineargs.h> -#include <tdeglobalsettings.h> -#include <kinputdialog.h> -#include <tdemessagebox.h> -#include <tdeconfig.h> -#include <kurlrequester.h> -#include <kurlrequesterdlg.h> - -#include <stdlib.h> - -#include "kxdglauncher.h" - -// helper function for reading xdg user dirs: it is required for obvious reasons -void readXdgUserDirs(TQString *desktop, TQString *documents) -{ - TQFile f( TQDir::homeDirPath() + "/.config/user-dirs.dirs" ); - - if (!f.open(IO_ReadOnly)) - return; - - // set the codec for the current locale - TQTextStream s(&f); - s.setCodec( TQTextCodec::codecForLocale() ); - - TQString line = s.readLine(); - while (!line.isNull()) - { - if (line.startsWith("XDG_DESKTOP_DIR=")) { - *desktop = TQString(line.remove("XDG_DESKTOP_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath()); - } - else if (line.startsWith("XDG_DOCUMENTS_DIR=")) { - *documents = TQString(line.remove("XDG_DOCUMENTS_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath()); - } - - line = s.readLine(); - } -} - -TQString getDocumentPath() -{ - TQString s_desktopPath; - TQString s_documentPath; - - readXdgUserDirs(&s_desktopPath, &s_documentPath); - - if (s_documentPath.isEmpty() == true) { -#ifdef Q_WS_WIN - s_documentPath = getWin32ShellFoldersPath("Personal"); -#else - s_documentPath = TQDir::homeDirPath() + "/Documents/"; -#endif - } - s_documentPath = TQDir::cleanDirPath( s_documentPath ); - if ( !s_documentPath.endsWith("/")) - s_documentPath.append('/'); - - return s_documentPath; -} - -static TDECmdLineOptions options[] = -{ - { "xdgname <argument>", I18N_NOOP("XDG variable name to open"), 0 }, - { "getpath", I18N_NOOP("Do not launch Konqueror; instead print path to directory if it exists)"), 0 }, - TDECmdLineLastOption -}; - -int main( int argc, char **argv) -{ - TDECmdLineArgs::init( argc, argv, "kxdglauncher", I18N_NOOP("TDE XDG File Browser Launcher and Prompter"), I18N_NOOP("Prompts if directory does not exist, otherwise launches"), "1.0" ); - TDECmdLineArgs::addCmdLineOptions( options ); - TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); - - TDEApplication app; - app.disableSessionManagement(); - - if (args->isSet( "xdgname" ) == true) { - TQString desiredFolder = args->getOption("xdgname"); - if (desiredFolder == "DOCUMENTS") { - TQDir myqdir; - if (myqdir.exists(getDocumentPath(), TRUE) == true) { - if (args->isSet( "getpath" ) == true) { - printf("%s\n", (const char *)getDocumentPath().local8Bit()); - return 0; - } - else { - KRun * run = new KRun( KURL(getDocumentPath()), 0, false, false ); - TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() )); - TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() )); - app.exec(); - return 0; - } - } - else { - KURLRequesterDlg newDirectoryRequester(getDocumentPath(), i18n("Please confirm your Documents directory location<br>Upon confimation a new directory will be created"), 0, NULL, true); - newDirectoryRequester.setCaption(i18n("Create Documents directory")); - newDirectoryRequester.urlRequester()->setMode(KFile::Directory); - if (newDirectoryRequester.exec() != TQDialog::Accepted) { - return 1; - } - else { - TQString newDirectory = newDirectoryRequester.urlRequester()->url(); - if (newDirectory == TQString::null) { - return 1; - } - else { - if (newDirectory.length() < 4096) { - bool directoryOk = false; - if (myqdir.exists(newDirectory, TRUE) == false) { - if (myqdir.mkdir(newDirectory, TRUE) == true) { - directoryOk = TRUE; - } - } - else { - directoryOk = TRUE; - } - if (directoryOk == true) { - TQString xdgModifiedDirectory = newDirectory; - xdgModifiedDirectory = xdgModifiedDirectory.replace(TQDir::homeDirPath(), "$HOME"); - while (xdgModifiedDirectory.endsWith("/")) { - xdgModifiedDirectory.truncate(xdgModifiedDirectory.length()-1); - } - TDEConfig config(TQDir::homeDirPath() + "/.config/user-dirs.dirs", false, false); - config.writeEntry("XDG_DOCUMENTS_DIR", TQString("\"") + xdgModifiedDirectory + TQString("\""), true); - config.sync(); - if (args->isSet( "getpath" ) == true) { - printf("%s\n", (const char *)getDocumentPath().local8Bit()); - return 0; - } - else { - KRun * run = new KRun( getDocumentPath(), 0, false, false ); - TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() )); - TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() )); - app.exec(); - } - return 0; - } - else { - KMessageBox::error(0, i18n("Unable to create directory ") + TQString("\"") + newDirectory + TQString("\"\n") + i18n("Please check folder permissions and try again"), i18n("Unable to create directory")); - return 1; - } - } - else { - KMessageBox::error(0, i18n("Unable to create the directory ") + newDirectory + TQString("\n") + i18n("Directory path cannot be longer than 4096 characters"), i18n("Unable to create directory")); - return 1; - } - } - } - } - } - else { - printf("[kxdglauncher] XDG variable not recognized\n"); - return 1; - } - } - else { - printf("[kxdglauncher] Please specify the desired XDG variable name with --xdgname\n"); - return 1; - } -} diff --git a/kdesktop/kxdglauncher.h b/kdesktop/kxdglauncher.h deleted file mode 100644 index 8f487e88e..000000000 --- a/kdesktop/kxdglauncher.h +++ /dev/null @@ -1,25 +0,0 @@ -/* This file is part of the KDE project - Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org> - - 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 _MAIN_H -#define _MAIN_H - -#include <tdeapplication.h> - -#endif diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt index 05e14e938..abeebb3d2 100644 --- a/kdesktop/lock/CMakeLists.txt +++ b/kdesktop/lock/CMakeLists.txt @@ -34,14 +34,14 @@ link_directories( set( target kdesktop_lock ) set( ${target}_SRCS - lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc sakdlg.cc - securedlg.cc autologout.cc main.cc + lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp sakdlg.cpp + securedlg.cpp autologout.cpp main.cpp ) tde_add_executable( ${target} AUTOMOC SOURCES ${${target}_SRCS} - LINK kdesktopsettings-static dmctl-static tdeio-shared Xext - pthread ${GL_LIBRARIES} ${LIBTDELDAP_LIBRARIES} + LINK kdesktopsettings-static dmctl-static tdeio-shared Xext ${TDEHW_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} ${GL_LIBRARIES} "${LINKER_IMMEDIATE_BINDING_FLAGS}" DESTINATION ${BIN_INSTALL_DIR} ) diff --git a/kdesktop/lock/Makefile.am b/kdesktop/lock/Makefile.am index c686e3ea9..4c2fb22a8 100644 --- a/kdesktop/lock/Makefile.am +++ b/kdesktop/lock/Makefile.am @@ -8,7 +8,7 @@ kdesktop_lock_LDADD = ../libkdesktopsettings.la ../../tdmlib/libdmctl.la $(LI bin_PROGRAMS = kdesktop_lock -kdesktop_lock_SOURCES = lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc autologout.cc main.cc +kdesktop_lock_SOURCES = lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp autologout.cpp main.cpp noinst_HEADERS = lockprocess.h lockdlg.h infodlg.h querydlg.h autologout.h main.h diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cpp index 6e05c439d..ee1d8e1db 100644 --- a/kdesktop/lock/autologout.cc +++ b/kdesktop/lock/autologout.cpp @@ -67,7 +67,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog" unlockDialogLayout->addWidget( frame ); frameLayout = new TQGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint()); - frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop); + frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, TQt::AlignCenter | TQt::AlignTop); frameLayout->addWidget(greetLabel, 0, 1); frameLayout->addWidget(mStatusLabel, 1, 1); frameLayout->addWidget(infoLabel, 2, 1); @@ -83,7 +83,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog" mCountdownTimerId = startTimer(1000/25); - connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity())); + connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity())); setFixedSize( sizeHint() ); } @@ -119,7 +119,7 @@ void AutoLogout::slotActivity() void AutoLogout::logout() { - TQT_TQOBJECT(this)->killTimers(); + this->killTimers(); DCOPRef("ksmserver","ksmserver").send("logout", 0, 0, 0); } diff --git a/kdesktop/lock/autologout.h b/kdesktop/lock/autologout.h index 89cbb880e..834f4fd0e 100644 --- a/kdesktop/lock/autologout.h +++ b/kdesktop/lock/autologout.h @@ -22,7 +22,7 @@ class TQProgressBar; class AutoLogout : public TQDialog { - Q_OBJECT + TQ_OBJECT public: AutoLogout(LockProcess *parent); diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cpp index 3efaf060d..a37c92b8e 100644 --- a/kdesktop/lock/infodlg.cc +++ b/kdesktop/lock/infodlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -97,7 +97,7 @@ InfoDlg::InfoDlg(LockProcess *parent) layStatus->addWidget( mStatusLabel ); frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addLayout( layStatus, 1, 1 ); installEventFilter(this); @@ -111,7 +111,7 @@ InfoDlg::~InfoDlg() void InfoDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/infodlg.h b/kdesktop/lock/infodlg.h index 3daf4d2ce..ec5569748 100644 --- a/kdesktop/lock/infodlg.h +++ b/kdesktop/lock/infodlg.h @@ -26,7 +26,7 @@ class TQListView; // class InfoDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: InfoDlg(LockProcess *parent); diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cpp index d4b456a9e..c5d3d1aea 100644 --- a/kdesktop/lock/lockdlg.cc +++ b/kdesktop/lock/lockdlg.cpp @@ -20,7 +20,8 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> +#include <tdesimpleconfig.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -43,7 +44,10 @@ #include <tqlistview.h> #include <tqheader.h> #include <tqcheckbox.h> +#ifdef WITH_TDEHWLIB #include <tqfile.h> +#include <tdecryptographiccarddevice.h> +#endif #include <ctype.h> #include <unistd.h> @@ -58,9 +62,6 @@ #include <X11/Xatom.h> #include <fixx11h.h> -#ifdef HAVE_KRB5 -#include <libtdeldap.h> -#endif #ifndef AF_LOCAL # define AF_LOCAL AF_UNIX @@ -101,6 +102,7 @@ PasswordDlg::PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin, TQDat mPlugin( plugin ), mCapsLocked(-1), mUnlockingFailed(false), + validUserCardInserted(false), showInfoMessages(true), mCardLoginInProgress(false) { @@ -198,7 +200,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) if (!m_lockStartDT.isNull()) { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop ); + frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 1, 1 ); frameLayout->addWidget( lockDTLabel, 2, 1 ); frameLayout->addItem( greet->getLayoutItem(), 3, 1 ); @@ -208,7 +210,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } else { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop ); + frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 1, 1 ); frameLayout->addItem( greet->getLayoutItem(), 2, 1 ); frameLayout->addLayout( layStatus, 3, 1 ); @@ -218,7 +220,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } else { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 0, 1 ); frameLayout->addItem( greet->getLayoutItem(), 1, 1 ); frameLayout->addLayout( layStatus, 2, 1 ); @@ -235,14 +237,14 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } setTabOrder( mNewSessButton, mLayoutButton ); - connect(mLayoutButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(layoutClicked())); + connect(mLayoutButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(layoutClicked())); if (show_cancel_button) { - connect(cancel, TQT_SIGNAL(clicked()), TQT_SLOT(reject())); + connect(cancel, TQ_SIGNAL(clicked()), TQ_SLOT(reject())); } - connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK())); - connect(mNewSessButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSwitchUser())); + connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK())); + connect(mNewSessButton, TQ_SIGNAL(clicked()), TQ_SLOT(slotSwitchUser())); - if (!DM().isSwitchable() || !kapp->authorize("switch_user")) { + if (!DM().isSwitchable() || !tdeApp->authorize("switch_user")) { mNewSessButton->hide(); } @@ -251,7 +253,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) mFailedTimerId = 0; mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT); - connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()) ); + connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity()) ); greet->setInfoMessageDisplay(showInfoMessages); greet->start(); @@ -327,12 +329,12 @@ void PasswordDlg::setLayoutText( const TQString &txt ) void PasswordDlg::updateLabel() { if (mUnlockingFailed) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText(i18n("<b>Unlocking failed</b>")); // mStatusLabel->show(); } else if (mCapsLocked) { - mStatusLabel->setPaletteForegroundColor(Qt::red); + mStatusLabel->setPaletteForegroundColor(TQt::red); mStatusLabel->setText(i18n("<b>Warning: Caps Lock on</b>")); // mStatusLabel->show(); } @@ -479,6 +481,7 @@ void PasswordDlg::reapVerify() switch (WEXITSTATUS(status)) { case AuthOk: { +#ifdef WITH_TDEHWLIB KUser userinfo; TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; TQFile flagFile(fileName); @@ -493,6 +496,7 @@ void PasswordDlg::reapVerify() // Card was not used to log in flagFile.remove(); } +#endif // Signal success greet->succeeded(); @@ -555,6 +559,7 @@ void PasswordDlg::handleVerify() setFixedSize( sizeHint().width(), sizeHint().height() + 1 ); setFixedSize( sizeHint() ); +#ifdef WITH_TDEHWLIB // Check if cryptographic card login is being used if (mCardLoginInProgress) { // Attempt authentication if configured @@ -563,11 +568,12 @@ void PasswordDlg::handleVerify() TQString autoPIN = cdevice->autoPIN(); if (autoPIN != TQString::null) { greet->setPassword(autoPIN); - TQTimer::singleShot(0, this, SLOT(slotOK())); + TQTimer::singleShot(0, this, TQ_SLOT(slotOK())); } } mCardLoginInProgress = false; } +#endif } else { greet->textPrompt( arr, false, false ); @@ -706,12 +712,12 @@ void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text ) KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame ); button->setDefault( true ); button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) ); - connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( accept() ) ); + connect( button, TQ_SIGNAL( clicked() ), TQ_SLOT( accept() ) ); TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); - grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); + grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter ); static_cast< LockProcess* >(parent())->execDialog( &dialog ); } @@ -777,16 +783,16 @@ void PasswordDlg::slotStartNewSession() TQLabel *label2 = new TQLabel( qt_text, winFrame ); KPushButton *okbutton = new KPushButton( KGuiItem(i18n("&Start New Session"), "fork"), winFrame ); okbutton->setDefault( true ); - connect( okbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( accept() ) ); + connect( okbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( accept() ) ); KPushButton *cbutton = new KPushButton( KStdGuiItem::cancel(), winFrame ); - connect( cbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( reject() ) ); + connect( cbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( reject() ) ); TQBoxLayout *mbox = new TQVBoxLayout( winFrame, KDialog::marginHint(), KDialog::spacingHint() ); TQGridLayout *grid = new TQGridLayout( mbox, 2, 2, 2 * KDialog::spacingHint() ); grid->setMargin( KDialog::marginHint() ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); TQCheckBox *cb = new TQCheckBox( i18n("&Do not ask again"), winFrame ); grid->addMultiCellWidget( cb, 1,1, 0,1 ); @@ -895,8 +901,8 @@ void PasswordDlg::slotSwitchUser() SessList sess; if (dm.localSessions( sess )) { lv = new TQListView( winFrame ); - connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQT_SLOT(slotSessionActivated()) ); - connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQT_SLOT(accept()) ); + connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQ_SLOT(slotSessionActivated()) ); + connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQ_SLOT(accept()) ); lv->setAllColumnsShowFocus( true ); lv->addColumn( i18n("Session") ); lv->addColumn( i18n("Location") ); @@ -927,16 +933,16 @@ void PasswordDlg::slotSwitchUser() vbox1->addWidget( lv ); btn = new KPushButton( KGuiItem(i18n("session", "&Activate"), "fork"), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotSessionActivated()) ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) ); + connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotSessionActivated()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) ); vbox2->addWidget( btn ); vbox2->addStretch( 2 ); } - if (kapp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) { + if (tdeApp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) { btn = new KPushButton( KGuiItem(i18n("Start &New Session"), "fork"), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotStartNewSession()) ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) ); + connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotStartNewSession()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) ); if (!p) btn->setEnabled( false ); vbox2->addWidget( btn ); @@ -944,7 +950,7 @@ void PasswordDlg::slotSwitchUser() } btn = new KPushButton( KStdGuiItem::cancel(), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(reject()) ); vbox2->addWidget( btn ); dialog.setFixedSize( dialog.sizeHint() ); @@ -974,16 +980,22 @@ void PasswordDlg::capsLocked() } void PasswordDlg::attemptCardLogin() { -#ifdef HAVE_KRB5 - // Make sure card logins are enabled before attempting one - if (!LDAPManager::pkcsLoginEnabled()) { - return; - } -#else +#ifdef WITH_TDEHWLIB +#ifndef HAVE_KRB5 // Don't enable card-based logins if Kerberos integration was disabled return; #endif + // Make sure card logins are enabled before attempting one + TDESimpleConfig *systemconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/ldap/ldapconfigrc" )); + systemconfig->setGroup(NULL); + bool enabled = systemconfig->readBoolEntry("EnablePKCS11Login", false); + delete systemconfig; + if (!enabled) + { + return; + } + if (mCardLoginInProgress) { return; } @@ -1003,10 +1015,12 @@ void PasswordDlg::attemptCardLogin() { // Bypass initial password prompt greet->start(); greet->setPassword(""); - TQTimer::singleShot(0, this, SLOT(slotOK())); + TQTimer::singleShot(0, this, TQ_SLOT(slotOK())); +#endif } void PasswordDlg::resetCardLogin() { +#ifdef WITH_TDEHWLIB validUserCardInserted = false; greet->abort(); greet->clear(); @@ -1019,9 +1033,10 @@ void PasswordDlg::resetCardLogin() { setFixedSize(sizeHint()); // Restore information message display settings - greet->setInfoMessageDisplay(showInfoMessages); + greet->setInfoMessageDisplay(showInfoMessages); mCardLoginInProgress = false; +#endif } #include "lockdlg.moc" diff --git a/kdesktop/lock/lockdlg.h b/kdesktop/lock/lockdlg.h index 571d825fa..3f8500a42 100644 --- a/kdesktop/lock/lockdlg.h +++ b/kdesktop/lock/lockdlg.h @@ -33,7 +33,7 @@ class TQListView; // class PasswordDlg : public TQDialog, public KGreeterPluginHandler { - Q_OBJECT + TQ_OBJECT public: PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin); diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cpp index fdde3fc9e..2ad89f5ab 100644 --- a/kdesktop/lock/lockprocess.cc +++ b/kdesktop/lock/lockprocess.cpp @@ -17,6 +17,14 @@ //some image will be corrupted). #include <config.h> +#include <tdeglobal.h> + +#ifdef WITH_TDEHWLIB +#include <ksslcertificate.h> +#include <kuser.h> +#include <tdehardwaredevices.h> +#include <tdecryptographiccarddevice.h> +#endif #include "lockprocess.h" #include "lockdlg.h" @@ -30,11 +38,10 @@ #include <dmctl.h> #include <dcopref.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeapplication.h> #include <kservicegroup.h> #include <kdebug.h> -#include <kuser.h> #include <tdemessagebox.h> #include <tdeglobalsettings.h> #include <tdelocale.h> @@ -78,7 +85,7 @@ #include <sys/types.h> #include <fcntl.h> -#include <kcrash.h> +#include <tdecrash.h> #include <pthread.h> @@ -144,14 +151,6 @@ Atom kde_wm_system_modal_notification = 0; Atom kde_wm_transparent_to_desktop = 0; Atom kde_wm_transparent_to_black = 0; -static void segv_handler(int) -{ - kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered." - << " Trapping and ignoring it so as not to compromise desktop security..." - << kdBacktrace() << endl; - sleep(1); -} - extern Atom tqt_wm_state; extern bool trinity_desktop_lock_use_system_modal_dialogs; extern bool trinity_desktop_lock_delay_screensaver_start; @@ -159,24 +158,32 @@ extern bool trinity_desktop_lock_use_sak; extern bool trinity_desktop_lock_hide_active_windows; extern bool trinity_desktop_lock_hide_cancel_button; extern bool trinity_desktop_lock_forced; - -extern LockProcess* trinity_desktop_lock_process; +extern bool trinity_desktop_lock_failed_grab; extern bool argb_visual; extern pid_t kdesktop_pid; extern TQXLibWindowList trinity_desktop_lock_hidden_window_list; -bool trinity_desktop_lock_autohide_lockdlg = TRUE; +bool trinity_desktop_lock_autohide_lockdlg = true; + +static void segv_handler(int) +{ + kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered." + << " Trapping and ignoring it so as not to compromise desktop security..." + << kdBacktrace() << endl; + + sleep(1); +} #define ENABLE_CONTINUOUS_LOCKDLG_DISPLAY \ -if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, FALSE); \ -trinity_desktop_lock_autohide_lockdlg = FALSE; \ +if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, false); \ +trinity_desktop_lock_autohide_lockdlg = false; \ mHackDelayStartupTimer->stop(); #define DISABLE_CONTINUOUS_LOCKDLG_DISPLAY \ mForceContinualLockDisplayTimer->stop(); \ -trinity_desktop_lock_autohide_lockdlg = TRUE; \ +trinity_desktop_lock_autohide_lockdlg = true; \ mHackDelayStartupTimer->stop(); //=========================================================================== @@ -227,7 +234,9 @@ LockProcess::LockProcess() m_notifyReadyRequested(false), m_loginCardDevice(NULL), m_maskWidget(NULL), - m_saverRootWindow(0) + m_saverRootWindow(0), + mControlPipeHandler(nullptr), + mControlPipeHandlerThread(nullptr) { #ifdef KEEP_MOUSE_UNGRABBED setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize); @@ -240,7 +249,7 @@ LockProcess::LockProcess() kde_wm_transparent_to_desktop = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_DESKTOP", False); kde_wm_transparent_to_black = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_BLACK", False); - kapp->installX11EventFilter(this); + tdeApp->installX11EventFilter(this); mForceContinualLockDisplayTimer = new TQTimer( this ); mHackDelayStartupTimer = new TQTimer( this ); @@ -249,7 +258,7 @@ LockProcess::LockProcess() if (!argb_visual) { // Try to get the root pixmap if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this); - connect(m_rootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotPaintBackground(const TQPixmap &))); + connect(m_rootPixmap, TQ_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQ_SLOT(slotPaintBackground(const TQPixmap &))); m_rootPixmap->setCustomPainting(true); m_rootPixmap->start(); } @@ -291,18 +300,20 @@ LockProcess::LockProcess() } } +#ifdef WITH_TDEHWLIB // Initialize SmartCard readers TDEGenericDevice *hwdevice; TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) { TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); - // connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); + // connect(cdevice, TQ_SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); cdevice->enableCardMonitoring(true); // cdevice->enablePINEntryCallbacks(true); } +#endif #ifdef KEEP_MOUSE_UNGRABBED setEnabled(false); @@ -322,8 +333,6 @@ LockProcess::~LockProcess() mControlPipeHandler->terminateThread(); mControlPipeHandlerThread->wait(); delete mControlPipeHandler; -// delete mControlPipeHandlerThread; - if (resizeTimer != NULL) { resizeTimer->stop(); delete resizeTimer; @@ -379,12 +388,12 @@ void LockProcess::init(bool child, bool useBlankOnly) generateBackingImages(); // Connect all signals - connect( mForceContinualLockDisplayTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(displayLockDialogIfNeeded()) ); - connect( mHackDelayStartupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(closeDialogAndStartHack()) ); - connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) ); - connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *))); - connect(&mHackProc, TQT_SIGNAL(processExited(TDEProcess *)), TQT_SLOT(hackExited(TDEProcess *))); - connect(&mSuspendTimer, TQT_SIGNAL(timeout()), TQT_SLOT(suspend())); + connect( mForceContinualLockDisplayTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(displayLockDialogIfNeeded()) ); + connect( mHackDelayStartupTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(closeDialogAndStartHack()) ); + connect( mEnsureVRootWindowSecurityTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(repaintRootWindowIfNeeded()) ); + connect(tqApp, TQ_SIGNAL(mouseInteraction(XEvent *)), TQ_SLOT(slotMouseActivity(XEvent *))); + connect(&mHackProc, TQ_SIGNAL(processExited(TDEProcess *)), TQ_SLOT(hackExited(TDEProcess *))); + connect(&mSuspendTimer, TQ_SIGNAL(timeout()), TQ_SLOT(suspend())); #ifdef HAVE_DPMS //if the user decided that the screensaver should run independent from @@ -394,7 +403,7 @@ void LockProcess::init(bool child, bool useBlankOnly) CARD16 state; if (DPMSInfo(tqt_xdisplay(), &state, &on)) { if (on) { - connect(&mCheckDPMS, TQT_SIGNAL(timeout()), TQT_SLOT(checkDPMSActive())); + connect(&mCheckDPMS, TQ_SIGNAL(timeout()), TQ_SLOT(checkDPMSActive())); // we can save CPU if we stop it as quickly as possible // but we waste CPU if we check too often -> so take 10s mCheckDPMS.start(10000); @@ -403,9 +412,7 @@ void LockProcess::init(bool child, bool useBlankOnly) } #endif -#if (TQT_VERSION-0 >= 0x030200) // XRANDR support - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); -#endif + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); if (!trinity_desktop_lock_use_system_modal_dialogs) { setWFlags((WFlags)WX11BypassWM); @@ -426,21 +433,25 @@ void LockProcess::init(bool child, bool useBlankOnly) mControlPipeHandler = new ControlPipeHandlerObject(); mControlPipeHandler->mParent = this; mControlPipeHandler->moveToThread(mControlPipeHandlerThread); - TQObject::connect(mControlPipeHandler, SIGNAL(processCommand(TQString)), this, SLOT(processInputPipeCommand(TQString))); - TQTimer::singleShot(0, mControlPipeHandler, SLOT(run())); + TQObject::connect(mControlPipeHandler, TQ_SIGNAL(processCommand(TQString)), this, TQ_SLOT(processInputPipeCommand(TQString))); + TQTimer::singleShot(0, mControlPipeHandler, TQ_SLOT(run())); mControlPipeHandlerThread->start(); + // If the lock process terminates before 'mControlPipeHandler::run()' has been called, the + // 'mControlPipeHandlerThread' thread would not terminate and the lock process would have a + // dirty exit, potentially leaving 'kdesktop' in a dirty state that prevents the lock from + // working correctly till 'kdesktop' is killed and restarted. By forcing a call to 'processEvents()' + // we make sure to handle pending timer events and execute the required call + tdeApp->processEvents(); } static int signal_pipe[2]; static void sigterm_handler(int) { - if ((!trinity_desktop_lock_process) || (!trinity_desktop_lock_process->inSecureDialog())) { - // Exit uncleanly - char tmp = 'U'; - if (::write( signal_pipe[1], &tmp, 1) == -1) { - // Error handler to shut up gcc warnings - } + // Exit uncleanly + char tmp = 'U'; + if (::write( signal_pipe[1], &tmp, 1) == -1) { + // Error handler to shut up gcc warnings } } @@ -454,7 +465,7 @@ static void sighup_handler(int) bool LockProcess::closeCurrentWindow() { - mClosingWindows = TRUE; + mClosingWindows = true; if (currentDialog != NULL) { mForceReject = true; if (dynamic_cast<SAKDlg*>(currentDialog)) { @@ -469,12 +480,12 @@ bool LockProcess::closeCurrentWindow() } if( mDialogs.isEmpty() ) { - mClosingWindows = FALSE; + mClosingWindows = false; mForceReject = false; return false; } else { - mClosingWindows = TRUE; + mClosingWindows = true; return true; } } @@ -524,8 +535,8 @@ void LockProcess::setupSignals() if (pipe(signal_pipe) == -1) { // Error handler to shut up gcc warnings } - TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, TQT_TQOBJECT(this) ); - connect( notif, TQT_SIGNAL(activated(int)), TQT_SLOT(signalPipeSignal())); + TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, this ); + connect( notif, TQ_SIGNAL(activated(int)), TQ_SLOT(signalPipeSignal())); } @@ -543,9 +554,11 @@ void LockProcess::signalPipeSignal() startLock(); } else if( tmp == 'U' ) { - // Exit uncleanly - quitSaver(); - exit(1); + if (!inSecureDialog()) { + // Exit uncleanly + quitSaver(); + exit(1); + } } } @@ -557,7 +570,7 @@ bool LockProcess::lock() m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("...")); m_startupStatusDialog->show(); m_startupStatusDialog->setActiveWindow(); - tqApp->processEvents(); + tdeApp->processEvents(); #endif if (startSaver(true)) { @@ -568,7 +581,7 @@ bool LockProcess::lock() // selecting "lock screen", that looks really untidy. mBusy = true; if (startLock()) { - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); return true; } stopSaver(); @@ -589,7 +602,7 @@ bool LockProcess::defaultSave() mOverrideHackStartupEnabled = true; if (startSaver()) { if (mLockGrace >= 0) { - TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock())); + TQTimer::singleShot(mLockGrace, this, TQ_SLOT(startLock())); } return true; } @@ -609,18 +622,18 @@ void LockProcess::quitSaver() { DISABLE_CONTINUOUS_LOCKDLG_DISPLAY if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(quitSaver()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(quitSaver()) ); return; } stopSaver(); - kapp->quit(); + tdeApp->quit(); } //--------------------------------------------------------------------------- void LockProcess::startSecureDialog() { if ((backingPixmap.isNull()) && (mBackingStartupDelayTimer < 100)) { - TQTimer::singleShot(10, this, TQT_SLOT(startSecureDialog())); + TQTimer::singleShot(10, this, TQ_SLOT(startSecureDialog())); mBackingStartupDelayTimer++; return; } @@ -641,7 +654,7 @@ void LockProcess::startSecureDialog() mInSecureDialog = false; if (ret == 0) { mClosingWindows = 1; - kapp->quit(); + tdeApp->quit(); } if (ret == 1) { // In case of a forced lock we don't react to events during @@ -652,18 +665,18 @@ void LockProcess::startSecureDialog() mBusy = true; trinity_desktop_lock_forced = true; // Make sure the cursor is not showing busy status - setCursor( tqarrowCursor ); + setCursor( TQt::arrowCursor ); if (startLock()) { if (trinity_desktop_lock_delay_screensaver_start) { mBusy = false; } else { - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); } if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled == true) { @@ -672,7 +685,7 @@ void LockProcess::startSecureDialog() else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -690,18 +703,18 @@ void LockProcess::startSecureDialog() if (system("ksysguard &") == -1) { // Error handler to shut up gcc warnings } - kapp->quit(); + tdeApp->quit(); } if (ret == 3) { mClosingWindows = 1; DCOPRef("ksmserver","ksmserver").send("logout", (int)TDEApplication::ShutdownConfirmYes, (int)TDEApplication::ShutdownTypeNone, (int)TDEApplication::ShutdownModeInteractive); - kapp->quit(); + tdeApp->quit(); } // FIXME // Handle remaining case (switch user) if (forcecontdisp) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } stopSaver(); } @@ -713,13 +726,13 @@ bool LockProcess::runSecureDialog() m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("...")); m_startupStatusDialog->show(); m_startupStatusDialog->setActiveWindow(); - tqApp->processEvents(); + tdeApp->processEvents(); #endif mInSecureDialog = true; if (startSaver()) { mBackingStartupDelayTimer = 0; - TQTimer::singleShot(0, this, TQT_SLOT(startSecureDialog())); + TQTimer::singleShot(0, this, TQ_SLOT(startSecureDialog())); return true; } else { @@ -789,9 +802,9 @@ void LockProcess::readSaver() if (!mSaver.isEmpty()) { TQString file = locate("scrsav", mSaver); - bool opengl = kapp->authorize("opengl_screensavers"); - bool manipulatescreen = kapp->authorize("manipulatescreen_screensavers"); - KDesktopFile config(file, true); + bool opengl = tdeApp->authorize("opengl_screensavers"); + bool manipulatescreen = tdeApp->authorize("manipulatescreen_screensavers"); + TDEDesktopFile config(file, true); if (config.readEntry("X-TDE-Type").utf8() != 0) { TQString saverType = config.readEntry("X-TDE-Type").utf8(); TQStringList saverTypes = TQStringList::split(";", saverType); @@ -1031,7 +1044,7 @@ void LockProcess::desktopResized() } else { mEnsureScreenHiddenTimer = new TQTimer( this ); - connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) ); + connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) ); } mEnsureScreenHiddenTimer->start(DESKTOP_WALLPAPER_OBTAIN_TIMEOUT_MS, true); } @@ -1054,9 +1067,9 @@ void LockProcess::desktopResized() // being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot if (resizeTimer == NULL) { resizeTimer = new TQTimer( this ); - connect( resizeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(doDesktopResizeFinish()) ); + connect( resizeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(doDesktopResizeFinish()) ); } - resizeTimer->start( 100, TRUE ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started + resizeTimer->start( 100, true ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started } void LockProcess::doDesktopResizeFinish() @@ -1066,7 +1079,7 @@ void LockProcess::doDesktopResizeFinish() } mDialogControlLock = true; if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(doDesktopResizeFinish()) ); mDialogControlLock = false; return; } @@ -1075,7 +1088,7 @@ void LockProcess::doDesktopResizeFinish() // Restart the hack as the window size is now different if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled == true) { @@ -1084,7 +1097,7 @@ void LockProcess::doDesktopResizeFinish() else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -1234,10 +1247,10 @@ bool LockProcess::grabMouse() { HANDLE cursorHandle; if (mHackActive) { - cursorHandle = TQCursor(tqblankCursor).handle(); + cursorHandle = TQCursor(TQt::blankCursor).handle(); } else { - cursorHandle = TQCursor(tqbusyCursor).handle(); + cursorHandle = TQCursor(TQt::busyCursor).handle(); } int rv = XGrabPointer( tqt_xdisplay(), TQApplication::desktop()->winId(), True, GRABEVENTS, GrabModeAsync, GrabModeAsync, None, @@ -1334,6 +1347,7 @@ bool LockProcess::startSaver(bool notify_ready) if (!child_saver && !grabInput()) { kdWarning(KDESKTOP_DEBUG_ID) << "LockProcess::startSaver() grabInput() failed!!!!" << endl; + trinity_desktop_lock_failed_grab = true; return false; } mBusy = false; @@ -1344,8 +1358,8 @@ bool LockProcess::startSaver(bool notify_ready) saveVRoot(); if (mParent) { - TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, TQT_TQOBJECT(this), "notifier"); - connect(notifier, TQT_SIGNAL( activated (int)), TQT_SLOT( quitSaver())); + TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, this, "notifier"); + connect(notifier, TQ_SIGNAL( activated (int)), TQ_SLOT( quitSaver())); } createSaverWindow(); move(0, 0); @@ -1361,7 +1375,8 @@ bool LockProcess::startSaver(bool notify_ready) slotPaintBackground(rootWinSnapShot); } - if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!mInSecureDialog)) && (mHackStartupEnabled || mOverrideHackStartupEnabled)) { + if (!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) && !mInSecureDialog && + (mHackStartupEnabled || mOverrideHackStartupEnabled)) { if (argb_visual) { setTransparentBackgroundARGB(); } @@ -1388,10 +1403,10 @@ bool LockProcess::startSaver(bool notify_ready) } } - if (mInSecureDialog == FALSE) { + if (!mInSecureDialog) { if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled || mOverrideHackStartupEnabled) { @@ -1401,7 +1416,7 @@ bool LockProcess::startSaver(bool notify_ready) else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -1520,7 +1535,7 @@ void LockProcess::closeDialogAndStartHack() // Make sure saver will attempt to start again after DPMS wakeup // This is related to Bug 1475 ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); // Should not start saver here, because the DPMS check method below would turn it right back off! // This is related to Bug 1475 return; @@ -1533,7 +1548,7 @@ void LockProcess::closeDialogAndStartHack() DISABLE_CONTINUOUS_LOCKDLG_DISPLAY mSuspended = true; if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(closeDialogAndStartHack()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(closeDialogAndStartHack()) ); } else { resume(true); @@ -1568,10 +1583,10 @@ void LockProcess::repaintRootWindowIfNeeded() bool LockProcess::startHack() { - mHackActive = TRUE; + mHackActive = true; if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) { - mEnsureVRootWindowSecurityTimer->start(250, FALSE); + mEnsureVRootWindowSecurityTimer->start(250, false); } if (currentDialog || (!mDialogs.isEmpty())) { @@ -1593,8 +1608,8 @@ bool LockProcess::startHack() return false; } - setCursor( tqblankCursor ); - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); + setCursor( TQt::blankCursor ); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime); if (mSaverExec.isEmpty()) { return false; @@ -1650,7 +1665,7 @@ bool LockProcess::startHack() mSuspended = false; } - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime); if (mHackProc.start() == true) { #ifdef HAVE_SETPRIORITY setpriority(PRIO_PROCESS, mHackProc.pid(), mPriority); @@ -1660,7 +1675,7 @@ bool LockProcess::startHack() if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) { // Close any active dialogs if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(closeCurrentWindow()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(closeCurrentWindow()) ); } } if (m_startupStatusDialog) { m_startupStatusDialog->closeSMDialog(); m_startupStatusDialog=NULL; } @@ -1700,7 +1715,7 @@ bool LockProcess::startHack() } if (trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } saverReadyIfNeeded(); } @@ -1724,9 +1739,9 @@ void LockProcess::stopHack() mHackProc.kill(SIGKILL); } } - setCursor( tqarrowCursor ); + setCursor( TQt::arrowCursor ); - mHackActive = FALSE; + mHackActive = false; } //--------------------------------------------------------------------------- @@ -1735,7 +1750,7 @@ void LockProcess::hackExited(TDEProcess *) { // Hack exited while we're supposed to be saving the screen. // Make sure the saver window is black. - mHackActive = FALSE; + mHackActive = false; usleep(100); TQApplication::syncX(); if (!trinity_desktop_lock_use_system_modal_dialogs) { @@ -1770,7 +1785,7 @@ void LockProcess::hackExited(TDEProcess *) if (!mSuspended) { if (trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } saverReadyIfNeeded(); @@ -1782,19 +1797,17 @@ void LockProcess::displayLockDialogIfNeeded() m_startupStatusDialog->closeSMDialog(); m_startupStatusDialog = NULL; } - if (!mInSecureDialog) { - if (trinity_desktop_lock_use_system_modal_dialogs) { - if (!mBusy) { - mBusy = true; - if (mLocked) { - if (checkPass()) { - mClosingWindows = true; - stopSaver(); - kapp->quit(); - } + if (!mInSecureDialog && trinity_desktop_lock_use_system_modal_dialogs) { + if (!mBusy) { + mBusy = true; + if (mLocked) { + if (checkPass()) { + mClosingWindows = true; + stopSaver(); + tdeApp->quit(); } - mBusy = false; } + mBusy = false; } } } @@ -1807,7 +1820,7 @@ void LockProcess::suspend() stopHack(); ENABLE_CONTINUOUS_LOCKDLG_DISPLAY if (mHackStartupEnabled) { - mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } else { @@ -1825,7 +1838,7 @@ void LockProcess::suspend() } hackstat[8191] = 0; hackStatus = hackstat; - hackStatus = hackStatus.remove(TQRegExp("(*) ", TRUE, TRUE)); + hackStatus = hackStatus.remove(TQRegExp("(*) ", true, true)); TQStringList hackStatusList = TQStringList::split(" ", hackStatus); hackStatus = (*(hackStatusList.at(1))); } @@ -1980,7 +1993,7 @@ int LockProcess::execDialog( TQDialog *dlg ) if (mDialogs.isEmpty()) { suspend(); - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime); } mDialogs.prepend( dlg ); fakeFocusIn( dlg->winId()); @@ -2007,20 +2020,20 @@ int LockProcess::execDialog( TQDialog *dlg ) if( mDialogs.isEmpty() ) { HANDLE cursorHandle; if (mHackActive) { - cursorHandle = TQCursor(tqblankCursor).handle(); + cursorHandle = TQCursor(TQt::blankCursor).handle(); } else { - cursorHandle = TQCursor(tqbusyCursor).handle(); + cursorHandle = TQCursor(TQt::busyCursor).handle(); } XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, cursorHandle, CurrentTime); if (trinity_desktop_lock_use_system_modal_dialogs) { // Slight delay before screensaver resume to allow the dialog window to fully disappear if (hackResumeTimer == NULL) { hackResumeTimer = new TQTimer( this ); - connect( hackResumeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(resumeUnforced()) ); + connect( hackResumeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(resumeUnforced()) ); } if (mResizingDesktopLock == false) { - hackResumeTimer->start( 10, TRUE ); + hackResumeTimer->start( 10, true ); } } else { @@ -2037,7 +2050,7 @@ int LockProcess::execDialog( TQDialog *dlg ) void LockProcess::slotForcePaintBackground() { TQPixmap blankPixmap(mRootWidth, mRootHeight); - blankPixmap.fill(Qt::black); + blankPixmap.fill(TQt::black); slotPaintBackground(blankPixmap); printf("[WARNING] Unable to obtain desktop wallpaper in a timely manner. High system load or possibly a TDE bug!\n"); fflush(stdout); } @@ -2056,7 +2069,7 @@ void LockProcess::slotPaintBackground(const TQPixmap &rpm) } else { mEnsureScreenHiddenTimer = new TQTimer( this ); - connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) ); + connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) ); } // Only remove the mask widget once the resize is 100% complete! @@ -2118,7 +2131,7 @@ void LockProcess::doFunctionKeyBroadcast() { // This does NOT work with the SAK or system modal dialogs! if ((!trinity_desktop_lock_use_system_modal_dialogs) && (!trinity_desktop_lock_use_sak)) { mBusy=true; - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); if (mkeyCode == XKeysymToKeycode(tqt_xdisplay(), XF86XK_Display)) { while (mDialogControlLock == true) { usleep(100000); @@ -2158,7 +2171,7 @@ bool LockProcess::x11Event(XEvent *event) (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioRaiseVolume)) || \ (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioLowerVolume))) { mkeyCode = event->xkey.keycode; - TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) ); + TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) ); return true; } // ACPI power keys @@ -2167,7 +2180,7 @@ bool LockProcess::x11Event(XEvent *event) (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Suspend)) || \ (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Hibernate))) { mkeyCode = event->xkey.keycode; - TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) ); + TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) ); return true; } } @@ -2183,7 +2196,7 @@ bool LockProcess::x11Event(XEvent *event) // fall through case KeyPress: if ((mHackDelayStartupTimer) && (mHackDelayStartupTimer->isActive())) { - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } if (mBusy || !mDialogs.isEmpty()) { break; @@ -2193,12 +2206,12 @@ bool LockProcess::x11Event(XEvent *event) if (mLocked) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY if (mHackStartupEnabled) { - mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } - if ((!mLocked) && (!mInSecureDialog)) { + if (!mLocked && !mInSecureDialog) { stopSaver(); - kapp->quit(); + tdeApp->quit(); } if (mAutoLogout) { // we need to restart the auto logout countdown @@ -2210,7 +2223,7 @@ bool LockProcess::x11Event(XEvent *event) if (!mLocked || checkPass()) { mClosingWindows = true; stopSaver(); - kapp->quit(); + tdeApp->quit(); } else if (mAutoLogout) { // we need to restart the auto logout countdown @@ -2242,7 +2255,7 @@ bool LockProcess::x11Event(XEvent *event) else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { resume( false ); @@ -2299,7 +2312,7 @@ bool LockProcess::x11Event(XEvent *event) && event->xkey.window != mDialogs.first()->winId()) { XEvent ev2 = *event; ev2.xkey.window = ev2.xkey.subwindow = mDialogs.first()->winId(); - tqApp->x11ProcessEvent( &ev2 ); + tdeApp->x11ProcessEvent( &ev2 ); return true; } @@ -2433,14 +2446,14 @@ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt ) KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame ); button->setDefault( true ); button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) ); - connect( button, TQT_SIGNAL( clicked() ), &box, TQT_SLOT( accept() ) ); + connect( button, TQ_SIGNAL( clicked() ), &box, TQ_SLOT( accept() ) ); TQVBoxLayout *vbox = new TQVBoxLayout( &box ); vbox->addWidget( winFrame ); TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); - grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); + grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter ); execDialog( &box ); } @@ -2449,19 +2462,13 @@ static int run_vkbd = -1; void LockProcess::showVkbd() { if( run_vkbd == - 1 ) { -#ifdef WITH_HAL - int status = system( "hal-find-by-property --key system.formfactor.subtype --string tabletpc" ); -// status = 0; // enable for testing - run_vkbd = ( WIFEXITED( status ) && WEXITSTATUS( status ) == 0 && !TDEStandardDirs::findExe( "xvkbd" ).isEmpty()) ? 1 : 0; -#else // WITH_HAL run_vkbd = (!TDEStandardDirs::findExe( "xvkbd" ).isEmpty()); -#endif // WITH_HAL } if( run_vkbd ) { mVkbdWindows.clear(); mVkbdLastEventWindow = None; mKWinModule = new KWinModule( NULL, KWinModule::INFO_WINDOWS ); - connect( mKWinModule, TQT_SIGNAL( windowAdded( WId )), TQT_SLOT( windowAdded( WId ))); + connect( mKWinModule, TQ_SIGNAL( windowAdded( WId )), TQ_SLOT( windowAdded( WId ))); mVkbdProcess = new TDEProcess; *mVkbdProcess << "xvkbd" << "-compact" << "-geometry" << "-0-0" << "-xdm"; mVkbdProcess->start(); @@ -2567,7 +2574,7 @@ bool LockProcess::forwardVkbdEvent( XEvent* event ) } // vkbd windows are kept topmost, so just find the first one in the position for( TQValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin(); it != mVkbdWindows.end(); ++it ) { - if( TQT_TQRECT_OBJECT((*it).rect).contains( pos )) { + if( (*it).rect.contains( pos )) { // Find the subwindow where the event should actually go. // Not exactly cheap in the number of X roundtrips but oh well. Window window = (*it).id; @@ -2675,7 +2682,7 @@ void LockProcess::slotMouseActivity(XEvent *event) } // Clicked inside dialog; set focus - if (inFrame == TRUE) { + if (inFrame) { WId window = mDialogs.first()->winId(); XSetInputFocus(tqt_xdisplay(), window, RevertToParent, CurrentTime); fakeFocusIn(window); @@ -2685,20 +2692,20 @@ void LockProcess::slotMouseActivity(XEvent *event) } // Clicked inside window handle (or border); drag window - if ((inFrame == TRUE) && (inDialog == FALSE)) { + if (inFrame && !inDialog) { TQPoint oldPoint = mDialogs.first()->pos(); m_mouseDown = 1; m_dialogPrevX = oldPoint.x(); m_dialogPrevY = oldPoint.y(); m_mousePrevX = be->x_root; m_mousePrevY = be->y_root; - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::sizeAllCursor).handle(), CurrentTime); } } // Drag the window... if (event->type == MotionNotify) { - if (m_mouseDown == TRUE) { + if (m_mouseDown) { int deltaX = me->x_root - m_mousePrevX; int deltaY = me->y_root - m_mousePrevY; m_dialogPrevX = m_dialogPrevX + deltaX; @@ -2712,7 +2719,7 @@ void LockProcess::slotMouseActivity(XEvent *event) if (event->type == ButtonRelease) { m_mouseDown = 0; - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime); } } @@ -2823,6 +2830,7 @@ void LockProcess::processInputPipeCommand(TQString inputcommand) { } void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) { +#ifdef WITH_TDEHWLIB TQString login_name = TQString::null; X509CertificatePtrList certList = cdevice->cardX509Certificates(); if (certList.count() > 0) { @@ -2845,31 +2853,36 @@ void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) m_loginCardDevice = cdevice; if (dynamic_cast<SAKDlg*>(currentDialog)) { dynamic_cast<SAKDlg*>(currentDialog)->closeDialogForced(); - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } else if (dynamic_cast<SecureDlg*>(currentDialog)) { dynamic_cast<SecureDlg*>(currentDialog)->closeDialogForced(); - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } else if (dynamic_cast<PasswordDlg*>(currentDialog)) { signalPassDlgToAttemptCardLogin(); } } } +#endif } void LockProcess::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) { +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg) { passDlg->resetCardLogin(); } else { m_loginCardDevice = NULL; - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort())); } +#endif } -void LockProcess::signalPassDlgToAttemptCardLogin() { +void LockProcess::signalPassDlgToAttemptCardLogin() +{ +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg && m_loginCardDevice) { passDlg->attemptCardLogin(); @@ -2877,12 +2890,15 @@ void LockProcess::signalPassDlgToAttemptCardLogin() { else { if (currentDialog && m_loginCardDevice) { // Try again later - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } } +#endif } -void LockProcess::signalPassDlgToAttemptCardAbort() { +void LockProcess::signalPassDlgToAttemptCardAbort() +{ +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg) { passDlg->resetCardLogin(); @@ -2890,12 +2906,15 @@ void LockProcess::signalPassDlgToAttemptCardAbort() { else { if (currentDialog) { // Try again later - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort())); } } +#endif } -void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) { +void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB TQCString password; TQString pin_entry; @@ -2911,10 +2930,16 @@ void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographi else { cdevice->setProvidedPin(TQString::null); } +#endif } -TDECryptographicCardDevice* LockProcess::cryptographicCardDevice() { +TDECryptographicCardDevice* LockProcess::cryptographicCardDevice() +{ +#ifdef WITH_TDEHWLIB return m_loginCardDevice; +#else + return NULL; +#endif } void LockProcess::fullyOnline() { @@ -2942,7 +2967,7 @@ void LockProcess::saverReady() { // Control pipe handler // ControlPipeHandlerObject::ControlPipeHandlerObject() : TQObject() { - mParent = NULL; + mParent = nullptr; mRunning = false; mTerminate = false; mThreadID = 0L; @@ -2966,7 +2991,7 @@ void ControlPipeHandlerObject::run(void) { int display_number = atoi(TQString(XDisplayString(tqt_xdisplay())).replace(":","").ascii()); if (display_number < 0) { - printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n"); + printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n"); mRunning = false; TQApplication::eventLoop()->exit(-1); return; @@ -2997,7 +3022,7 @@ void ControlPipeHandlerObject::run(void) { } if (!mParent->mPipeOpen) { - printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file); + printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file); mRunning = false; TQApplication::eventLoop()->exit(-1); return; diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h index 4dc2d8bab..1afc9bb46 100644 --- a/kdesktop/lock/lockprocess.h +++ b/kdesktop/lock/lockprocess.h @@ -10,14 +10,8 @@ #ifndef __LOCKENG_H__ #define __LOCKENG_H__ -#include <ksslcertificate.h> - -#include <tdehardwaredevices.h> -#include <tdecryptographiccarddevice.h> - #include <kgreeterplugin.h> - -#include <kprocess.h> +#include <tdeprocess.h> #include <kpixmap.h> #include <krootpixmap.h> @@ -35,6 +29,11 @@ class KLibrary; class KWinModule; class KSMModalDialog; class LockProcess; +#ifdef WITH_TDEHWLIB +class TDECryptographicCardDevice; +#else +#define TDECryptographicCardDevice void +#endif struct GreeterPluginHandle { KLibrary *library; @@ -53,7 +52,7 @@ typedef TQValueList<Window> TQXLibWindowList; // class ControlPipeHandlerObject : public TQObject { - Q_OBJECT + TQ_OBJECT public: ControlPipeHandlerObject(); @@ -82,7 +81,7 @@ class ControlPipeHandlerObject : public TQObject // class LockProcess : public TQWidget { - Q_OBJECT + TQ_OBJECT public: LockProcess(); @@ -107,9 +106,6 @@ class LockProcess : public TQWidget TDECryptographicCardDevice* cryptographicCardDevice(); - signals: - void terminateHelperThread(); - public slots: void quitSaver(); void preparePopup(); diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cpp index 114ce7ef0..9f707c35d 100644 --- a/kdesktop/lock/main.cc +++ b/kdesktop/lock/main.cpp @@ -33,14 +33,14 @@ #include <kdebug.h> #include <tdeglobalsettings.h> #include <dcopref.h> -#include <ksimpleconfig.h> -#include <kstandarddirs.h> +#include <tdesimpleconfig.h> +#include <tdestandarddirs.h> #include <tdmtsak.h> #include <stdlib.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -58,49 +58,49 @@ TQXLibWindowList trinity_desktop_lock_hidden_window_list; // [FIXME] Add GUI configuration checkboxes for these three settings (see kdesktoprc [ScreenSaver] UseUnmanagedLockWindows, DelaySaverStart, and UseTDESAK) -bool trinity_desktop_lock_use_system_modal_dialogs = FALSE; -bool trinity_desktop_lock_delay_screensaver_start = FALSE; -bool trinity_desktop_lock_use_sak = FALSE; -bool trinity_desktop_lock_hide_active_windows = FALSE; -bool trinity_desktop_lock_hide_cancel_button = FALSE; -bool trinity_desktop_lock_forced = FALSE; - -LockProcess* trinity_desktop_lock_process = NULL; +bool trinity_desktop_lock_use_system_modal_dialogs = false; +bool trinity_desktop_lock_delay_screensaver_start = false; +bool trinity_desktop_lock_use_sak = false; +bool trinity_desktop_lock_hide_active_windows = false; +bool trinity_desktop_lock_hide_cancel_button = false; +bool trinity_desktop_lock_forced = false; +// This is a temporary variable used till a fix for the grab issue is prepared +bool trinity_desktop_lock_failed_grab = false; bool signalled_forcelock; bool signalled_dontlock; bool signalled_securedialog; bool signalled_blank; bool signalled_run; -bool in_internal_mode = FALSE; +bool in_internal_mode = false; -bool argb_visual = FALSE; +bool argb_visual = false; pid_t kdesktop_pid = -1; -bool trinity_desktop_lock_settings_initialized = FALSE; +bool trinity_desktop_lock_settings_initialized = false; static void sigusr1_handler(int) { - signalled_forcelock = TRUE; + signalled_forcelock = true; } static void sigusr2_handler(int) { - signalled_dontlock = TRUE; + signalled_dontlock = true; } -static void sigusr3_handler(int) +static void sigwinch_handler(int) { - signalled_securedialog = TRUE; + signalled_securedialog = true; } -static void sigusr4_handler(int) +static void sigttin_handler(int) { - signalled_blank = TRUE; + signalled_blank = true; } -static void sigusr5_handler(int) +static void sigttou_handler(int) { - signalled_run = TRUE; + signalled_run = true; } static int trapXErrors(Display *, XErrorEvent *) @@ -236,9 +236,9 @@ int main( int argc, char **argv ) XSetErrorHandler(trapXErrors); - MyApp* app = NULL; + MyApp *app = nullptr; - while (1 == 1) { + while (true) { sigset_t new_mask; sigset_t orig_mask; @@ -246,11 +246,11 @@ int main( int argc, char **argv ) sigfillset(&new_mask); sigprocmask(SIG_BLOCK, &new_mask, NULL); - signalled_forcelock = FALSE; - signalled_dontlock = FALSE; - signalled_securedialog = FALSE; - signalled_blank = FALSE; - signalled_run = FALSE; + signalled_forcelock = false; + signalled_dontlock = false; + signalled_securedialog = false; + signalled_blank = false; + signalled_run = false; int kdesktop_screen_number = 0; int starting_screen = 0; @@ -261,7 +261,7 @@ int main( int argc, char **argv ) if (TDEGlobalSettings::isMultiHead()) { Display *dpy = XOpenDisplay(NULL); - if (! dpy) { + if (!dpy) { fprintf(stderr, "%s: FATAL ERROR: couldn't open display '%s'\n", argv[0], XDisplayName(NULL)); @@ -303,14 +303,11 @@ int main( int argc, char **argv ) } } - env.sprintf("DISPLAY=%s.%d", display_name.data(), - kdesktop_screen_number); + env.sprintf("DISPLAY=%s.%d", display_name.data(), kdesktop_screen_number); kdDebug() << "env " << env << endl; if (putenv(strdup(env.data()))) { - fprintf(stderr, - "%s: WARNING: unable to set DISPLAY environment variable\n", - argv[0]); + fprintf(stderr, "%s: WARNING: unable to set DISPLAY environment variable\n", argv[0]); perror("putenv()"); } } @@ -338,7 +335,13 @@ int main( int argc, char **argv ) int len; char procpath[PATH_MAX]; char fullpath[PATH_MAX]; +#if defined(__dilos__) + snprintf(procpath, sizeof(procpath), "/proc/%d/path/a.out", pid); +#elif defined(__FreeBSD__) || defined (__DragonFly__) + snprintf(procpath, sizeof(procpath), "/compat/linux/proc/%d/exe", pid); +#else /* Linux way as default */ snprintf(procpath, sizeof(procpath), "/proc/%d/exe", pid); +#endif len = readlink( procpath, fullpath, sizeof(fullpath) ); if (len >= 0) { fullpath[len] = 0; @@ -368,17 +371,17 @@ int main( int argc, char **argv ) TDEGlobal::locale()->insertCatalogue("libdmctl"); struct stat st; - KSimpleConfig* tdmconfig; + TDESimpleConfig* tdmconfig; if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) { - tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); + tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); } else { - tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); + tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); } tdmconfig->setGroup("X-:*-Greeter"); // Create new LockProcess, which also spawns threads inheriting the blocked signal mask - trinity_desktop_lock_process = new LockProcess; + LockProcess lock_process; // Unblock reception of all signals in this thread sigprocmask(SIG_UNBLOCK, &new_mask, NULL); @@ -390,7 +393,7 @@ int main( int argc, char **argv ) kdesktop_pid = atoi(args->getOption( "internal" )); struct sigaction act; - in_internal_mode = TRUE; + in_internal_mode = true; // handle SIGUSR1 act.sa_handler= sigusr1_handler; @@ -404,20 +407,20 @@ int main( int argc, char **argv ) sigaddset(&(act.sa_mask), SIGUSR2); act.sa_flags = 0; sigaction(SIGUSR2, &act, 0L); - // handle SIGWINCH (an ersatz SIGUSR3) - act.sa_handler= sigusr3_handler; + // handle SIGWINCH (as custom user signal rather than its inherent meaning) + act.sa_handler= sigwinch_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGWINCH); act.sa_flags = 0; sigaction(SIGWINCH, &act, 0L); - // handle SIGTTIN (an ersatz SIGUSR4) - act.sa_handler= sigusr4_handler; + // handle SIGTTIN (as custom user signal rather than its inherent meaning) + act.sa_handler= sigttin_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGTTIN); act.sa_flags = 0; sigaction(SIGTTIN, &act, 0L); - // handle SIGTTOU (an ersatz SIGUSR5) - act.sa_handler= sigusr5_handler; + // handle SIGTTOU (as custom user signal rather than its inherent meaning) + act.sa_handler= sigttou_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGTTOU); act.sa_flags = 0; @@ -431,7 +434,7 @@ int main( int argc, char **argv ) sigaddset(&new_mask,SIGTTIN); sigaddset(&new_mask,SIGTTOU); - while (signalled_run == FALSE) { + while (!signalled_run) { // let kdesktop know the saver process is ready if (kill(kdesktop_pid, SIGTTIN) < 0) { // The controlling kdesktop process probably died. Commit suicide... @@ -448,7 +451,7 @@ int main( int argc, char **argv ) // wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU sigprocmask(SIG_BLOCK, &new_mask, &orig_mask); - if (signalled_run != TRUE) { + if (!signalled_run) { sigsuspend(&orig_mask); } sigprocmask(SIG_UNBLOCK, &new_mask, NULL); @@ -488,42 +491,54 @@ int main( int argc, char **argv ) delete tdmconfig; - if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)) { - trinity_desktop_lock_forced = TRUE; + if (args->isSet( "forcelock" ) || signalled_forcelock) { + trinity_desktop_lock_forced = true; } - trinity_desktop_lock_process->init(child, (args->isSet( "blank" ) || (signalled_blank == TRUE))); + lock_process.init(child, (args->isSet( "blank" ) || signalled_blank)); if (!child) { - trinity_desktop_lock_process->setChildren(child_sockets); + lock_process.setChildren(child_sockets); } else { - trinity_desktop_lock_process->setParent(parent_connection); + lock_process.setParent(parent_connection); } + trinity_desktop_lock_failed_grab = false; bool rt; - if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE))) { - rt = trinity_desktop_lock_process->lock(); + if( (!child && args->isSet( "forcelock" )) || signalled_forcelock) { + rt = lock_process.lock(); } - else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) { - rt = trinity_desktop_lock_process->dontLock(); + else if( child || (args->isSet( "dontlock" ) || signalled_dontlock)) { + rt = lock_process.dontLock(); } - else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) { + else if( child || (args->isSet( "securedialog" ) || signalled_securedialog)) { int retcode = tde_sak_verify_calling_process(); if (retcode == 0) { - rt = trinity_desktop_lock_process->runSecureDialog(); + rt = lock_process.runSecureDialog(); } else { return 1; } } else { - rt = trinity_desktop_lock_process->defaultSave(); + rt = lock_process.defaultSave(); } + + // Make sure to handle all pending responses from the X server. + // If we don't do this, in case of failed activation of the saver/lock screen, + // we will end up in a dirty state and the screen lock will no longer hide the windows + // on the screen due to 'm_rootPixmap' failing to load the background image. + // This is caused by a 'XConvertSelection' request in 'TDESharedPixmap::loadFromShared' + // not being handled and causing the corresponding property to become unusuable in X for + // subsequent lock requests. + XSync(tqt_xdisplay(), False); + app->processEvents(); + if (!rt) { - return 0; + return (trinity_desktop_lock_failed_grab ? 0 : 12); } - if (in_internal_mode == FALSE) { + if (!in_internal_mode) { trinity_desktop_lock_hidden_window_list.clear(); int ret = app->exec(); restore_hidden_override_redirect_windows(); @@ -542,9 +557,6 @@ int main( int argc, char **argv ) return 12; } - delete trinity_desktop_lock_process; - trinity_desktop_lock_process = NULL; - // FIXME // We should not have to return (restart) at all, // but it seems that some X11 connections are left active, diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h index fd19c6183..162542555 100644 --- a/kdesktop/lock/main.h +++ b/kdesktop/lock/main.h @@ -25,10 +25,10 @@ #include <time.h> class MyApp : public TDEApplication { - Q_OBJECT + TQ_OBJECT public: MyApp() : TDEApplication(), lastTick( 0 ) {} - MyApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {} + MyApp(Display *display, TQt::HANDLE visual = 0, TQt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {} protected: bool x11EventFilter( XEvent * ); diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cpp index 1fc5d260c..5b1fea0f3 100644 --- a/kdesktop/lock/querydlg.cc +++ b/kdesktop/lock/querydlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -111,13 +111,13 @@ QueryDlg::QueryDlg(LockProcess *parent) layButtons->addWidget( ok ); frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addLayout( layStatus, 0, 1 ); frameLayout->addLayout( layPin, 2, 1 ); frameLayout->addMultiCellWidget( sep, 3, 3, 0, 1 ); frameLayout->addMultiCellLayout( layButtons, 4, 4, 0, 1 ); - connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK())); + connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK())); installEventFilter(this); setFixedSize( sizeHint() ); @@ -140,7 +140,7 @@ TQString QueryDlg::getEntry() void QueryDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/querydlg.h b/kdesktop/lock/querydlg.h index d5c4f7f33..0b3e55aa8 100644 --- a/kdesktop/lock/querydlg.h +++ b/kdesktop/lock/querydlg.h @@ -28,7 +28,7 @@ class TQListView; // class QueryDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: QueryDlg(LockProcess *parent); diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cpp index 803c77919..5b23a9c5a 100644 --- a/kdesktop/lock/sakdlg.cc +++ b/kdesktop/lock/sakdlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -108,7 +108,7 @@ SAKDlg::SAKDlg(LockProcess *parent) mSAKProcess = new TDEProcess; *mSAKProcess << "tdmtsak"; - connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); + connect(mSAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited())); mSAKProcess->start(); } @@ -142,7 +142,7 @@ void SAKDlg::reject() void SAKDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/sakdlg.h b/kdesktop/lock/sakdlg.h index faded4b6e..12d80b8cb 100644 --- a/kdesktop/lock/sakdlg.h +++ b/kdesktop/lock/sakdlg.h @@ -26,7 +26,7 @@ class TQListView; // class SAKDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: SAKDlg(LockProcess *parent); diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cpp index fca79a707..ba2b08af0 100644 --- a/kdesktop/lock/securedlg.cc +++ b/kdesktop/lock/securedlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -137,11 +137,11 @@ SecureDlg::SecureDlg(LockProcess *parent) frameLayout->addMultiCellWidget( sep, 2, 2, 0, 1 ); frameLayout->addMultiCellLayout( layPBGrid, 3, 3, 0, 1, AlignLeft | AlignVCenter); - connect(mCancelButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnCancel())); - connect(mLockButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnLock())); - connect(mTaskButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnTask())); - connect(mShutdownButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnShutdown())); - connect(mSwitchButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnSwitchUser())); + connect(mCancelButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnCancel())); + connect(mLockButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnLock())); + connect(mTaskButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnTask())); + connect(mShutdownButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnShutdown())); + connect(mSwitchButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnSwitchUser())); TQSize dlgSz = sizeHint(); int btnSize = dlgSz.width(); diff --git a/kdesktop/lock/securedlg.h b/kdesktop/lock/securedlg.h index 9ad0ac1da..c6c9fa7fe 100644 --- a/kdesktop/lock/securedlg.h +++ b/kdesktop/lock/securedlg.h @@ -27,7 +27,7 @@ class TQListView; // class SecureDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: SecureDlg(LockProcess *parent); diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc deleted file mode 100644 index f02e51440..000000000 --- a/kdesktop/lockeng.cc +++ /dev/null @@ -1,1004 +0,0 @@ -//=========================================================================== -// -// This file is part of the TDE project -// -// Copyright (c) 1999 Martin R. Jones <mjones@kde.org> -// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> -// - - -#include <config.h> - -#include <stdlib.h> -#include <sys/stat.h> - -#include <ksslcertificate.h> - -#include <tdehardwaredevices.h> -#include <tdecryptographiccarddevice.h> - -#include <kstandarddirs.h> -#include <tdeapplication.h> -#include <kservicegroup.h> -#include <ksimpleconfig.h> -#include <kdebug.h> -#include <kuser.h> -#include <tdelocale.h> -#include <tqfile.h> -#include <tqtimer.h> -#include <tqeventloop.h> -#include <dcopclient.h> -#include <assert.h> - -#include <dmctl.h> - -#include <dbus/dbus-shared.h> -#include <tqdbusdata.h> -#include <tqdbuserror.h> -#include <tqdbusmessage.h> -#include <tqdbusobjectpath.h> -#include <tqdbusproxy.h> - -#include "lockeng.h" -#include "lockeng.moc" -#include "kdesktopsettings.h" - -#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1" -#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1" -#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager" -#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session" -#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat" - -#define DBUS_CONN_NAME "kdesktop_lock" - -#include "xautolock_c.h" -extern xautolock_corner_t xautolock_corners[ 4 ]; - -bool trinity_lockeng_sak_available = TRUE; - -SaverEngine* m_masterSaverEngine = NULL; -static void sigusr1_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->m_threadHelperObject->slotLockProcessWaiting(); - } -} -static void sigusr2_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->m_threadHelperObject->slotLockProcessFullyActivated(); - } -} -static void sigttin_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->slotLockProcessReady(); - } -} - -//=========================================================================== -// -// Screen saver engine. Doesn't handle the actual screensaver window, -// starting screensaver hacks, or password entry. That's done by -// a newly started process. -// -SaverEngine::SaverEngine() - : TQWidget(), - KScreensaverIface(), - mBlankOnly(false), - mSAKProcess(NULL), - mTerminationRequested(false), - mSaverProcessReady(false), - mNewVTAfterLockEngage(false), - mValidCryptoCardInserted(false), - mSwitchVTAfterLockEngage(-1), - dBusLocal(0), - dBusWatch(0), - systemdSession(0) -{ - // handle SIGUSR1 - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigusr1_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGUSR1); - mSignalAction.sa_flags = 0; - sigaction(SIGUSR1, &mSignalAction, 0L); - - // handle SIGUSR2 - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigusr2_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGUSR2); - mSignalAction.sa_flags = 0; - sigaction(SIGUSR2, &mSignalAction, 0L); - - // handle SIGTTIN - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigttin_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGTTIN); - mSignalAction.sa_flags = 0; - sigaction(SIGTTIN, &mSignalAction, 0L); - - // Save X screensaver parameters - XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval, - &mXBlanking, &mXExposures); - - mState = Waiting; - mXAutoLock = 0; - mEnabled = false; - - m_helperThread = new TQEventLoopThread; - m_helperThread->start(); - m_threadHelperObject = new SaverEngineThreadHelperObject; - m_threadHelperObject->moveToThread(m_helperThread); - connect(this, TQT_SIGNAL(terminateHelperThread()), m_threadHelperObject, TQT_SLOT(terminateThread())); - connect(m_threadHelperObject, TQT_SIGNAL(lockProcessWaiting()), this, TQT_SLOT(lockProcessWaiting())); - connect(m_threadHelperObject, TQT_SIGNAL(lockProcessFullyActivated()), this, TQT_SLOT(lockProcessFullyActivated())); - - connect(&mLockProcess, TQT_SIGNAL(processExited(TDEProcess *)), - TQT_SLOT(lockProcessExited())); - - configure(); - - // Create SAK process only if SAK is enabled - KSimpleConfig *config; - struct stat st; - if (stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); - } - else { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); - } - config->setGroup("X-:*-Greeter"); - bool useSAKProcess = false; -#ifdef BUILD_TSAK - useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); -#endif - if (useSAKProcess) { - mSAKProcess = new TDEProcess; - *mSAKProcess << "tdmtsak"; - connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); - TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) ); - } - - mLockProcess.clearArguments(); - TQString path = TDEStandardDirs::findExe( "kdesktop_lock" ); - if( path.isEmpty()) - { - kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl; - } - mLockProcess << path; - mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid()); - if (mLockProcess.start() == false ) - { - kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl; - } - - // Prevent kdesktop_lock signals from being handled by the wrong (GUI) thread - sigemptyset(&mThreadBlockSet); - sigaddset(&mThreadBlockSet, SIGUSR1); - sigaddset(&mThreadBlockSet, SIGUSR2); - sigaddset(&mThreadBlockSet, SIGTTIN); - pthread_sigmask(SIG_BLOCK, &mThreadBlockSet, NULL); - - // Wait for the saver process to signal ready... - if (!waitForLockProcessStart()) { - kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; - } - - // lock the desktop if required - config->setGroup("X-:0-Core"); - bool autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false); - bool autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false); - if (autoLoginEnable && autoLoginLocked) { - mLockProcess.kill(SIGTTOU); - mLockProcess.kill(SIGUSR1); - } - delete config; - config = NULL; - - // Initialize SmartCard readers - TDEGenericDevice *hwdevice; - TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); - TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); - for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) { - TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); - connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); - cdevice->enableCardMonitoring(true); - } - - // Check card login status - KUser userinfo; - TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; - TQFile flagFile(fileName); - if (flagFile.open(IO_ReadOnly)) { - TQTextStream stream(&flagFile); - if (stream.readLine().startsWith("1")) { - // Card was likely used to log in - TQTimer::singleShot(5000, this, SLOT(cardStartupTimeout())); - } - flagFile.close(); - } - - dBusConnect(); -} - -//--------------------------------------------------------------------------- -// -// Destructor - usual cleanups. -// -SaverEngine::~SaverEngine() -{ - if (mState == Waiting) { - kill(mLockProcess.pid(), SIGKILL); - } - - mLockProcess.detach(); // don't kill it if we crash - delete mXAutoLock; - - dBusClose(); - - // Restore X screensaver parameters - XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking, - mXExposures); - - terminateHelperThread(); - m_helperThread->wait(); - delete m_threadHelperObject; - delete m_helperThread; -} - -void SaverEngine::cardStartupTimeout() { - if (!mValidCryptoCardInserted) { - // Restore saver timeout - configure(); - - // Force lock - lockScreen(); - } -} - -void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) { - TQString login_name = TQString::null; - X509CertificatePtrList certList = cdevice->cardX509Certificates(); - if (certList.count() > 0) { - KSSLCertificate* card_cert = NULL; - card_cert = KSSLCertificate::fromX509(certList[0]); - TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false); - for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it ) { - TQString lcpart = (*it).lower(); - if (lcpart.startsWith("cn=")) { - login_name = lcpart.right(lcpart.length() - strlen("cn=")); - } - } - delete card_cert; - } - - if (login_name != "") { - KUser user; - if (login_name == user.loginName()) { - mValidCryptoCardInserted = true; - } - } -} - -void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) { - if (mValidCryptoCardInserted) { - mValidCryptoCardInserted = false; - - // Restore saver timeout - configure(); - - // Force lock - lockScreen(); - } -} - -//--------------------------------------------------------------------------- -// -// This should be called only using DCOP. -// -void SaverEngine::lock() -{ - lockScreen(true); -} - -//--------------------------------------------------------------------------- -// -// Lock the screen -// -void SaverEngine::lockScreen(bool DCOP) -{ - if (mValidCryptoCardInserted) { - return; - } - - bool ok = true; - if (mState == Waiting) - { - ok = startLockProcess( ForceLock ); - // It takes a while for kdesktop_lock to start and lock the screen. - // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect. - // This is done only for --forcelock . - if( ok && mState != Saving ) - { - if (DCOP) { - DCOPClientTransaction* trans = kapp->dcopClient()->beginTransaction(); - if (trans) { - mLockTransactions.append( trans ); - } - } - } - } - else - { - mLockProcess.kill( SIGHUP ); - } -} - -void SaverEngine::processLockTransactions() -{ - for( TQValueVector< DCOPClientTransaction* >::ConstIterator it = mLockTransactions.begin(); - it != mLockTransactions.end(); - ++it ) - { - TQCString replyType = "void"; - TQByteArray arr; - kapp->dcopClient()->endTransaction( *it, replyType, arr ); - } - mLockTransactions.clear(); -} - -void SaverEngine::saverLockReady() -{ - if( mState != Engaging ) - { - kdDebug( 1204 ) << "Got unexpected saverReady()" << endl; - } - kdDebug( 1204 ) << "Saver Lock Ready" << endl; - processLockTransactions(); -} - -//--------------------------------------------------------------------------- -void SaverEngine::save() -{ - if (!mValidCryptoCardInserted) { - if (mState == Waiting) { - startLockProcess( DefaultLock ); - } - } -} - -//--------------------------------------------------------------------------- -void SaverEngine::quit() -{ - if (mState == Saving || mState == Engaging) - { - stopLockProcess(); - } -} - -//--------------------------------------------------------------------------- -bool SaverEngine::isEnabled() -{ - return mEnabled; -} - -//--------------------------------------------------------------------------- -bool SaverEngine::enable( bool e ) -{ - if ( e == mEnabled ) - return true; - - // If we aren't in a suitable state, we will not reconfigure. - if (mState != Waiting) - return false; - - mEnabled = e; - - if (mEnabled) { - if ( !mXAutoLock ) { - mXAutoLock = new XAutoLock(); - connect(mXAutoLock, TQT_SIGNAL(timeout()), TQT_SLOT(idleTimeout())); - } - mXAutoLock->setTimeout(mTimeout); - mXAutoLock->setDPMS(true); - //mXAutoLock->changeCornerLockStatus( mLockCornerTopLeft, mLockCornerTopRight, mLockCornerBottomLeft, mLockCornerBottomRight); - - // We'll handle blanking - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - kdDebug() << "XSetScreenSaver " << mTimeout + 10 << endl; - - mXAutoLock->start(); - - kdDebug(1204) << "Saver Engine started, timeout: " << mTimeout << endl; - } - else { - if (mXAutoLock) { - delete mXAutoLock; - mXAutoLock = 0; - } - - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); - kdDebug(1204) << "Saver Engine disabled" << endl; - } - - return true; -} - -//--------------------------------------------------------------------------- -bool SaverEngine::isBlanked() -{ - return (mState != Waiting); -} - -void SaverEngine::enableExports() -{ -#ifdef Q_WS_X11 - kdDebug(270) << k_lineinfo << "activating background exports.\n"; - DCOPClient *client = kapp->dcopClient(); - if (!client->isAttached()) { - client->attach(); - } - TQByteArray data; - TQDataStream args( data, IO_WriteOnly ); - args << 1; - - TQCString appname( "kdesktop" ); - int screen_number = DefaultScreen(tqt_xdisplay()); - if ( screen_number ) { - appname.sprintf("kdesktop-screen-%d", screen_number ); - } - - client->send( appname, "KBackgroundIface", "setExport(int)", data ); -#endif -} - -//--------------------------------------------------------------------------- -void SaverEngine::handleSecureDialog() -{ - // Wait for SAK press - if (mSAKProcess && !mSAKProcess->isRunning()) { - mSAKProcess->start(); - } -} - -void SaverEngine::slotSAKProcessExited() -{ - if (!mSAKProcess) { - printf("[kdesktop] SAK process does not exist. Something went wrong. Ignoring...\n"); fflush(stdout); - return; - } - int retcode = mSAKProcess->exitStatus(); - if ((retcode != 0) && (mSAKProcess->normalExit())) { - trinity_lockeng_sak_available = FALSE; - printf("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). Check tdmtsak for proper functionality.\n", retcode); fflush(stdout); - } - - if (mState == Preparing) { - return; - } - - if ((mSAKProcess->normalExit()) && (trinity_lockeng_sak_available == TRUE)) { - bool ok = true; - if (mState == Waiting) - { - ok = startLockProcess( SecureDialog ); - if( ok && mState != Saving ) - { - } - } - else - { - mLockProcess.kill( SIGHUP ); - } - } -} - -//--------------------------------------------------------------------------- -// -// Read and apply configuration. -// -void SaverEngine::configure() -{ - // If we aren't in a suitable state, we will not reconfigure. - if (mState != Waiting) { - return; - } - - // create a new config obj to ensure we read the latest options - KDesktopSettings::self()->readConfig(); - - bool e = KDesktopSettings::screenSaverEnabled(); - mTimeout = KDesktopSettings::timeout(); - - mEnabled = !e; // force the enable() - - int action; - action = KDesktopSettings::actionTopLeft(); - xautolock_corners[0] = applyManualSettings(action); - action = KDesktopSettings::actionTopRight(); - xautolock_corners[1] = applyManualSettings(action); - action = KDesktopSettings::actionBottomLeft(); - xautolock_corners[2] = applyManualSettings(action); - action = KDesktopSettings::actionBottomRight(); - xautolock_corners[3] = applyManualSettings(action); - - enable( e ); -} - -//--------------------------------------------------------------------------- -// -// Set a variable to indicate only using the blanker and not the saver. -// -void SaverEngine::setBlankOnly( bool blankOnly ) -{ - mBlankOnly = blankOnly; - // FIXME: if running, stop and restart? What about security - // implications of this? -} - -bool SaverEngine::restartDesktopLockProcess() -{ - if (!mLockProcess.isRunning()) { - mSaverProcessReady = false; - mLockProcess.clearArguments(); - TQString path = TDEStandardDirs::findExe( "kdesktop_lock" ); - if (path.isEmpty()) { - kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl; - return false; - } - mLockProcess << path; - mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid()); - if (mLockProcess.start() == false) { - kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl; - return false; - } - // Wait for the saver process to signal ready... - if (!waitForLockProcessStart()) { - kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; - return false; - } - } - return true; -} - -//--------------------------------------------------------------------------- -// -// Start the screen saver. -// -bool SaverEngine::startLockProcess( LockType lock_type ) -{ - int ret; - - if (mState == Saving) { - return true; - } - - mState = Preparing; - if (mSAKProcess) { - mSAKProcess->kill(SIGTERM); - } - - enableExports(); - - kdDebug(1204) << "SaverEngine: starting saver" << endl; - emitDCOPSignal("KDE_start_screensaver()", TQByteArray()); - - if (!restartDesktopLockProcess()) { - mState = Waiting; - return false; - } - - switch( lock_type ) - { - case ForceLock: - mLockProcess.kill(SIGUSR1); // Request forcelock - break; - case DontLock: - mLockProcess.kill(SIGUSR2); // Request dontlock - break; - case SecureDialog: - mLockProcess.kill(SIGWINCH); // Request secure dialog - break; - default: - break; - } - if (mBlankOnly) { - mLockProcess.kill(SIGTTIN); // Request blanking - } - - ret = mLockProcess.kill(SIGTTOU); // Start lock - if (!ret) { - mState = Waiting; - return false; - } - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures); - - mState = Engaging; - if (mXAutoLock) { - mXAutoLock->stop(); - } - return true; -} - -//--------------------------------------------------------------------------- -// -// Stop the screen saver. -// -void SaverEngine::stopLockProcess() -{ - if (mState == Waiting) { - kdWarning(1204) << "SaverEngine::stopSaver() saver not active" << endl; - return; - } - kdDebug(1204) << "SaverEngine: stopping lock" << endl; - emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); - - mTerminationRequested = true; - mLockProcess.kill(); - - if (mEnabled) { - if (mXAutoLock) { - mXAutoLock->start(); - } - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - } - processLockTransactions(); - mState = Waiting; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(false); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } -} - -void SaverEngine::recoverFromHackingAttempt() -{ - // Try to relaunch saver with forcelock - if (!startLockProcess(ForceLock)) { - // Terminate the TDE session ASAP! - // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387 - TQByteArray data; - TQDataStream arg(data, IO_WriteOnly); - arg << (int)0 << (int)0 << (int)2; - if (!kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data)) { - // Someone got to DCOP before we did - // Try an emergency system logout - system("logout"); - } - } -} - -void SaverEngine::lockProcessExited() -{ - bool abnormalExit = false; - if (mLockProcess.normalExit() == false) { - abnormalExit = true; - } - else { - if (mLockProcess.exitStatus() != 0) { - abnormalExit = true; - } - } - if (mTerminationRequested == true) { - abnormalExit = false; - mTerminationRequested = false; - } - if (abnormalExit == true) { - // PROBABLE HACKING ATTEMPT DETECTED - restartDesktopLockProcess(); - mState = Waiting; - TQTimer::singleShot( 100, this, SLOT(recoverFromHackingAttempt()) ); - } - else { - // Restart the lock process - restartDesktopLockProcess(); - } -} - -void SaverEngineThreadHelperObject::slotLockProcessWaiting() -{ - // lockProcessWaiting cannot be called directly from a signal handler, as it will hang in certain obscure circumstances - // Instead we use a single-shot timer to immediately call lockProcessWaiting once control has returned to the Qt main loop - lockProcessWaiting(); -} - -void SaverEngineThreadHelperObject::slotLockProcessFullyActivated() -{ - lockProcessFullyActivated(); -} - -void SaverEngine::lockProcessFullyActivated() -{ - mState = Saving; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(true); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } - - if (mNewVTAfterLockEngage) { - DM().startReserve(); - mNewVTAfterLockEngage = false; - } - else if (mSwitchVTAfterLockEngage != -1) { - DM().switchVT(mSwitchVTAfterLockEngage); - mSwitchVTAfterLockEngage = -1; - } -} - -void SaverEngine::slotLockProcessReady() -{ - mSaverProcessReady = true; -} - -void SaverEngine::lockProcessWaiting() -{ - kdDebug(1204) << "SaverEngine: lock exited" << endl; - if (trinity_lockeng_sak_available == TRUE) { - handleSecureDialog(); - } - if( mState == Waiting ) { - return; - } - emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); - if (mEnabled) { - if (mXAutoLock) { - mXAutoLock->start(); - } - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - } - processLockTransactions(); - mState = Waiting; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(false); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } -} - -//--------------------------------------------------------------------------- -// -// XAutoLock has detected the required idle time. -// -void SaverEngine::idleTimeout() -{ - if (!mValidCryptoCardInserted) { - // disable X screensaver - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); - startLockProcess( DefaultLock ); - } -} - -xautolock_corner_t SaverEngine::applyManualSettings(int action) -{ - if (action == 0) { - kdDebug() << "no lock" << endl; - return ca_nothing; - } - else if (action == 1) { - kdDebug() << "lock screen" << endl; - return ca_forceLock; - } - else if (action == 2) { - kdDebug() << "prevent lock" << endl; - return ca_dontLock; - } - else{ - kdDebug() << "no lock nothing" << endl; - return ca_nothing; - } -} - -/*! - * This function try a reconnect to D-Bus. - * \return boolean with the result of the operation - * \retval true if successful reconnected to D-Bus - * \retval false if unsuccessful - */ -bool SaverEngine::dBusReconnect() { - // close D-Bus connection - dBusClose(); - // init D-Bus conntection - return (dBusConnect()); -} - -/*! - * This function is used to close D-Bus connection. - */ -void SaverEngine::dBusClose() { - if( dBusConn.isConnected() ) { - if( dBusLocal ) { - delete dBusLocal; - dBusLocal = 0; - } - if( dBusWatch ) { - delete dBusWatch; - dBusWatch = 0; - } - if( systemdSession ) { - delete systemdSession; - systemdSession = 0; - } - } - dBusConn.closeConnection(DBUS_CONN_NAME); -} - -/*! - * This function is used to connect to D-Bus. - */ -bool SaverEngine::dBusConnect() { - dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME); - if( !dBusConn.isConnected() ) { - kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl; - TQTimer::singleShot(4000, this, TQT_SLOT(dBusReconnect())); - return false; - } - - // watcher for Disconnect signal - dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn); - TQObject::connect(dBusLocal, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - - // watcher for NameOwnerChanged signals - dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); - TQObject::connect(dBusWatch, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - - // find already running SystemD - TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); - if( checkSystemD.canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE); - TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params); - if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool() ) { - onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE); - } - } - return true; -} - -/*! - * This function handles D-Bus service registering - */ -void SaverEngine::onDBusServiceRegistered(const TQString& service) { - if( service == SYSTEMD_LOGIN1_SERVICE ) { - // get current systemd session - TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn); - TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath(); - if( managerIface.canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromUInt32( getpid() ); - TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params); - if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 ) { - systemdSessionPath = reply[0].toObjectPath(); - } - } - // wather for systemd session signals - if( systemdSessionPath.isValid() ) { - systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn); - TQObject::connect(systemdSession, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - } - return; - } -} - -/*! - * This function handles D-Bus service unregistering - */ -void SaverEngine::onDBusServiceUnregistered(const TQString& service) { - if( service == SYSTEMD_LOGIN1_SERVICE ) { - if( systemdSession ) { - delete systemdSession; - systemdSession = 0; - } - return; - } -} - -/*! - * This function handles signals from the D-Bus daemon. - */ -void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg) { - // dbus terminated - if( msg.path() == DBUS_PATH_LOCAL - && msg.interface() == DBUS_INTERFACE_LOCAL - && msg.member() == "Disconnected" ) { - dBusClose(); - TQTimer::singleShot(1000, this, TQT_SLOT(dBusReconnect())); - return; - } - - // service registered / unregistered - if( msg.path() == DBUS_PATH_DBUS - && msg.interface() == DBUS_INTERFACE_DBUS - && msg.member() == "NameOwnerChanged" ) { - if( msg[1].toString().isEmpty() ) { - // old-owner is empty - onDBusServiceRegistered(msg[0].toString()); - } - if( msg[2].toString().isEmpty() ) { - // new-owner is empty - onDBusServiceUnregistered(msg[0].toString()); - } - return; - } - - // systemd signal Lock() - if( systemdSession && systemdSession->canSend() - && msg.path() == systemdSession->path() - && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE - && msg.member() == "Lock") { - lockScreen(); - return; - } - - // systemd signal Unlock() - if( systemdSession && systemdSession->canSend() - && msg.path() == systemdSession->path() - && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE - && msg.member() == "Unlock") { - // unlock? - return; - } -} - -bool SaverEngine::waitForLockProcessStart() { - sigset_t new_mask; - sigset_t empty_mask; - sigemptyset(&empty_mask); - - // ensure that SIGCHLD is not subject to a race condition - sigemptyset(&new_mask); - sigaddset(&new_mask, SIGCHLD); - - pthread_sigmask(SIG_BLOCK, &new_mask, NULL); - while ((mLockProcess.isRunning()) && (!mSaverProcessReady)) { - // wait for any signal(s) to arrive - sigsuspend(&empty_mask); - } - pthread_sigmask(SIG_UNBLOCK, &new_mask, NULL); - - return mLockProcess.isRunning(); -} - -bool SaverEngine::waitForLockEngage() { - sigset_t empty_mask; - sigemptyset(&empty_mask); - - // wait for SIGUSR1, SIGUSR2, SIGTTIN - while ((mLockProcess.isRunning()) && (mState != Waiting) && (mState != Saving)) { - // wait for any signal(s) to arrive - sigsuspend(&empty_mask); - } - - return mLockProcess.isRunning(); -} - -void SaverEngine::lockScreenAndDoNewSession() { - mNewVTAfterLockEngage = true; - lockScreen(); -} - -void SaverEngine::lockScreenAndSwitchSession(int vt) { - mSwitchVTAfterLockEngage = vt; - lockScreen(); -} - -void SaverEngineThreadHelperObject::terminateThread() { - TQEventLoop* eventLoop = TQApplication::eventLoop(); - if (eventLoop) { - eventLoop->exit(0); - } -} diff --git a/kdesktop/lockeng.cpp b/kdesktop/lockeng.cpp new file mode 100644 index 000000000..fc3c9db6e --- /dev/null +++ b/kdesktop/lockeng.cpp @@ -0,0 +1,1049 @@ +//=========================================================================== +// +// This file is part of the TDE project +// +// Copyright (c) 1999 Martin R. Jones <mjones@kde.org> +// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> +// + +#include <config.h> + +#include <stdlib.h> +#include <sys/stat.h> +#include <tdeglobal.h> + +#ifdef WITH_TDEHWLIB +#include <ksslcertificate.h> +#include <kuser.h> +#include <tdehardwaredevices.h> +#include <tdecryptographiccarddevice.h> +#endif + +#include <tdestandarddirs.h> +#include <tdeapplication.h> +#include <kservicegroup.h> +#include <tdesimpleconfig.h> +#include <kdebug.h> +#include <tdelocale.h> +#include <tqfile.h> +#include <tqtimer.h> +#include <tqeventloop.h> +#include <dcopclient.h> +#include <assert.h> + +#include <dmctl.h> + +#include <dbus/dbus-shared.h> +#include <tqdbusdata.h> +#include <tqdbuserror.h> +#include <tqdbusmessage.h> +#include <tqdbusobjectpath.h> +#include <tqdbusproxy.h> + +#include "lockeng.h" +#include "lockeng.moc" +#include "kdesktopsettings.h" + +#include "xautolock_c.h" + +#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1" +#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager" +#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session" +#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat" +#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1" + +#define DBUS_CONN_NAME "kdesktop_lock" + +extern xautolock_corner_t xautolock_corners[ 4 ]; +bool trinity_lockeng_sak_available = true; + +SaverEngineEventHandler *gbl_saverEngineEventHandler = nullptr; + +static void sigusr1_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockCompleted(); + } +} + +static void sigusr2_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockFullyActivated(); + } +} + +static void sigttin_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockReady(); + } +} + +SaverEngine::SaverEngine() + : TQObject(), + KScreensaverIface(), + mBlankOnly(false), + mNewVTAfterLockEngage(false), + mValidCryptoCardInserted(false), + mSwitchVTAfterLockEngage(-1), + dBusLocal(0), + dBusWatch(0), + systemdSession(0) +{ + // handle SIGUSR1 + mSignalAction.sa_handler= sigusr1_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGUSR1); + mSignalAction.sa_flags = 0; + sigaction(SIGUSR1, &mSignalAction, 0L); + + // handle SIGUSR2 + mSignalAction.sa_handler= sigusr2_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGUSR2); + mSignalAction.sa_flags = 0; + sigaction(SIGUSR2, &mSignalAction, 0L); + + // handle SIGTTIN (as custom user signal rather than its inherent meaning) + mSignalAction.sa_handler= sigttin_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGTTIN); + mSignalAction.sa_flags = 0; + sigaction(SIGTTIN, &mSignalAction, 0L); + + // Save X screensaver parameters + XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval, &mXBlanking, &mXExposures); + + // Create event handler thread, event loop and object + m_eventHandlerThread = new TQEventLoopThread; + m_eventHandlerThread->start(); + m_saverEngineEventHandler = new SaverEngineEventHandler(this); + gbl_saverEngineEventHandler = m_saverEngineEventHandler; + m_saverEngineEventHandler->moveToThread(m_eventHandlerThread); + connect(this, TQ_SIGNAL(terminateEventHandlerThread()), m_saverEngineEventHandler, TQ_SLOT(terminateThread())); + connect(this, TQ_SIGNAL(lockScreenSignal(bool)), m_saverEngineEventHandler, TQ_SLOT(lockScreen(bool))); + connect(this, TQ_SIGNAL(activateSaverOrLockSignal(LockType)), + m_saverEngineEventHandler, TQ_SLOT(activateSaverOrLock(LockType))); + + mXAutoLock = nullptr; + mEnabled = false; + + configure(); + + // Prevent kdesktop_lock signals from being handled by the main GUI thread. + // Those signals will be handled by m_eventHandlerThread instead + // + // Make sure to keep this code after the constructor of `m_eventHandlerThread`, so that + // the new thread starts with the signals unblocked. + sigset_t sigBlockMask; + sigemptyset(&sigBlockMask); + sigaddset(&sigBlockMask, SIGUSR1); + sigaddset(&sigBlockMask, SIGUSR2); + sigaddset(&sigBlockMask, SIGTTIN); + sigaddset(&sigBlockMask, SIGCHLD); + pthread_sigmask(SIG_BLOCK, &sigBlockMask, NULL); + + // Start SAK and lock processes + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(restartLockProcess())); + +#ifdef WITH_TDEHWLIB + // Initialize SmartCard readers + TDEGenericDevice *hwdevice; + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); + for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) + { + TDECryptographicCardDevice *cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), + this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), + this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); + cdevice->enableCardMonitoring(true); + } + + // Check card login status + KUser userinfo; + TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; + TQFile flagFile(fileName); + if (flagFile.open(IO_ReadOnly)) + { + TQTextStream stream(&flagFile); + if (stream.readLine().startsWith("1")) + { + // Card was likely used to log in + TQTimer::singleShot(5000, this, TQ_SLOT(cardStartupTimeout())); + } + flagFile.close(); + } +#endif + + dBusConnect(); +} + +SaverEngine::~SaverEngine() +{ + m_saverEngineEventHandler->terminateLockProcess(); + delete mXAutoLock; + dBusClose(); + + // Restore X screensaver parameters + XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking, mXExposures); + emit terminateEventHandlerThread(); + m_eventHandlerThread->wait(); + delete m_saverEngineEventHandler; + delete m_eventHandlerThread; +} + +void SaverEngine::cardStartupTimeout() +{ + if (!mValidCryptoCardInserted) + { + configure(); // Restore saver timeout + lockScreen(); // Force lock + } +} + +void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB + TQString login_name = TQString::null; + X509CertificatePtrList certList = cdevice->cardX509Certificates(); + if (certList.count() > 0) + { + KSSLCertificate* card_cert = NULL; + card_cert = KSSLCertificate::fromX509(certList[0]); + TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false); + for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it) + { + TQString lcpart = (*it).lower(); + if (lcpart.startsWith("cn=")) + { + login_name = lcpart.right(lcpart.length() - strlen("cn=")); + } + } + delete card_cert; + } + + if (login_name != "") + { + KUser user; + if (login_name == user.loginName()) + { + mValidCryptoCardInserted = true; + } + } +#endif +} + +void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB + if (mValidCryptoCardInserted) + { + mValidCryptoCardInserted = false; + + // Restore saver timeout + configure(); + + // Force lock + lockScreen(); + } +#endif +} + +// DCOP interface method +void SaverEngine::lock() +{ + lockScreen(true); +} + +void SaverEngine::lockScreen(bool dcop) +{ + if (mValidCryptoCardInserted) + { + kdDebug(1204) << "SaverEngine: crypto card inserted, ignore lock request" << endl; + return; + } + emit lockScreenSignal(dcop); +} + +void SaverEngine::lockScreenGUI() +{ + DCOPClientTransaction *trans = tdeApp->dcopClient()->beginTransaction(); + if (trans) + { + mLockTransactions.append(trans); + } +} + +void SaverEngine::processLockTransactions() +{ + TQValueVector<DCOPClientTransaction*>::ConstIterator it = mLockTransactions.begin(); + for (; it != mLockTransactions.end(); ++it) + { + TQCString replyType = "void"; + TQByteArray arr; + tdeApp->dcopClient()->endTransaction(*it, replyType, arr); + } + mLockTransactions.clear(); +} + +void SaverEngine::saverLockReady() +{ + if (m_saverEngineEventHandler->getState() != SaverState::Engaging) + { + kdDebug(1204) << "Got unexpected saverLockReady()" << endl; + } + + kdDebug(1204) << "Saver Lock Ready" << endl; + processLockTransactions(); +} + +// DCOP interface method +void SaverEngine::save() +{ + if (mValidCryptoCardInserted) + { + kdDebug(1204) << "SaverEngine: crypto card inserted, ignore save request" << endl; + return; + } + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(saveScreen())); +} + +// DCOP interface method +void SaverEngine::quit() +{ + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(stopLockProcess())); +} + +// DCOP interface method +bool SaverEngine::isEnabled() +{ + return mEnabled; +} + +// DCOP interface method +bool SaverEngine::enable(bool e) +{ + if (e == mEnabled) + return true; + + // If we aren't in a suitable state, we will not reconfigure. + if (m_saverEngineEventHandler->getState() != SaverState::Waiting) + return false; + + mEnabled = e; + + if (mEnabled) + { + if (!mXAutoLock) + { + mXAutoLock = new XAutoLock(); + connect(mXAutoLock, TQ_SIGNAL(timeout()), TQ_SLOT(idleTimeout())); + } + mXAutoLock->setTimeout(mTimeout); + mXAutoLock->setDPMS(true); + + // We'll handle blanking + XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); + mXAutoLock->start(); + kdDebug(1204) << "Saver engine started, timeout: " << mTimeout << endl; + } + else + { + if (mXAutoLock) + { + delete mXAutoLock; + mXAutoLock = nullptr; + } + + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); + kdDebug(1204) << "Saver engine disabled" << endl; + } + + return true; +} + +// DCOP interface method +bool SaverEngine::isBlanked() +{ + return (m_saverEngineEventHandler->getState() != SaverState::Waiting); +} + +void SaverEngine::enableExports() +{ +#ifdef TQ_WS_X11 + kdDebug(270) << k_lineinfo << "activating background exports" << endl; + DCOPClient *client = tdeApp->dcopClient(); + if (!client->isAttached()) + { + client->attach(); + } + TQByteArray data; + TQDataStream args(data, IO_WriteOnly); + args << 1; + + TQCString appname("kdesktop"); + int screen_number = DefaultScreen(tqt_xdisplay()); + if (screen_number) + { + appname.sprintf("kdesktop-screen-%d", screen_number); + } + + client->send(appname, "KBackgroundIface", "setExport(int)", data); +#endif +} + +// Read and apply configuration. +void SaverEngine::configure() +{ + // If we aren't in a suitable state, we will not reconfigure. + if (m_saverEngineEventHandler->getState() != SaverState::Waiting) + { + return; + } + + // create a new config obj to ensure we read the latest options + KDesktopSettings::self()->readConfig(); + + mTimeout = KDesktopSettings::timeout(); + bool e = KDesktopSettings::screenSaverEnabled(); + mEnabled = !e; // enable the screensaver by forcibly toggling it + enable(e); + + int action; + action = KDesktopSettings::actionTopLeft(); + xautolock_corners[0] = applyManualSettings(action); + action = KDesktopSettings::actionTopRight(); + xautolock_corners[1] = applyManualSettings(action); + action = KDesktopSettings::actionBottomLeft(); + xautolock_corners[2] = applyManualSettings(action); + action = KDesktopSettings::actionBottomRight(); + xautolock_corners[3] = applyManualSettings(action); +} + +// DCOP interface method +// Set a variable to indicate only to blank the screen and not use the saver +void SaverEngine::setBlankOnly(bool blankOnly) +{ + mBlankOnly = blankOnly; +} + +void SaverEngine::activateSaverOrLockGUI() +{ + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures); + if (mXAutoLock) + { + mXAutoLock->stop(); + } + emitDCOPSignal("KDE_start_screensaver()", TQByteArray()); +} + +void SaverEngine::stopLockProcessGUI() +{ + emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); + + if (mEnabled) + { + if (mXAutoLock) + { + mXAutoLock->start(); + } + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); + } + processLockTransactions(); + + if (systemdSession && systemdSession->canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromBool(false); + TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); + } +} + +void SaverEngine::terminateTDESession() +{ + // Terminate the TDE session ASAP! + // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387 + TQByteArray data; + TQDataStream arg(data, IO_WriteOnly); + arg << (int)0 << (int)0 << (int)2; + if (!tdeApp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data)) + { + // Someone got to DCOP before we did. Try an emergency system logout + system("logout"); + } +} + +void SaverEngine::lockProcessFullyActivatedGUI() +{ + if (systemdSession && systemdSession->canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromBool(true); + TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); + } + + if (mNewVTAfterLockEngage) + { + DM().startReserve(); + mNewVTAfterLockEngage = false; + } + else if (mSwitchVTAfterLockEngage != -1) + { + DM().switchVT(mSwitchVTAfterLockEngage); + mSwitchVTAfterLockEngage = -1; + } +} + +// XAutoLock has detected the required idle time. +void SaverEngine::idleTimeout() +{ + if (!mValidCryptoCardInserted) + { + // disable X screensaver + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); + emit activateSaverOrLockSignal(DefaultLock); + } +} + +xautolock_corner_t SaverEngine::applyManualSettings(int action) +{ + if (action == 0) + { + kdDebug() << "no lock" << endl; + return ca_nothing; + } + else if (action == 1) + { + kdDebug() << "lock screen" << endl; + return ca_forceLock; + } + else if (action == 2) + { + kdDebug() << "prevent lock" << endl; + return ca_dontLock; + } + else + { + kdDebug() << "no lock nothing" << endl; + return ca_nothing; + } +} + +/* + * This function try to reconnect to D-Bus. + * \return boolean with the result of the operation + * \retval true if successful reconnected to D-Bus + * \retval false if unsuccessful + */ +bool SaverEngine::dBusReconnect() +{ + dBusClose(); // close D-Bus connection + return (dBusConnect()); // init D-Bus conntection +} + +// This function is used to close D-Bus connection. +void SaverEngine::dBusClose() +{ + if (dBusConn.isConnected()) + { + if (dBusLocal) + { + delete dBusLocal; + dBusLocal = nullptr; + } + if (dBusWatch) + { + delete dBusWatch; + dBusWatch = nullptr; + } + if (systemdSession) + { + delete systemdSession; + systemdSession = nullptr; + } + } + dBusConn.closeConnection(DBUS_CONN_NAME); +} + +// This function is used to connect to D-Bus. +bool SaverEngine::dBusConnect() +{ + dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME); + if (!dBusConn.isConnected()) + { + kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl; + TQTimer::singleShot(4000, this, TQ_SLOT(dBusReconnect())); + return false; + } + + // watcher for Disconnect signal + dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn); + TQObject::connect(dBusLocal, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + + // watcher for NameOwnerChanged signals + dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); + TQObject::connect(dBusWatch, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + + // find already running SystemD + TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); + if (checkSystemD.canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE); + TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params); + if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool()) + { + onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE); + } + } + return true; +} + +// This function handles D-Bus service registering +void SaverEngine::onDBusServiceRegistered(const TQString& service) +{ + if (service == SYSTEMD_LOGIN1_SERVICE) + { + // get current systemd session + TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn); + TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath(); + if (managerIface.canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromUInt32(getpid()); + TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params); + if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) + { + systemdSessionPath = reply[0].toObjectPath(); + } + } + // wather for systemd session signals + if (systemdSessionPath.isValid()) + { + systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn); + TQObject::connect(systemdSession, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + } + return; + } +} + +// This function handles D-Bus service unregistering +void SaverEngine::onDBusServiceUnregistered(const TQString& service) +{ + if (service == SYSTEMD_LOGIN1_SERVICE) + { + if (systemdSession) + { + delete systemdSession; + systemdSession = nullptr; + } + return; + } +} + +// This function handles signals from the D-Bus daemon. +void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg) +{ + // dbus terminated + if (msg.path() == DBUS_PATH_LOCAL && msg.interface() == DBUS_INTERFACE_LOCAL && + msg.member() == "Disconnected") + { + dBusClose(); + TQTimer::singleShot(1000, this, TQ_SLOT(dBusReconnect())); + return; + } + + // service registered / unregistered + if (msg.path() == DBUS_PATH_DBUS && msg.interface() == DBUS_INTERFACE_DBUS && + msg.member() == "NameOwnerChanged") + { + if (msg[1].toString().isEmpty()) + { + // old-owner is empty + onDBusServiceRegistered(msg[0].toString()); + } + if (msg[2].toString().isEmpty()) + { + // new-owner is empty + onDBusServiceUnregistered(msg[0].toString()); + } + return; + } + + // systemd signal Lock() + if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() && + msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Lock") + { + lockScreen(); + return; + } + + // systemd signal Unlock() + if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() && + msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Unlock") + { + // unlock? + return; + } +} + +void SaverEngine::lockScreenAndDoNewSession() +{ + mNewVTAfterLockEngage = true; + lockScreen(); +} + +void SaverEngine::lockScreenAndSwitchSession(int vt) +{ + mSwitchVTAfterLockEngage = vt; + lockScreen(); +} + +SaverEngineEventHandler::SaverEngineEventHandler(SaverEngine *engine) : + m_state(Waiting), m_saverProcessReady(false), m_lockProcessRestarting(false), + m_terminationRequest(false), m_saverEngine(engine), m_SAKProcess(nullptr) +{ + connect(&m_lockProcess, TQ_SIGNAL(processExited(TDEProcess*)), + this, TQ_SLOT(slotLockProcessExited())); +} + +void SaverEngineEventHandler::terminateLockProcess() +{ + if (m_state == Waiting) + { + kill(m_lockProcess.pid(), SIGKILL); + } + m_lockProcess.detach(); // don't kill it if we crash +} + +void SaverEngineEventHandler::lockCompleted() +{ + kdDebug(1204) << "SaverEngineEventHandler: lock completed" << endl; + + if (m_state == Waiting) + { + return; + } + + m_state = Waiting; + if (trinity_lockeng_sak_available) + { + startSAKProcess(); + } + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI())); +} + +void SaverEngineEventHandler::lockFullyActivated() +{ + m_state = Saving; + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockProcessFullyActivatedGUI())); +} + +void SaverEngineEventHandler::lockReady() +{ + m_saverProcessReady = true; +} + +void SaverEngineEventHandler::lockScreen(bool dcop) +{ + if (m_lockProcessRestarting) + { + kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle lock request" << endl; + return; + } + + bool ok = true; + if (m_state == Waiting) + { + ok = activateSaverOrLock(ForceLock); + // It takes a while for kdesktop_lock to start and lock the screen. + // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect. + // This is done only for --forcelock . + if (ok && m_state != Saving) + { + if (dcop) + { + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockScreenGUI())); + } + } + } +} + +void SaverEngineEventHandler::saveScreen() +{ + if (m_lockProcessRestarting) + { + kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle save request" << endl; + return; + } + + if (m_state == Waiting) + { + activateSaverOrLock(DefaultLock); + } +} + +void SaverEngineEventHandler::slotLockProcessExited() +{ + // Clean up status after the lock process has exited + lockCompleted(); + + m_lockProcessRestarting = true; + + bool abnormalExit = false; + if (!m_lockProcess.normalExit()) + { + abnormalExit = true; + } + else if (m_lockProcess.exitStatus() != 0) + { + abnormalExit = true; + } + if (m_terminationRequest) + { + abnormalExit = false; + m_terminationRequest = false; + } + + // Restart the lock process. This call blocks till + // the lock process has restarted. + restartLockProcess(); + + if (abnormalExit) + { + // Possible hacking attempt detected, try to relaunch the saver with force lock + m_state = Waiting; + if (!activateSaverOrLock(ForceLock)) + { + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(terminateTDESession())); + } + } + m_lockProcessRestarting = false; +} + +/* + * Start or restart the lock process. + * On the very first invocation, launch the SAK process if required and + * auto lock the screen if the option has been enabled in the configuration. + */ +bool SaverEngineEventHandler::restartLockProcess() +{ + static bool firstStart = true; + + bool autoLoginEnable = false; + bool autoLoginLocked = false; + if (firstStart) + { + firstStart = false; + + // Create SAK process only if SAK is enabled + struct stat st; + TDESimpleConfig *config; + if (stat(KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) + { + config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmdistrc")); + } + else + { + config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmrc")); + } + config->setGroup("X-:*-Greeter"); + bool useSAKProcess = false; +#ifdef BUILD_TSAK + useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); +#endif + if (useSAKProcess) + { + startSAKProcess(); + } + + // autolock the desktop if required + config->setGroup("X-:0-Core"); + autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false); + autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false); + delete config; + } + + // (Re)start the lock process + if (!m_lockProcess.isRunning()) + { + m_lockProcess.clearArguments(); + TQString path = TDEStandardDirs::findExe("kdesktop_lock"); + if (path.isEmpty()) + { + kdDebug(1204) << "Can't find kdesktop_lock!" << endl; + return false; + } + m_lockProcess << path; + m_lockProcess << TQString("--internal") << TQString("%1").arg(getpid()); + + m_saverProcessReady = false; + if (!m_lockProcess.start()) + { + kdDebug(1204) << "Failed to start kdesktop_lock!" << endl; + return false; + } + // Wait for the lock process to signal that it is ready + sigset_t empty_mask; + sigemptyset(&empty_mask); + while (!m_saverProcessReady) + { + sigsuspend(&empty_mask); + } + if (!m_lockProcess.isRunning()) + { + kdDebug(1204) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; + return false; + } + } + + if (autoLoginEnable && autoLoginLocked) + { + m_lockProcess.kill(SIGTTOU); + m_lockProcess.kill(SIGUSR1); + } + return true; +} + +// Start the screen saver or lock screen +bool SaverEngineEventHandler::activateSaverOrLock(LockType lock_type) +{ + if (m_state == Saving) + { + return true; + } + + kdDebug(1204) << "SaverEngineEventHandler: starting saver" << endl; + m_state = Preparing; + if (m_SAKProcess) + { + m_SAKProcess->kill(SIGTERM); + } + + m_saverEngine->enableExports(); + if (!restartLockProcess()) + { + m_state = Waiting; + return false; + } + + switch (lock_type) + { + case ForceLock: + m_lockProcess.kill(SIGUSR1); // Request forcelock + break; + case DontLock: + m_lockProcess.kill(SIGUSR2); // Request dontlock + break; + case SecureDialog: + m_lockProcess.kill(SIGWINCH); // Request secure dialog + break; + default: + break; + } + + if (m_saverEngine->mBlankOnly) + { + m_lockProcess.kill(SIGTTIN); // Request blanking + } + + int ret = m_lockProcess.kill(SIGTTOU); // Start lock + if (!ret) + { + m_state = Waiting; + return false; + } + m_state = Engaging; + + // Ask to the GUI thread to activate X11 saver + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(activateSaverOrLockGUI())); + + return true; +} + +// Stop the screen saver. +void SaverEngineEventHandler::stopLockProcess() +{ + if (m_state == Waiting) + { + return; + } + + kdDebug(1204) << "SaverEngineEventHandler: stopping lock process" << endl; + + m_terminationRequest = true; + m_lockProcess.kill(); + m_state = Waiting; + + // Ask to the GUI thread to stop the X11 saver + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI())); +} + +void SaverEngineEventHandler::startSAKProcess() +{ + if (!m_SAKProcess) + { + m_SAKProcess = new TDEProcess; + *m_SAKProcess << "tdmtsak"; + connect(m_SAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited())); + } + if (!m_SAKProcess->isRunning()) + { + m_SAKProcess->start(); + } +} + +void SaverEngineEventHandler::slotSAKProcessExited() +{ + if (!m_SAKProcess) + { + tqWarning("[kdesktop] SAK process does not exist. Something went wrong. Ignoring."); + return; + } + + int retcode = m_SAKProcess->exitStatus(); + if (retcode && m_SAKProcess->normalExit()) + { + trinity_lockeng_sak_available = false; + tqWarning("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). " + "Check tdmtsak for proper functionality.", retcode); + } + + if (m_state == Preparing) + { + return; + } + + if (m_SAKProcess->normalExit() && trinity_lockeng_sak_available) + { + if (m_state == Waiting) + { + activateSaverOrLock(SecureDialog); + } + else + { + m_lockProcess.kill(SIGHUP); + } + } +} + +void SaverEngineEventHandler::terminateThread() +{ + TQEventLoop *eventLoop = TQApplication::eventLoop(); + if (eventLoop) + { + eventLoop->exit(0); + } +} diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h index 11f751db8..11806e73c 100644 --- a/kdesktop/lockeng.h +++ b/kdesktop/lockeng.h @@ -1,6 +1,5 @@ -//=========================================================================== // -// This file is part of the KDE project +// This file is part of the TDE project // // Copyright (c) 1999 Martin R. Jones <mjones@kde.org> // @@ -8,9 +7,8 @@ #ifndef __LOCKENG_H__ #define __LOCKENG_H__ -#include <tqwidget.h> #include <tqthread.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tqvaluevector.h> #include "KScreensaverIface.h" #include "xautolock.h" @@ -18,33 +16,54 @@ #include <tqdbusconnection.h> +#ifdef WITH_TDEHWLIB class TDECryptographicCardDevice; +#else +#define TDECryptographicCardDevice void +#endif + +/** + * Screen saver engine. Handles communication with the lock process. + * The engine is split into two parts, the 'SaverEngine' running in the GUI thread and + * the 'SaverEngineEventHandler' running in a separate thread and eventloop. + * The 'SaverEngine' handles communication with X11, DCOP and DBUS while the + * 'SaverEngineEventHandler' handles communication with the actual lock process. + * Several actions require cooperation of the two parts, so in various methods + * there will be inter-thread calls (using timers or by emitting signals) to + * trigger the other side remaining logic. + * This complex design is necessary to avoid blocking the main GUI application event loop, + * which has several tasks to manage and therefore can't affort to wait in a suspended state. + * This was previously leading to deadlock when DCOP calls where executed on the secondary + * thread/eventloop, for example when changing desktop while the lock process was restarting. + */ + class DCOPClientTransaction; class TQT_DBusMessage; class TQT_DBusProxy; +class SaverEngineEventHandler; -class SaverEngineThreadHelperObject : public TQObject +// Type of lock screen +enum LockType : int { - Q_OBJECT - -public slots: - void terminateThread(); - void slotLockProcessWaiting(); - void slotLockProcessFullyActivated(); + DontLock = 0, + DefaultLock, + ForceLock, + SecureDialog +}; -signals: - void lockProcessWaiting(); - void lockProcessFullyActivated(); +enum SaverState +{ + Waiting, + Preparing, + Engaging, + Saving }; -//=========================================================================== -/** - * Screen saver engine. Handles screensaver window, starting screensaver - * hacks, and password entry. - */ -class SaverEngine : public TQWidget, public KScreensaverIface +class SaverEngine : public TQObject, public KScreensaverIface { - Q_OBJECT + friend class SaverEngineEventHandler; + + TQ_OBJECT public: SaverEngine(); ~SaverEngine(); @@ -96,80 +115,52 @@ public: */ virtual void saverLockReady(); - /** - * @internal - */ void lockScreen(bool DCOP = false); - /** - * Called by KDesktop to wait for saver engage - * @internal - */ - bool waitForLockEngage(); - - /** - * @internal - */ void lockScreenAndDoNewSession(); - - /** - * @internal - */ void lockScreenAndSwitchSession(int vt); + void enableExports(); // Enable wallpaper exports + signals: - void terminateHelperThread(); - void asyncLock(); + void activateSaverOrLockSignal(LockType lock_type); + void lockScreenSignal(bool); + void terminateEventHandlerThread(); public slots: - void slotLockProcessReady(); - void lockProcessWaiting(); - void lockProcessFullyActivated(); void handleDBusSignal(const TQT_DBusMessage&); + void terminateTDESession(); protected slots: void idleTimeout(); - void lockProcessExited(); private slots: - void handleSecureDialog(); - void slotSAKProcessExited(); - void cryptographicCardInserted(TDECryptographicCardDevice*); void cryptographicCardRemoved(TDECryptographicCardDevice*); - - /** - * Enable wallpaper exports - */ - void enableExports(); - void recoverFromHackingAttempt(); void cardStartupTimeout(); - bool dBusReconnect(); + // The following slots are invoked by corresponding methods named without the 'GUI' suffix + // in 'SaverEngineEventHandler' to complete the remaining X11 part of the actions + void activateSaverOrLockGUI(); + void lockProcessFullyActivatedGUI(); + void lockScreenGUI(); + void stopLockProcessGUI(); + private: - bool restartDesktopLockProcess(); void dBusClose(); bool dBusConnect(); void onDBusServiceRegistered(const TQString&); void onDBusServiceUnregistered(const TQString&); protected: - enum SaverState { Waiting, Preparing, Engaging, Saving }; - enum LockType { DontLock, DefaultLock, ForceLock, SecureDialog }; - bool startLockProcess( LockType lock_type ); - bool waitForLockProcessStart(); - void stopLockProcess(); - bool handleKeyPress(XKeyEvent *xke); void processLockTransactions(); xautolock_corner_t applyManualSettings(int); protected: bool mEnabled; - SaverState mState; XAutoLock *mXAutoLock; - TDEProcess mLockProcess; int mTimeout; // the original X screensaver parameters @@ -178,26 +169,60 @@ protected: int mXBlanking; int mXExposures; - bool mBlankOnly; // only use the blanker, not the defined saver TQValueVector< DCOPClientTransaction* > mLockTransactions; public: - SaverEngineThreadHelperObject* m_threadHelperObject; + bool mBlankOnly; // only use the blanker, not the defined saver // protected + SaverEngineEventHandler *m_saverEngineEventHandler; private: - TQEventLoopThread* m_helperThread; - sigset_t mThreadBlockSet; - TDEProcess* mSAKProcess; - bool mTerminationRequested; - bool mSaverProcessReady; + TQEventLoopThread* m_eventHandlerThread; bool mNewVTAfterLockEngage; bool mValidCryptoCardInserted; int mSwitchVTAfterLockEngage; struct sigaction mSignalAction; TQT_DBusConnection dBusConn; - TQT_DBusProxy* dBusLocal; - TQT_DBusProxy* dBusWatch; - TQT_DBusProxy* systemdSession; + TQT_DBusProxy *dBusLocal; + TQT_DBusProxy *dBusWatch; + TQT_DBusProxy *systemdSession; +}; + +class SaverEngineEventHandler : public TQObject +{ + TQ_OBJECT + +public: + SaverEngineEventHandler(SaverEngine *engine); + + SaverState getState() const { return m_state; } + + void lockCompleted(); + void lockFullyActivated(); + void lockReady(); + void terminateLockProcess(); + +public slots: + bool activateSaverOrLock(LockType lock_type); + void lockScreen(bool DCOP = false); + bool restartLockProcess(); + void saveScreen(); + void stopLockProcess(); + void terminateThread(); + +protected slots: + void slotLockProcessExited(); + void slotSAKProcessExited(); + +protected: + void startSAKProcess(); + + bool m_saverProcessReady; + bool m_lockProcessRestarting; + bool m_terminationRequest; + SaverState m_state; + SaverEngine *m_saverEngine; + TDEProcess *m_SAKProcess; + TDEProcess m_lockProcess; }; #endif diff --git a/kdesktop/main.cc b/kdesktop/main.cpp index b54c03cb7..0465068b6 100644 --- a/kdesktop/main.cc +++ b/kdesktop/main.cpp @@ -18,13 +18,13 @@ */ #include <config.h> -#include <kuniqueapplication.h> +#include <tdeuniqueapplication.h> #include <tdelocale.h> #include <dcopclient.h> #include <tdeaboutdata.h> #include <tdecmdlineargs.h> #include <kopenwith.h> -#include <kcrash.h> +#include <tdecrash.h> #include <kdebug.h> #include <tdeglobalsettings.h> #include <tdeglobal.h> @@ -43,7 +43,7 @@ #include <fcntl.h> #include <stdlib.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -71,7 +71,7 @@ static TDECmdLineOptions options[] = }; bool argb_visual = false; -KDesktopApp *myApp = NULL; +KDesktopApp *myApp = nullptr; // ----------------------------------------------------------------------------- @@ -94,8 +94,8 @@ static void signalHandler(int sigId) // try to cleanup all windows signal(SIGTERM, SIG_DFL); // next one kills signal(SIGHUP, SIG_DFL); // next one kills - if (kapp) - kapp->quit(); // turn catchable signals into clean shutdown + if (tdeApp) + tdeApp->quit(); // turn catchable signals into clean shutdown } void KDesktop::slotUpAndRunning() @@ -105,7 +105,7 @@ void KDesktop::slotUpAndRunning() TDECrash::setEmergencySaveFunction(crashHandler); // Try to restart on crash } -extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) +extern "C" TDE_EXPORT int kdemain( int argc, char **argv ) { //setup signal handling signal(SIGTERM, signalHandler); @@ -184,7 +184,7 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) TDECmdLineArgs::init( argc, argv, &aboutData ); TDECmdLineArgs::addCmdLineOptions( options ); - if (!KUniqueApplication::start()) { + if (!TDEUniqueApplication::start()) { fprintf(stderr, "kdesktop is already running!\n"); exit(0); } @@ -247,11 +247,11 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) *qt_no_foreign_hack = true; // else argb_visual = false ... ? *shrug* if( argb_visual ) - myApp = new KDesktopApp( dpy, Qt::HANDLE( visual ), 0 ); + myApp = new KDesktopApp( dpy, TQt::HANDLE( visual ), 0 ); else XCloseDisplay( dpy ); } - if( myApp == NULL ) + if (!myApp) myApp = new KDesktopApp; #else myApp = new KDesktopApp; @@ -260,9 +260,6 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) KDesktopSettings::instance(kdesktop_name + "rc"); - bool x_root_hack = args->isSet("x-root"); - bool wait_for_kded = args->isSet("waitforkded"); - // This MUST be created before any widgets are created SaverEngine saver; @@ -273,22 +270,21 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) // Mark kdeskop as immutable if all of its config modules have been disabled if (!myApp->config()->isImmutable() && - kapp->authorizeControlModules(KRootWm::configModules()).isEmpty()) + tdeApp->authorizeControlModules(KRootWm::configModules()).isEmpty()) { myApp->config()->setReadOnly(true); myApp->config()->reparseConfiguration(); } - // for the KDE-already-running check in starttde - TDESelectionOwner kde_running( "_KDE_RUNNING", 0 ); - kde_running.claim( false ); + // for the TDE-already-running check in starttde + TDESelectionOwner tde_running( "_KDE_RUNNING", 0 ); + tde_running.claim( false ); + bool x_root_hack = args->isSet("x-root"); + bool wait_for_kded = args->isSet("waitforkded"); KDesktop desktop( &saver, x_root_hack, wait_for_kded ); args->clear(); - myApp->dcopClient()->setDefaultObject( "KDesktopIface" ); - - return myApp->exec(); } diff --git a/kdesktop/minicli.cpp b/kdesktop/minicli.cpp index 4b8d390b3..2ac8b3ecd 100644 --- a/kdesktop/minicli.cpp +++ b/kdesktop/minicli.cpp @@ -50,7 +50,7 @@ #include <dcopclient.h> #include <tdelocale.h> #include <tdemessagebox.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <kcombobox.h> #include <klineedit.h> #include <tdeapplication.h> @@ -59,7 +59,7 @@ #include <krun.h> #include <twin.h> #include <tdesu/su.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeconfig.h> #include <kiconloader.h> #include <kpushbutton.h> @@ -101,7 +101,7 @@ Minicli::Minicli( TQWidget *parent, const char *name) // Cancel button... m_dlg->pbCancel->setGuiItem ( KStdGuiItem::cancel() ); - if (!kapp->authorize("shell_access")) + if (!tdeApp->authorize("shell_access")) m_dlg->pbOptions->hide(); m_dlg->pbRun->setEnabled(!m_dlg->cbCommand->currentText().isEmpty()); @@ -131,34 +131,34 @@ Minicli::Minicli( TQWidget *parent, const char *name) m_pURLCompletion = new KURLCompletion(KURLCompletion::FileCompletion); m_pEXECompletion = new KURLCompletion(KURLCompletion::SystemExeCompletion); //m_pURLCompletion->setCompletionMode( TDEGlobalSettings::completionMode() ); - connect( m_pURLCompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotMatch(const TQString&) )); - connect( m_pEXECompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotEXEMatch(const TQString&) )); + connect( m_pURLCompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotMatch(const TQString&) )); + connect( m_pEXECompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotEXEMatch(const TQString&) )); // Main widget buttons... - connect( m_dlg->pbRun, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) ); - connect( m_dlg->pbCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(reject()) ); - connect( m_dlg->pbOptions, TQT_SIGNAL(clicked()), TQT_SLOT(slotAdvanced()) ); - connect( m_parseTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotParseTimer()) ); + connect( m_dlg->pbRun, TQ_SIGNAL(clicked()), this, TQ_SLOT(accept()) ); + connect( m_dlg->pbCancel, TQ_SIGNAL(clicked()), this, TQ_SLOT(reject()) ); + connect( m_dlg->pbOptions, TQ_SIGNAL(clicked()), TQ_SLOT(slotAdvanced()) ); + connect( m_parseTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotParseTimer()) ); - connect( m_dlg->cbCommand, TQT_SIGNAL( textChanged( const TQString& ) ), - TQT_SLOT( slotCmdChanged(const TQString&) ) ); + connect( m_dlg->cbCommand, TQ_SIGNAL( textChanged( const TQString& ) ), + TQ_SLOT( slotCmdChanged(const TQString&) ) ); - connect( m_dlg->cbCommand, TQT_SIGNAL( returnPressed() ), - m_dlg->pbRun, TQT_SLOT( animateClick() ) ); + connect( m_dlg->cbCommand, TQ_SIGNAL( returnPressed() ), + m_dlg->pbRun, TQ_SLOT( animateClick() ) ); m_dlg->cbCommand->setHistoryEditorEnabled( true ); - connect( m_dlg->cbCommand, TQT_SIGNAL(removed( const TQString&) ), TQT_SLOT(saveConfig()) ); + connect( m_dlg->cbCommand, TQ_SIGNAL(removed( const TQString&) ), TQ_SLOT(saveConfig()) ); // Advanced group box... - connect(m_dlg->cbPriority, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeScheduler(bool))); - connect(m_dlg->slPriority, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotPriority(int))); - connect(m_dlg->cbRealtime, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotRealtime(bool))); - connect(m_dlg->cbAppcomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAppcompleteToggled(bool))); - connect(m_dlg->cbAutocomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutocompleteToggled(bool))); - connect(m_dlg->cbAutohistory, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutohistoryToggled(bool))); - connect(m_dlg->cbRunAsOther, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeUid(bool))); - connect(m_dlg->leUsername, TQT_SIGNAL(lostFocus()), TQT_SLOT(updateAuthLabel())); - connect(m_dlg->cbRunInTerminal, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotTerminal(bool))); + connect(m_dlg->cbPriority, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeScheduler(bool))); + connect(m_dlg->slPriority, TQ_SIGNAL(valueChanged(int)), TQ_SLOT(slotPriority(int))); + connect(m_dlg->cbRealtime, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotRealtime(bool))); + connect(m_dlg->cbAppcomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAppcompleteToggled(bool))); + connect(m_dlg->cbAutocomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutocompleteToggled(bool))); + connect(m_dlg->cbAutohistory, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutohistoryToggled(bool))); + connect(m_dlg->cbRunAsOther, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeUid(bool))); + connect(m_dlg->leUsername, TQ_SIGNAL(lostFocus()), TQ_SLOT(updateAuthLabel())); + connect(m_dlg->cbRunInTerminal, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotTerminal(bool))); m_dlg->slPriority->setValue(50); @@ -317,8 +317,8 @@ void Minicli::accept() if ( logout ) { - kapp->propagateSessionManager(); - kapp->requestShutDown(); + tdeApp->propagateSessionManager(); + tdeApp->requestShutDown(); } if ( lock ) { @@ -326,7 +326,7 @@ void Minicli::accept() int kicker_screen_number = tqt_xscreen(); if ( kicker_screen_number ) appname.sprintf("kdesktop-screen-%d", kicker_screen_number); - kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString("")); + tdeApp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString("")); } } @@ -375,7 +375,7 @@ void Minicli::reset() void Minicli::keyPressEvent( TQKeyEvent* e ) { - if ( e->key() == Qt::Key_Escape ) + if ( e->key() == TQt::Key_Escape ) { e->accept(); m_dlg->pbCancel->animateClick(); @@ -385,10 +385,10 @@ void Minicli::keyPressEvent( TQKeyEvent* e ) TQDialog::keyPressEvent( e ); } -TQString Minicli::terminalCommand (const TQString& cmd, const TQString& args) +TQString Minicli::terminalCommand(const TQString& cmd, const TQString& args) { TQString terminal = KDesktopSettings::terminalApplication().stripWhiteSpace(); - if (terminal.endsWith("konsole")) + if (terminal.startsWith("konsole")) terminal += " --noclose"; if( args.isEmpty() ) @@ -437,7 +437,7 @@ int Minicli::runCommand() kdDebug (1207) << "Use terminal ? " << useTerminal << endl; - if (!kapp->authorize("shell_access")) + if (!tdeApp->authorize("shell_access")) useTerminal = false; if( needsTDEsu() ) @@ -585,7 +585,7 @@ int Minicli::runCommand() // fall-through to shell case case KURIFilterData::SHELL: { - if (kapp->authorize("shell_access")) + if (tdeApp->authorize("shell_access")) { exec = cmd; @@ -651,7 +651,7 @@ void Minicli::notifyServiceStarted(KService::Ptr service) TQDataStream stream(params, IO_WriteOnly); stream << "minicli" << service->storageId(); kdDebug() << "minicli appLauncher dcop signal: " << service->storageId() << endl; - TDEApplication::kApplication()->dcopClient()->emitDCOPSignal("appLauncher", + tdeApp->dcopClient()->emitDCOPSignal("appLauncher", "serviceStartedByStorageId(TQString,TQString)", params); } @@ -877,7 +877,7 @@ void Minicli::setIcon () { TQBitmap mask = *icon.mask(); bitBlt( &mask, x, y, - overlay.mask() ? TQT_TQPIXMAP(const_cast<TQBitmap *>(overlay.mask())) : &overlay, + overlay.mask() ? const_cast<TQBitmap *>(overlay.mask()) : &overlay, 0, 0, overlay.width(), overlay.height(), overlay.mask() ? OrROP : SetROP ); icon.setMask(mask); @@ -1094,6 +1094,3 @@ void Minicli::fontChange( const TQFont & ) { adjustSize(); } - -// vim: set et ts=2 sts=2 sw=2: - diff --git a/kdesktop/minicli.h b/kdesktop/minicli.h index 9d92825c7..c3974a13b 100644 --- a/kdesktop/minicli.h +++ b/kdesktop/minicli.h @@ -46,7 +46,7 @@ class KURIFilterData; class Minicli : public KDialog { - Q_OBJECT + TQ_OBJECT public: Minicli( TQWidget *parent=0, const char *name=0 ); diff --git a/kdesktop/minicli_ui.ui b/kdesktop/minicli_ui.ui index 13d3b9736..93c95c8f0 100644 --- a/kdesktop/minicli_ui.ui +++ b/kdesktop/minicli_ui.ui @@ -640,21 +640,14 @@ </tabstops> <includes> <include location="global" impldecl="in declaration">fixx11h.h</include> + <include location="local" impldecl="in implementation">kcombobox.h</include> <include location="local" impldecl="in implementation">kdialog.h</include> <include location="local" impldecl="in implementation">kiconloader.h</include> - <include location="local" impldecl="in implementation">kpassdlg.h</include> - <include location="local" impldecl="in implementation">kcombobox.h</include> <include location="local" impldecl="in implementation">klineedit.h</include> + <include location="local" impldecl="in implementation">kpassdlg.h</include> <include location="local" impldecl="in implementation">kpushbutton.h</include> </includes> <pixmapfunction>BarIcon</pixmapfunction> <layoutdefaults spacing="3" margin="6"/> <layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/> -<includehints> - <includehint>kpushbutton.h</includehint> - <includehint>kpushbutton.h</includehint> - <includehint>kpushbutton.h</includehint> - <includehint>kpassdlg.h</includehint> - <includehint>kcombobox.h</includehint> -</includehints> </UI> diff --git a/kdesktop/patterns/CMakeLists.txt b/kdesktop/patterns/CMakeLists.txt index a6bfa053b..bf0475400 100644 --- a/kdesktop/patterns/CMakeLists.txt +++ b/kdesktop/patterns/CMakeLists.txt @@ -3,15 +3,29 @@ # (C) 2010-2011 Serghei Amelian # serghei (DOT) amelian (AT) gmail.com # +# (C) 2020 Slávek Banko +# slavek.banko (AT) axis.cz +# # Improvements and feedback are welcome # # This file is released under GPL >= 2 # ################################################# -install( FILES - night-rock.desktop night-rock.jpg stonewall2.png - stonewall2.desktop fish.desktop fish.png flowers.desktop - flowers.png pavement.desktop pavement.png rattan.desktop - rattan.png triangles.desktop triangles.png - DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns ) +file( GLOB _patterns RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.png *.jpg ) +list( SORT _patterns ) + +foreach( _pattern IN LISTS _patterns ) + get_filename_component( _pattern_name ${_pattern} NAME_WE ) + if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_pattern_name}.desktop ) + install( + FILES ${_pattern} + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns + ) + tde_create_translated_desktop( + SOURCE ${_pattern_name}.desktop + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns + PO_DIR kdesktop-desktops + ) + endif() +endforeach() diff --git a/kdesktop/patterns/fish.desktop b/kdesktop/patterns/fish.desktop index 7644bb0c8..f2e47ccb2 100644 --- a/kdesktop/patterns/fish.desktop +++ b/kdesktop/patterns/fish.desktop @@ -1,74 +1,3 @@ [KDE Desktop Pattern] Comment=Fish Net -Comment[af]=Visnet -Comment[az]=Balıq Şəbəkəsi -Comment[be]=Сетка Fish -Comment[bn]=মাছ ধরার জাল -Comment[br]=Roued pesk -Comment[ca]=Xarxa de pesca -Comment[cs]=Rybářská síť -Comment[csb]=Rëbackô séc -Comment[cy]=Rhwyd Pysgod -Comment[da]=Fiskenet -Comment[de]=Fischnetz -Comment[el]=Δίχτυ ψαρέματος -Comment[eo]=Fiŝreto -Comment[es]=Red de pesca -Comment[et]=Kalavõrk -Comment[eu]=Arrainetarako sarea -Comment[fa]=تور ماهی -Comment[fi]=Kalaverkko -Comment[fr]=Filet -Comment[fy]=Fisknet -Comment[gl]=Rede de Pesca -Comment[he]=רשת דייגים -Comment[hi]=मछली जाली -Comment[hr]=Ribarska mreža -Comment[hu]=Halászháló -Comment[is]=Net -Comment[it]=Rete da pesca -Comment[ja]=漁網 -Comment[ka]=მეთევზის ბადე -Comment[kk]=Балықшы ауы -Comment[km]=សំណាញ់ -Comment[lo]=ປາ -Comment[lt]=Žuvų tinklas -Comment[lv]=Zivju Tīkls -Comment[mk]=Рибарска мрежа -Comment[mn]=Загас сүлжээ -Comment[ms]=Jala Ikan -Comment[mt]=Xibka -Comment[nb]=Fiskegarn -Comment[nds]=Fischernett -Comment[ne]=फिस नेट -Comment[nl]=Visnet -Comment[nn]=Fiskegarn -Comment[nso]=Sefo ya Dihlapi -Comment[oc]=resèu de pesca -Comment[pa]=ਮੱਛੀ ਨੈੱਟ -Comment[pl]=Sieć rybacka -Comment[pt]=Rede de Pesca -Comment[ro]=Plasă de pescuit -Comment[ru]=Рыбацкая сеть -Comment[se]=Sáibma -Comment[sk]=Ryby a sieť -Comment[sl]=Ribiška mreža -Comment[sr]=Рибарска мрежа -Comment[sr@Latn]=Ribarska mreža -Comment[sv]=Fisknät -Comment[ta]=மீன் வலை -Comment[te]=చేపల వల -Comment[tg]=Таври моҳигирӣ -Comment[th]=แห -Comment[tr]=Balık Ağı -Comment[tt]=Balıqçı Yätmäse -Comment[uk]=Тенета -Comment[uz]=Toʻr -Comment[uz@cyrillic]=Тўр -Comment[ven]=Mulavhu wa khovhe -Comment[vi]=Lưới đánh cá -Comment[wa]=Filet d' pexhe -Comment[zh_CN]=渔网 -Comment[zh_TW]=漁網 -Comment[zu]=I-nethi yofishi File=fish.png diff --git a/kdesktop/patterns/flowers.desktop b/kdesktop/patterns/flowers.desktop index 7e57db75c..c01f075bc 100644 --- a/kdesktop/patterns/flowers.desktop +++ b/kdesktop/patterns/flowers.desktop @@ -1,79 +1,3 @@ [KDE Desktop Pattern] Comment=Flowers -Comment[af]=Blomme -Comment[az]=Çiçəklər -Comment[be]=Кветкі -Comment[bn]=ফুল -Comment[br]=Bleunioù -Comment[ca]=Flors -Comment[cs]=Květiny -Comment[csb]=Kwiôtczi -Comment[cy]=Blodau -Comment[da]=Blomster -Comment[de]=Blumen -Comment[el]=Λουλούδια -Comment[eo]=Floroj -Comment[es]=Flores -Comment[et]=Lilled -Comment[eu]=Loreak -Comment[fa]=گلها -Comment[fi]=Kukat -Comment[fr]=Fleurs -Comment[fy]=Blommen -Comment[ga]=Bláthanna -Comment[gl]=Flores -Comment[he]=פרחים -Comment[hi]=पुष्प -Comment[hr]=Cvijeće -Comment[hu]=Virágok -Comment[id]=Bunga -Comment[is]=Blóm -Comment[it]=Fiori -Comment[ja]=花 -Comment[ka]=ყვავილები -Comment[kk]=Гүлдер -Comment[km]=ផ្កា -Comment[lo]=ດອກໄມ້ -Comment[lt]=Gėlės -Comment[lv]=Puķes -Comment[mk]=Цвеќиња -Comment[mn]=Цэцэг -Comment[ms]=Bunga -Comment[mt]=Fjuri -Comment[nb]=Blomster -Comment[nds]=Blomen -Comment[ne]=फूल -Comment[nl]=Bloemen -Comment[nn]=Blomar -Comment[nso]=Mapolomo -Comment[oc]=Flors -Comment[pa]=ਫੁੱਲ -Comment[pl]=Kwiaty -Comment[pt]=Flores -Comment[pt_BR]=Flores -Comment[ro]=Flori -Comment[ru]=Цветы -Comment[rw]=Indabo -Comment[se]=Lieđit -Comment[sk]=Kvety -Comment[sl]=Rože -Comment[sr]=Цвеће -Comment[sr@Latn]=Cveće -Comment[sv]=Blommor -Comment[ta]=பூக்கள் -Comment[te]=పువ్వులు -Comment[tg]=Гулҳо -Comment[th]=ดอกไม้ -Comment[tr]=Çiçekler -Comment[tt]=Çäçäklär -Comment[uk]=Квіти -Comment[uz]=Gullar -Comment[uz@cyrillic]=Гуллар -Comment[ven]=Maluvha -Comment[vi]=Bông hoa -Comment[wa]=Fleurs -Comment[xh]=Iintyatyambo -Comment[zh_CN]=花 -Comment[zh_TW]=花朵 -Comment[zu]=Izimbali File=flowers.png diff --git a/kdesktop/patterns/night-rock.desktop b/kdesktop/patterns/night-rock.desktop index 4a324e47a..65aef98ab 100644 --- a/kdesktop/patterns/night-rock.desktop +++ b/kdesktop/patterns/night-rock.desktop @@ -1,75 +1,3 @@ [KDE Desktop Pattern] Comment=Night Rock by Tigert -Comment[af]=Nag Klip deur Tigert -Comment[ar]=Night Rock من Tigert -Comment[az]=Tigert'dan Gecə Qayası -Comment[be]=Начная Гара ад Tigert -Comment[bn]=Tigert-এর নাইট রক -Comment[br]=Karreg da noz gant Tigert -Comment[bs]=Night Rock - Tigert -Comment[ca]=Rock nocturn per Tigert -Comment[cs]=Night Rock vytvořil Tigert -Comment[csb]=Nocny Rock (ùs. Tigert) -Comment[cy]=Carreg Nos gan Tigert -Comment[da]=Night Rock af Tigert -Comment[de]=Night Rock -Comment[el]=Night Rock από τον Tigert -Comment[eo]=Nokta roko -Comment[es]=Roca de noche de Tigert -Comment[et]=Night Rock (Tigert) -Comment[eu]=Gaueko Haitza, Tigert-ek egina -Comment[fa]=Night Rock توسط تیگرت -Comment[fi]=Night Rock, tehnyt Tigert -Comment[fr]=Night Rock par Tigert -Comment[fy]=Rots by Nacht, door Tigert -Comment[gl]=Night Rock por Tigert -Comment[he]=סלעים -Comment[hi]=टिगर्ट द्वारा नाइट रॉक -Comment[hr]=Night Rock (izr. Tigert) -Comment[hu]=Tigert éjjeli sziklája -Comment[id]=Batu Malam oleh Tigert -Comment[is]=Night Rock eftir Tigert -Comment[it]=Rock notturno (di Tigert) -Comment[ja]=Tigert による Night Rock -Comment[ka]=კლდე ღამით (Tigert) -Comment[kk]=Түнгі жартас (Tigert) -Comment[km]=សិលារាត្រី ដោយ Tigert -Comment[lo]=ຄຳ່ມັນຯ ໂດຍ Tigert -Comment[lv]=Nakts Roks no Tigerta -Comment[mk]=Ноќен рок од Tigert -Comment[mn]=Шөнийн рок -Comment[ms]=Batuan Malan oleh Tigert -Comment[mt]=Night Rock minn Tigert -Comment[nb]=Nattrock av Tigert -Comment[nds]=Night Rock vun Tigert -Comment[ne]=टिग्रेटद्वारा रातीको रक -Comment[nl]=Rots bij Nacht, door Tigert -Comment[nn]=Nattrock av Tigert -Comment[nso]=Leswika la Bosego ka Tigert -Comment[oc]=Rock nocturn per Tigert -Comment[pa]=ਰਾਤ ਪਹਾੜੀ ਟੀਰਿਰਟ -Comment[pl]=Nocny Rock (wyk. Tigert) -Comment[pt]=Night Rock de Tigert -Comment[pt_BR]=Night Rock por Tigert -Comment[ro]=Piatră întunecată de Tigert -Comment[ru]=Ночная скала (Tigert) -Comment[rw]=Night Rock na Tigert -Comment[se]=Tigert:a idjarocka -Comment[sk]=Nočný kameň od Tigerta -Comment[sl]=Nočni rock Tigerta -Comment[sv]=Nattsten av Tigert -Comment[ta]=டைக்ரட்இன் நைட்ராக் -Comment[tg]=Сахраҳои дар шаб аз Tigert -Comment[th]=ค่ำคืนมัน ๆ โดย Tigert -Comment[tr]=Tigert'dan Gece Kayası -Comment[tt]=Tönge Taw (Tigert tarafınnan) -Comment[uk]=Нічний політ Тайгерта -Comment[uz]=Oqshom qoyasi (Tigert tomonidan) -Comment[uz@cyrillic]=Оқшом қояси (Тигерт томонидан) -Comment[ven]=Vhusiku ha Rock nga Tigert -Comment[vi]=Rock Buổi đêm bởi Tigert -Comment[wa]=Rotche di nute pa Tigert -Comment[zh_CN]=Tigert 的夜色中的岩石 -Comment[zh_TW]=午夜搖滾 (Tigert 繪製) -Comment[zu]=Night Rock ngu-Tigert File=night-rock.jpg diff --git a/kdesktop/patterns/pavement.desktop b/kdesktop/patterns/pavement.desktop index 3ecabd35d..a261cff11 100644 --- a/kdesktop/patterns/pavement.desktop +++ b/kdesktop/patterns/pavement.desktop @@ -1,75 +1,3 @@ [KDE Desktop Pattern] Comment=Pavement -Comment[af]=Sypaadjie -Comment[az]=Səki -Comment[be]=Брушчатка -Comment[bn]=ফুটপাথ -Comment[br]=Pavezadur -Comment[ca]=Paviment -Comment[cs]=Dlažba -Comment[csb]=Trotuar -Comment[cy]=Palmant -Comment[da]=Brolægning -Comment[de]=Gehsteig -Comment[el]=Πεζοδρόμιο -Comment[eo]=Pavimo -Comment[es]=Pavimento -Comment[eu]=Zorua -Comment[fa]=سنگفرش -Comment[fi]=Katukivetys -Comment[fr]=Pavés -Comment[fy]=Estrikken -Comment[ga]=Pábháil -Comment[gl]=Pavemento -Comment[he]=ריצוף -Comment[hi]=फर्श -Comment[hr]=Pločnik -Comment[hu]=Járda -Comment[is]=Gangstétt -Comment[it]=Marciapiede -Comment[ja]=歩道 -Comment[ka]=ქვაფენილი -Comment[kk]=Тас алаң -Comment[km]=កម្រាលថ្ម -Comment[lo]=ທາງເດີນ -Comment[lt]=Grindinys -Comment[lv]=Ielas segums -Comment[mk]=Калдрма -Comment[mn]=Явган зам -Comment[ms]=Turapan -Comment[mt]=Bankina -Comment[nb]=Brolegning -Comment[nds]=Börgerstieg -Comment[ne]=शीलास्तर -Comment[nl]=Plavuizen -Comment[oc]=Paviment -Comment[pa]=ਪਾਵੀਮੈਂਟ -Comment[pl]=Chodnik -Comment[pt]=Chão -Comment[pt_BR]=Pavimento -Comment[ro]=Pavaj -Comment[ru]=Мостовая -Comment[rw]=Umuteguro -Comment[se]=Ravdaváccahat -Comment[sk]=Chodník -Comment[sl]=Pločnik -Comment[sr]=Плочник -Comment[sr@Latn]=Pločnik -Comment[sv]=Trottoar -Comment[ta]=நடைபாதை -Comment[te]=తలవరుస -Comment[tg]=Пиёдарав -Comment[th]=ทางเท้า -Comment[tr]=Kaldırım -Comment[tt]=Uram -Comment[uk]=Дорога -Comment[uz]=Yoʻlak -Comment[uz@cyrillic]=Йўлак -Comment[ven]=Ludila -Comment[vi]=Lát gạch hoa -Comment[wa]=Trotwer -Comment[xh]=Umgangatho osecaleni kwendlela -Comment[zh_CN]=人行道 -Comment[zh_TW]=人行道 -Comment[zu]=Unqenqema eceleni komgwaqo File=pavement.png diff --git a/kdesktop/patterns/rattan.desktop b/kdesktop/patterns/rattan.desktop index 73c133c08..88a2e87d9 100644 --- a/kdesktop/patterns/rattan.desktop +++ b/kdesktop/patterns/rattan.desktop @@ -1,40 +1,3 @@ [KDE Desktop Pattern] Comment=Rattan -Comment[bn]=রাটান -Comment[br]=Lien skosat -Comment[cs]=Rákos -Comment[eo]=Plektaĵo -Comment[es]=Rota (planta) -Comment[fa]=چوبدستی -Comment[fi]=Rottinki -Comment[fr]=Rotin -Comment[fy]=Rotan -Comment[ga]=Ratán -Comment[he]=דקלים -Comment[hi]=बेंत -Comment[hu]=Nádfonat -Comment[id]=Rotan -Comment[ja]=籐 (とう) -Comment[ka]=რატანი -Comment[km]=ផ្ដៅ -Comment[lo]=ຫວາຍ -Comment[lv]=Rotangpalma -Comment[mk]=Трска -Comment[ms]=Rotan -Comment[ne]=रेटन -Comment[nl]=Rotan -Comment[pa]=ਰਾਟਾਨ -Comment[pt]=Rota -Comment[ro]=Sac de iută -Comment[rw]=Umukindo -Comment[sk]=Trsť -Comment[sv]=Rotting -Comment[ta]=ரட்டன் -Comment[te]=రట్టాన్ -Comment[th]=หวาย -Comment[uz]=Palma -Comment[uz@cyrillic]=Пальма -Comment[vi]=Cây song mây -Comment[zh_CN]=藤条 -Comment[zh_TW]=藤條 File=rattan.png diff --git a/kdesktop/patterns/stonewall2.desktop b/kdesktop/patterns/stonewall2.desktop index c9c49dde9..55256c289 100644 --- a/kdesktop/patterns/stonewall2.desktop +++ b/kdesktop/patterns/stonewall2.desktop @@ -1,76 +1,3 @@ [KDE Desktop Pattern] Comment=Stonewall 2 by Tigert -Comment[af]=Klipmuur 2 deur Tigert -Comment[ar]=Stonewall 2 من Tigert -Comment[az]=Tigert'dan Daş Divar 2 -Comment[be]=Каменная сцяна 2 ад Tigert -Comment[bn]=Tigert-এর স্টোনওয়াল ২ -Comment[br]=Moger mein 2 gant Tigert -Comment[ca]=Mur de pedra 2 per Tigert -Comment[cs]=Stonewall 2 vytvořil Tigert -Comment[csb]=Kamny mùr 2 (ùs. Tigert) -Comment[cy]=Stonewall 2 gan Tigert -Comment[da]=Stenmur 2 af Tigert -Comment[de]=Stonewall 2 -Comment[el]=Stonewall 2 από τον Tigert -Comment[eo]=Ŝtonmuro 2 -Comment[es]=Pared de piedra 2 de Tigert -Comment[et]=Stonewall 2 (Tigert) -Comment[eu]=Stonewall 2, Tigertek egina -Comment[fa]=Stonewall ۲ توسط تیگرت -Comment[fi]=Kiviseinä 2, tehnyt Tigert -Comment[fr]=Stonewall 2 par Tigert -Comment[fy]=Stienen muorre 2, troch Tigert -Comment[gl]=Stonewall 2 por Tigert -Comment[he]=חומת אבנים -Comment[hi]=टिगर्ट द्वारा स्टोनवाल 2 -Comment[hr]=Stonewall 2 (izr. Tigert) -Comment[hu]=Tigert 2. kőfala -Comment[id]=Tembok batu 2 oleh Tigert -Comment[is]=Steinveggur 2 eftir Tigert -Comment[it]=Mattoni 2 (di Tigert) -Comment[ja]=Tigert による Stonewall -Comment[ka]=ქვის კედელი 2 (Tigert) -Comment[kk]=Тас дуал 2 (Tigert) -Comment[km]=ជញ្ជាំងថ្ម ២ ដោយ Tigert -Comment[lo]=ກຳແພງຫີນ 2 ໂດຍ Tigert -Comment[lt]=Tigert'o akmens siena 2 -Comment[lv]=Akmens siena 2 no Tigerta -Comment[mk]=Камен ѕид 2 од Tigert -Comment[mn]=Чулуун хана 2 -Comment[ms]=Tembok Batu 2 oleh Tigert -Comment[mt]=Stonewall 2 minn Tigert -Comment[nb]=Steinvegg 2 av Tigert -Comment[nds]=Stonewall 2 vun Tigert -Comment[ne]=टिग्रेटद्वारा स्टोनवाल २ -Comment[nl]=Stenen muur 2, door Tigert -Comment[nn]=Steinvegg 2 av Tigert -Comment[nso]=Stonewall 2 ka Tigert -Comment[oc]=Mur de peira 2 per Tigert -Comment[pa]=ਪੱਥਰੀ ਕੰਧ ਟੀਗਿਰਟ -Comment[pl]=Kamienny mur 2 (wyk. Tigert) -Comment[pt]=Stonewall 2 de Tigert -Comment[pt_BR]=Stonewall 2 por Tigert -Comment[ro]=Zid de piatră 2 de Tigert -Comment[ru]=Каменная стена 2 (Tigert) -Comment[rw]=Stonewall 2 na Tigert -Comment[se]=Tigert:a geađgeseaidni 2 -Comment[sk]=Stonewall 2 od Tigerta -Comment[sl]=Stonewall 2, Tigert -Comment[sv]=Stenmur 2 av Tigert -Comment[ta]=டைக்ரெட்டின் ஸ்டோன்வால் 2 -Comment[tg]=Девори сангии 2 аз Tigert -Comment[th]=กำแพงหิน 2 โดย Tigert -Comment[tr]=Tigert'dan Taşduvar 2 -Comment[tt]=Taşdíwar 2 (Tigert tarafınnan) -Comment[uk]=Кам'яна стіна Тайгерта 2 -Comment[uz]=Tosh devol 2 (Tigert tomonidan) -Comment[uz@cyrillic]=Тош девол 2 (Тигерт томонидан) -Comment[ven]=Luvhondo lwa tombo lwa vhuvhili nga Tigert -Comment[vi]=Tường đá 2 bởi Tigert -Comment[wa]=Meur di pires 2 pa Tigert -Comment[xh]=Stonewall 2 ngu Tigert -Comment[zh_CN]=Tigert 的石墙 2 -Comment[zh_TW]=石牆 2 (Tigert 繪製) -Comment[zu]=Stonewall 2 ngu-Tigert File=stonewall2.png diff --git a/kdesktop/patterns/triangles.desktop b/kdesktop/patterns/triangles.desktop index 846e698ce..be355b468 100644 --- a/kdesktop/patterns/triangles.desktop +++ b/kdesktop/patterns/triangles.desktop @@ -1,76 +1,3 @@ [KDE Desktop Pattern] Comment=Triangles -Comment[af]=Driehoeke -Comment[ar]=مثلثات -Comment[az]=Üç Bucaqlar -Comment[be]=Трохкутнікі -Comment[bn]=ত্রিভুজ -Comment[br]=Tric'hornioù -Comment[cs]=Trojúhelníky -Comment[csb]=Trzënórtë -Comment[cy]=Trionglau -Comment[da]=Trekanter -Comment[de]=Dreiecke -Comment[el]=Τρίγωνα -Comment[eo]=Trianguloj -Comment[es]=Triángulos -Comment[eu]=Triangeluak -Comment[fa]=مثلثها -Comment[fi]=Kolmiot -Comment[fy]=Trijehoeken -Comment[ga]=Triantáin -Comment[gl]=Triángulos -Comment[he]=משולשים -Comment[hi]=त्रिभुज -Comment[hr]=Trokuti -Comment[hu]=Háromszögek -Comment[id]=Segi Tiga -Comment[is]=Þríhyrningar -Comment[it]=Triangoli -Comment[ja]=三角 -Comment[ka]=სამკუთხედები -Comment[kk]=Үшбұрыштар -Comment[km]=ត្រីកោណ -Comment[lo]=ສາມລ່ງມ -Comment[lt]=Trikampiai -Comment[lv]=Trīsstūri -Comment[mk]=Триаголници -Comment[mn]=Гурвалжин -Comment[ms]=Segi Tiga -Comment[mt]=Triangoli -Comment[nb]=Trekanter -Comment[nds]=Dre'ecks -Comment[ne]=त्रिभुज -Comment[nl]=Driehoeken -Comment[nn]=Trekantar -Comment[nso]=Dikhutlotharo -Comment[pa]=ਤਿਕੋਣਾਂ -Comment[pl]=Trójkąty -Comment[pt]=Triângulos -Comment[pt_BR]=Triângulos -Comment[ro]=Triunghiuri -Comment[ru]=Треугольники -Comment[rw]=Mpandeshatu -Comment[se]=Golmmehat -Comment[sk]=Trojuholníky -Comment[sl]=Trikotniki -Comment[sr]=Троуглови -Comment[sr@Latn]=Trouglovi -Comment[sv]=Trianglar -Comment[ta]=முக்கோணங்கள் -Comment[te]=త్రికొణాలు -Comment[tg]=Секунҷаҳо -Comment[th]=สามเหลี่ยม -Comment[tr]=Üçgenler -Comment[tt]=Öçpoçmaq -Comment[uk]=Трикутники -Comment[uz]=Uchburchaklar -Comment[uz@cyrillic]=Учбурчаклар -Comment[ven]=Thiriengele -Comment[vi]=Tam giác -Comment[wa]=Triyangues -Comment[xh]=Oonxantathu -Comment[zh_CN]=三角形 -Comment[zh_TW]=三角形 -Comment[zu]=Onxantathu File=triangles.png diff --git a/kdesktop/pics/ksslogo.png b/kdesktop/pics/ksslogo.png Binary files differindex 466215dee..db984eedf 100644..100755 --- a/kdesktop/pics/ksslogo.png +++ b/kdesktop/pics/ksslogo.png diff --git a/kdesktop/pics/splash.png b/kdesktop/pics/splash.png Binary files differindex 1d5738697..52d76596f 100644..100755 --- a/kdesktop/pics/splash.png +++ b/kdesktop/pics/splash.png diff --git a/kdesktop/pixmapserver.cc b/kdesktop/pixmapserver.cpp index 7a480cdb6..b60942277 100644 --- a/kdesktop/pixmapserver.cc +++ b/kdesktop/pixmapserver.cpp @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl> @@ -39,7 +39,7 @@ KPixmapServer::KPixmapServer() : TQWidget(0L, "shpixmap comm window") { - kapp->installX11EventFilter(this); + tdeApp->installX11EventFilter(this); pixmap = XInternAtom(tqt_xdisplay(), "PIXMAP", false); } diff --git a/kdesktop/pixmapserver.h b/kdesktop/pixmapserver.h index 3084cd0a3..661d531ad 100644 --- a/kdesktop/pixmapserver.h +++ b/kdesktop/pixmapserver.h @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl> @@ -24,7 +24,7 @@ struct KPixmapInode { - Qt::HANDLE handle; + TQt::HANDLE handle; Atom selection; }; @@ -37,7 +37,7 @@ struct KPixmapData struct TDESelectionInode { - Qt::HANDLE handle; + TQt::HANDLE handle; TQString name; }; @@ -50,7 +50,7 @@ struct TDESelectionInode */ class KPixmapServer: public TQWidget { - Q_OBJECT + TQ_OBJECT public: KPixmapServer(); diff --git a/kdesktop/programs/CMakeLists.txt b/kdesktop/programs/CMakeLists.txt index e89527a1e..4a8572f81 100644 --- a/kdesktop/programs/CMakeLists.txt +++ b/kdesktop/programs/CMakeLists.txt @@ -9,6 +9,9 @@ # ################################################# -install( FILES +tde_create_translated_desktop( + SOURCE xearth.desktop xglobe.desktop xplanet.desktop - DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs ) + DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs + PO_DIR kdesktop-desktops +) diff --git a/kdesktop/programs/xearth.desktop b/kdesktop/programs/xearth.desktop index 36af7e78b..1fd7f376f 100644 --- a/kdesktop/programs/xearth.desktop +++ b/kdesktop/programs/xearth.desktop @@ -1,80 +1,5 @@ [TDE Desktop Program] Comment=XEarth by Kirk Johnson -Comment[af]=XEarth deur Kirk Johnson -Comment[ar]=XEarth من تأليف Kirk Johnson -Comment[az]=Kirk Johnson'dan XEarth -Comment[be]=Зямля (Kirk Johnson) -Comment[bn]=কার্ক জনসন-এর এক্স-আর্থ -Comment[br]=XEarth gant Kirk Johnson -Comment[ca]=XEarth per Kirk Johnson -Comment[cs]=XEarth vytvořil Kirk Johnson -Comment[csb]=XEarth (ùs. Kirk Johnson) -Comment[cy]=XEarth gan Kirk Johnson -Comment[da]=XEarth af Kirk Johnson -Comment[de]=XEarth -Comment[el]=XEarth από τον Kirk Johnson -Comment[eo]=XTero -Comment[es]=XEarth de Kirk Johnson -Comment[et]=XEarth (Kirk Johnson) -Comment[eu]=XEarth, Kirk Johnsonek egina -Comment[fa]=XEarth توسط کیرک جانسون -Comment[fi]=XEarth, tehnyt Kirk Johnson -Comment[fr]=XEarth par Kirk Johnson -Comment[fy]=XEarth, troch Kirk Johnson -Comment[ga]=XEarth le Kirk Johnson -Comment[gl]=XEarth por Kirk Johnson -Comment[he]=XEarth מאת Kirk Johnson -Comment[hi]=किर्क जॉनसन द्वारा एक्स-अर्थ -Comment[hr]=XEarth (izr. Kirka Johnsona) -Comment[hu]=Kirk Johnson földgömbje -Comment[id]=XEarth oleh Kirk Johnson -Comment[is]=XJörð eftir Kirk Johnson -Comment[it]=XEarth (di Kirk Johnson) -Comment[ja]=Kirk Johnson による XEarth -Comment[ka]=Xდედამიწა (Kirk Johnson) -Comment[kk]=XEarth (Kirk Johnson) -Comment[km]=XEarth ដោយ Kirk Johnson -Comment[lo]=ເເຜນທີ່ໂລກ ໂດຍ Kirk Johnson -Comment[lt]=Kirk Johnson'o XEarth -Comment[lv]=XEarth no Kirk Johnson -Comment[mk]=X-Земја од Kirk Johnson -Comment[mn]=XEarth -Comment[ms]=XEarth oleh Kirk Johnson -Comment[mt]=XEarth minn Kirk Johnson -Comment[nb]=XEarth av Kirk Johnson -Comment[nds]=XEarth vun Kirk Johnson -Comment[ne]=किर्क जोहान्सनद्वारा X अर्थ -Comment[nl]=XEarth, door Kirk Johnson -Comment[nn]=XEarth av Kirk Johnson -Comment[nso]=XLefase ka Kirk Johnson -Comment[oc]=XEarth per Kirk Johnson -Comment[pa]=ਕਿਰਕ ਜਾਨਸਨ ਵਲੋਂ XEarth -Comment[pl]=XEarth autorstwa Kirka Johnsona -Comment[pt]=XEarth de Kirk Johnson -Comment[pt_BR]=XEarth por Kirk Johnson -Comment[ro]=XEarth de Kirk Johnson -Comment[ru]=XEarth (Kirk Johnson) -Comment[rw]=XEarth na Kirk Johnson -Comment[se]=Kirk Johnson:a XEarth -Comment[sk]=XEarth od Kirka Johnsona -Comment[sl]=XEarth avtorja Kirka Johnsona -Comment[ss]=XEarth ngu Kirk Johnson -Comment[sv]=Xearth av Kirk Johnson -Comment[ta]=கிர்க் ஜான்சனின் Xஎர்த் -Comment[tg]=XEarth аз Kirk Johnson -Comment[th]=แผนที่โลก โดยเคิร์ก จอห์นสัน -Comment[tr]=Kirk Johnson'dan XEarth -Comment[tt]=XEarth, Kirk Johnson tarafınnan -Comment[uk]=XEarth Кірка Джонсона -Comment[uz]=XEarth (Kirik Jonson tomonidan) -Comment[uz@cyrillic]=XEarth (Кирик Жонсон томонидан) -Comment[ven]=Shango la X nga Kirk Johnson -Comment[vi]=Trái Đất X bởi Kirk Johnson -Comment[wa]=XDaegn pa Kirk Johnson -Comment[xh]=XEarth ngu Kirk Johnson -Comment[zh_CN]=Kirk Johnson 的 XEarth -Comment[zh_TW]=XEarth (Kirk Johnson 繪製) -Comment[zu]=XEarth ngu-Kirk Johnson Executable=xearth Command=xearth -size %x,%y -ppm > %f PreviewCommand=xearth -size %x,%y -nomarkers -ppm > %f diff --git a/kdesktop/programs/xglobe.desktop b/kdesktop/programs/xglobe.desktop index 01b8244be..379980837 100644 --- a/kdesktop/programs/xglobe.desktop +++ b/kdesktop/programs/xglobe.desktop @@ -1,80 +1,5 @@ [TDE Desktop Program] Comment=XGlobe by Thorsten Scheuermann -Comment[af]=XGlobe deur Thorsten Scheuermann -Comment[ar]=XGlobe من تأليف Thorsten Scheuermann -Comment[az]=Thorsten Scheuermann'dan XGlobe -Comment[be]=Глобус (Thorsten Scheuermann) -Comment[bn]=থর্সটেন শিউয়ারমান-এর এক্স-গ্লোব -Comment[br]=XGlobe gant Thorsten Scheuermann -Comment[ca]=XGlobe per en Thorsten Scheuermann -Comment[cs]=XGlobe vytvořil Thorsten Scheuermann -Comment[csb]=XGlobe (ùs. Thorsten Scheuermann) -Comment[cy]=XGlobe gan Thorsten Scheuermann -Comment[da]=XGlobe af Thorsten Scheuermann -Comment[de]=XGlobe -Comment[el]=XGlobe από τον Thorsten Scheuermann -Comment[eo]=XGlobo -Comment[es]=XGlobe por Thorsten Scheuermann -Comment[et]=XGlobe (Thorsten Scheuermann) -Comment[eu]=XGlobe, Thorsten Scheuermannek egina -Comment[fa]=XGlobe توسط تورستن شرمن -Comment[fi]=XGlobe, tehnyt Thorsten Scheuermann -Comment[fr]=XGlobe par Thorsten Scheuermann -Comment[fy]=XGlobe, troch Thorsten Scheuermann -Comment[ga]=XGlobe le Thorsten Scheuermann -Comment[gl]=XGlobe por Thorsten Scheuermann -Comment[he]=XGlobe מאת Thorsten Scheuermann -Comment[hi]=थार्स्टन शर्मन द्वारा एक्स-ग्लोब -Comment[hr]=XGlobe (izr. Thorsten Scheuermann) -Comment[hu]=Thorsten Scheuermann földgömbje -Comment[id]=XGlobe oleh Thorsten Scheuermann -Comment[is]=XHnöttur eftir Thorsten Scheuermann -Comment[it]=XGlobe (di Thorsten Scheuermann) -Comment[ja]=Thorsten Scheuermann による XGlobe -Comment[ka]=Xგლობუსი (Thorsten Scheuermann) -Comment[kk]=XGlobe (Thorsten Scheuermann) -Comment[km]=XGlobe ដោយ Thorsten Scheuermann -Comment[lo]=ລູກໂລກ ໂດຍ Thorsten Scheuermann -Comment[lt]=Thorsten Scheuermann'o XGlobe -Comment[lv]=XGlobe no Thorsten Scheuermann -Comment[mk]=X-Глобус од Thorsten Scheuermann -Comment[mn]=XGlobe -Comment[ms]=XGlobe oleh Thorsten Scheuermann -Comment[mt]=XGlobe minn Thorsten Scheuermann -Comment[nb]=XGlobe av Thorsten Scheuermann -Comment[nds]=XGlobe vun Thorsten Scheuermann -Comment[ne]=थर्स्टर सेचरम्यानद्वारा X ग्लोब -Comment[nl]=XGlobe, door Thorsten Scheuermann -Comment[nn]=XGlobe av Thorsten Scheuermann -Comment[nso]=XGlobe ka Thorsten Scheuermann -Comment[oc]=XGlobe per Thorsten Scheuermann -Comment[pa]=ਥੋਰਸਟੀਨ ਸਚੀਉਰਮਨ ਵਲੋਂ XGlobe -Comment[pl]=XGlobe autorstwa Thorstena Scheuermanna -Comment[pt]=XGlobe de Thorsten Scheuermann -Comment[pt_BR]=XGlobe por Thorsten Scheuermann -Comment[ro]=XGlobe de Thorsten Scheuermann -Comment[ru]=XGlobe (Thorsten Scheuermann) -Comment[rw]=XGlobe na Thorsten Scheuermann -Comment[se]=Thorsten Scheuermann:a XGlobe -Comment[sk]=XGlobe od Thorstena Scheuermanna -Comment[sl]=XGlobe avtorja Thorstena Scheuermanna -Comment[ss]=XGlobe ngu Thorsten Scheuermann -Comment[sv]=Xglobe av Thorsten Scheuermann -Comment[ta]=த்ராஸ்டன் ஸ்யூர்மானின் எக்ஸ் க்ளோப் -Comment[tg]=XGlobe аз Thorsten Scheuermann -Comment[th]=ลูกโลก โดย Thorsten Scheuermann -Comment[tr]=Thorsten Scheuermann'dan XGlobe -Comment[tt]=XGlobe, Thorsten Scheuermann tarafınnan -Comment[uk]=XGlobe Торстена Шоєрмана -Comment[uz]=XGlobe (Torsten Shoyerman tomonidan) -Comment[uz@cyrillic]=XGlobe (Торстен Шойерман томонидан) -Comment[ven]=Lifhasi la X nga Thorsten Scheuermann -Comment[vi]=Qủa cầu X bởi Thorsten Scheuermann -Comment[wa]=XGlobe pa Thorsten Scheuermann -Comment[xh]=XGlobe ngu Thorsten Scheuermann -Comment[zh_CN]=Thorsten Scheuermann 的 XGlobe -Comment[zh_TW]=XGlobe (Thorsten Scheuermann 繪製) -Comment[zu]=XGlobe ngu-Thorsten Scheuermann Executable=xglobe Command=xglobe -dump -once -size %x,%y -nomarkers && mv xglobe-dump.bmp %f PreviewCommand=xglobe -nomarkers -nolabel -dump -once -size %x,%y && mv xglobe-dump.bmp %f diff --git a/kdesktop/programs/xplanet.desktop b/kdesktop/programs/xplanet.desktop index 8ee5b0980..e5485ceb3 100644 --- a/kdesktop/programs/xplanet.desktop +++ b/kdesktop/programs/xplanet.desktop @@ -1,80 +1,6 @@ [TDE Desktop Program] -Command=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f Comment=XPlanet by Hari Nair -Comment[af]=XPlaneet deur Hari Nair -Comment[ar]=XPlanet من تليف Hari Nair -Comment[az]=Hari Nair'dan XPlanet -Comment[be]=Планета (Hari Nair) -Comment[bn]=হরি নায়ার-এর এক্স-প্ল্যানেট -Comment[br]=XPlanet gant Hari Nair -Comment[ca]=XPlanet per en Hari Nair -Comment[cs]=XPlanet od Hariho Naira -Comment[csb]=XPlanet (ùs.Hari Neir) -Comment[cy]=XPlanet gan Hari Nair -Comment[da]=XPlanet af Hari Nair -Comment[de]=XPlanet -Comment[el]=XPlanet του Hari Nair -Comment[eo]=XPlanedo de Hari Nair -Comment[es]=XPlanet de Hari Nair -Comment[et]=XPlanet (Hari Nair) -Comment[eu]=XPlanet Hari Nair-ek egina -Comment[fa]=XPlanet توسط هاری نیر -Comment[fi]=XPlanet, tehnyt Hari Nair -Comment[fr]=XPlanet par Hari Nair -Comment[fy]=XPlanet, troch Hari Nair -Comment[ga]=XPlanet le Hari Nair -Comment[gl]=XPlanet por Hari Nair -Comment[he]=XPlanet מאת הארי נייר -Comment[hi]=हरी नायर द्वारा एक्स-प्लेनेट -Comment[hr]=XPlanet (izr. Hari Nair) -Comment[hu]=Hari Nair XPlanetje -Comment[id]=,XPlanet by Hari Nair -Comment[is]=XPlánetur eftir Hari Nair -Comment[it]=XPlanet (di Hari Nair) -Comment[ja]=Hari Nair による XPlanet -Comment[ka]=Xპლანეტა (Hari Nair) -Comment[kk]=XPlanet (Hari Nair) -Comment[km]=XPlanet ដោយ Hari Nair -Comment[lo]=ອາວະກາດ ໂດຍ Hari Nair -Comment[lt]=Hari Nair'o XPlanet -Comment[lv]=XPlanet no Hari Nair -Comment[mk]=XПланета од Hari Nair -Comment[mn]=XPlanet -Comment[ms]=XPlanet oleh Hari Nair -Comment[mt]=XPlanet minn Hari Nair -Comment[nb]=XPlanet av Hari Nair -Comment[nds]=XPlanet vun Hari Nair -Comment[ne]=हरि नैरद्वारा X प्लानेट -Comment[nl]=XPlanet, door Hari Nair -Comment[nn]=XPlanet av Hari Nair -Comment[nso]=XPlanet ka Hari Nair -Comment[pa]=ਹੇਰੀ ਨਾਇਰ ਵਲੋਂ XPlanet -Comment[pl]=XPlanet autorstwa Hari Neir -Comment[pt]=XPlanet de Hari Nair -Comment[pt_BR]=XPlanet por Hari Nair -Comment[ro]=XPlanet de Hari Nair -Comment[ru]=XPlanet (Hari Nair) -Comment[rw]=XPlanet na Hari Nair -Comment[se]=Hari Naira XPlanet -Comment[sk]=XPlanet od Hari Nair -Comment[sl]=XPlanet Harija Naira -Comment[ss]=XPlanet ngu Hari Nair -Comment[sv]=Xplanet av Hari Nair -Comment[ta]=ஹரி நாயரின் Xப்ளானட் -Comment[tg]=XPlanet аз Hari Nair -Comment[th]=ดาวเคราะห์ โดย Hari Nair -Comment[tr]=Hari Nair'dan XPlanet -Comment[tt]=XPlanet, Hari Nair tarafınnan -Comment[uk]=XPlanet від Hari Nair -Comment[uz]=XPlanet (Xari Neyr tomonidan) -Comment[uz@cyrillic]=XPlanet (Хари Нейр томонидан) -Comment[ven]=Pulanete ya X nga Hari Nair -Comment[vi]=Hành tinh X bởi Hari Nair -Comment[wa]=XPlanete pa Hari Nair -Comment[xh]=XPlanet ngu Hari Nair -Comment[zh_CN]=Hari Nair 的 XPlanet -Comment[zh_TW]=XPlanet (Hari Nair 繪製) -Comment[zu]=XPlanet ngu-Hari Nair Executable=xplanet +Command=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f PreviewCommand=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f Refresh=10 diff --git a/kdesktop/startupid.cpp b/kdesktop/startupid.cpp index 4027b7e9a..2aeac904a 100644 --- a/kdesktop/startupid.cpp +++ b/kdesktop/startupid.cpp @@ -54,18 +54,18 @@ StartupId::StartupId( TQWidget* parent, const char* name ) XWindowAttributes attrs; XGetWindowAttributes( tqt_xdisplay(), tqt_xrootwin(), &attrs); XSelectInput( tqt_xdisplay(), tqt_xrootwin(), attrs.your_event_mask | SubstructureNotifyMask); - kapp->installX11EventFilter( this ); + tdeApp->installX11EventFilter( this ); } - connect( &update_timer, TQT_SIGNAL( timeout()), TQT_SLOT( update_startupid())); + connect( &update_timer, TQ_SIGNAL( timeout()), TQ_SLOT( update_startupid())); connect( &startup_info, - TQT_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& ))); + TQ_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& ))); connect( &startup_info, - TQT_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& ))); + TQ_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& ))); connect( &startup_info, - TQT_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotRemoveStartup( const TDEStartupInfoId& ))); + TQ_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotRemoveStartup( const TDEStartupInfoId& ))); } StartupId::~StartupId() @@ -129,10 +129,10 @@ bool StartupId::x11Event( XEvent* e ) if( startups.count() == 0 ) start_startupid( KDE_STARTUP_ICON ); // 60(?) sec timeout - shouldn't be hopefully needed anyway, ksmserver should have it too - TQTimer::singleShot( 60000, this, TQT_SLOT( finishKDEStartup())); + TQTimer::singleShot( 60000, this, TQ_SLOT( finishKDEStartup())); } else if( strcmp( s, "session ready" ) == 0 && kde_startup_status < StartupDone ) - TQTimer::singleShot( 2000, this, TQT_SLOT( finishKDEStartup())); + TQTimer::singleShot( 2000, this, TQ_SLOT( finishKDEStartup())); } return false; } @@ -140,7 +140,7 @@ bool StartupId::x11Event( XEvent* e ) void StartupId::finishKDEStartup() { kde_startup_status = StartupDone; - kapp->removeX11EventFilter( this ); + tdeApp->removeX11EventFilter( this ); if( startups.count() == 0 ) stop_startupid(); } @@ -176,7 +176,7 @@ void StartupId::start_startupid( const TQString& icon_P ) { const TQColor startup_colors[ StartupId::NUM_BLINKING_PIXMAPS ] - = { Qt::black, Qt::darkGray, Qt::lightGray, Qt::white, Qt::white }; + = { TQt::black, TQt::darkGray, TQt::lightGray, TQt::white, TQt::white }; TQPixmap icon_pixmap = TDEGlobal::iconLoader()->loadIcon( icon_P, TDEIcon::Small, 0, diff --git a/kdesktop/startupid.h b/kdesktop/startupid.h index 893d0b8db..27345d598 100644 --- a/kdesktop/startupid.h +++ b/kdesktop/startupid.h @@ -34,7 +34,7 @@ class TQStyle; class StartupId : public TQWidget { - Q_OBJECT + TQ_OBJECT public: StartupId( TQWidget* parent = 0, const char* name = 0 ); virtual ~StartupId(); diff --git a/kdesktop/tdefileividesktop.cpp b/kdesktop/tdefileividesktop.cpp index bf9aa074c..464b5490d 100644 --- a/kdesktop/tdefileividesktop.cpp +++ b/kdesktop/tdefileividesktop.cpp @@ -144,10 +144,10 @@ void KFileIVIDesktop::drawShadowedText( TQPainter *p, const TQColorGroup &cg ) int textX; if (drawRoundedRect == true) - textX = textRect( FALSE ).x() + 4; + textX = textRect( false ).x() + 4; else - textX = textRect( FALSE ).x() + 2; - int textY = textRect( FALSE ).y(); + textX = textRect( false ).x() + 2; + int textY = textRect( false ).y(); int align = ((TDEIconView *) iconView())->itemTextPos() == TQIconView::Bottom ? AlignHCenter : AlignAuto; // FIXME @@ -222,11 +222,11 @@ TQImage *KFileIVIDesktop::buildShadow( TQPainter *p, const int align, TQPainter pixPainter; int spread = shadowThickness(); - TQPixmap textPixmap(textRect( FALSE ).width() + spread * 2 + 2, - textRect( FALSE ).height() + spread * 2 + 2); + TQPixmap textPixmap(textRect( false ).width() + spread * 2 + 2, + textRect( false ).height() + spread * 2 + 2); textPixmap.fill(TQColor(0,0,0)); - textPixmap.setMask( textPixmap.createHeuristicMask(TRUE) ); + textPixmap.setMask( textPixmap.createHeuristicMask(true) ); pixPainter.begin(&textPixmap); pixPainter.setPen(white); // get the pen from the root painter diff --git a/kdesktop/tdefileividesktop.h b/kdesktop/tdefileividesktop.h index 46f77f636..0434a706e 100644 --- a/kdesktop/tdefileividesktop.h +++ b/kdesktop/tdefileividesktop.h @@ -33,7 +33,7 @@ /* * The dither flags used to display the shadow image */ -#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither) +#define DITHER_FLAGS (TQt::DiffuseAlphaDither | TQt::ColorOnly | TQt::AvoidDither) class TQFont; diff --git a/kdesktop/xautolock.cc b/kdesktop/xautolock.cpp index 3c7e62670..95de8f3d6 100644 --- a/kdesktop/xautolock.cc +++ b/kdesktop/xautolock.cpp @@ -71,7 +71,7 @@ XAutoLock::XAutoLock() #endif if( !xautolock_useXidle && !xautolock_useMit ) { - kapp->installX11EventFilter( this ); + tdeApp->installX11EventFilter( this ); int (*oldHandler)(Display *, XErrorEvent *); oldHandler = XSetErrorHandler(catchFalseAlarms); XSync(tqt_xdisplay(), False ); diff --git a/kdesktop/xautolock.h b/kdesktop/xautolock.h index 5684ce6ef..a30405339 100644 --- a/kdesktop/xautolock.h +++ b/kdesktop/xautolock.h @@ -19,7 +19,7 @@ // class XAutoLock : public TQWidget { - Q_OBJECT + TQ_OBJECT public: XAutoLock(); ~XAutoLock(); |