From 4aed2c8219774f5d797760606b8489a92ddc5163 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kdesktop/AUTHORS | 4 + kdesktop/DESIGN | 94 ++ kdesktop/KBackgroundIface.h | 75 + kdesktop/KDesktopIface.h | 113 ++ kdesktop/KScreensaverIface.h | 49 + kdesktop/Makefile.am | 71 + kdesktop/bgmanager.cc | 811 +++++++++++ kdesktop/bgmanager.h | 126 ++ kdesktop/configure.in.in | 39 + kdesktop/desktop.cc | 986 ++++++++++++++ kdesktop/desktop.h | 212 +++ kdesktop/init.cc | 247 ++++ kdesktop/init.h | 30 + kdesktop/init/Home.desktop | 166 +++ kdesktop/init/Makefile.am | 8 + kdesktop/init/System.desktop | 149 ++ kdesktop/init/Templates/CAMERA-Device.desktop | 7 + kdesktop/init/Templates/CDROM-Device.desktop | 92 ++ kdesktop/init/Templates/CDWRITER-Device.desktop | 92 ++ kdesktop/init/Templates/DVDROM-Device.desktop | 92 ++ kdesktop/init/Templates/Directory.desktop | 146 ++ kdesktop/init/Templates/Floppy.desktop | 78 ++ kdesktop/init/Templates/HD.desktop | 7 + kdesktop/init/Templates/HTMLFile.desktop | 148 ++ kdesktop/init/Templates/HTMLFile.html | 8 + kdesktop/init/Templates/MO-Device.desktop | 7 + kdesktop/init/Templates/Makefile.am | 21 + kdesktop/init/Templates/NFS.desktop | 7 + kdesktop/init/Templates/Program.desktop | 6 + kdesktop/init/Templates/TextFile.desktop | 148 ++ kdesktop/init/Templates/TextFile.txt | 1 + kdesktop/init/Templates/URL.desktop | 3 + kdesktop/init/Templates/ZIP-Device.desktop | 92 ++ kdesktop/init/Templates/linkCAMERA.desktop | 150 ++ kdesktop/init/Templates/linkCDROM.desktop | 150 ++ kdesktop/init/Templates/linkCDWRITER.desktop | 150 ++ kdesktop/init/Templates/linkDVDROM.desktop | 150 ++ kdesktop/init/Templates/linkFloppy.desktop | 158 +++ kdesktop/init/Templates/linkHD.desktop | 157 +++ kdesktop/init/Templates/linkMO.desktop | 150 ++ kdesktop/init/Templates/linkNFS.desktop | 91 ++ kdesktop/init/Templates/linkProgram.desktop | 153 +++ kdesktop/init/Templates/linkURL.desktop | 153 +++ kdesktop/init/Templates/linkZIP.desktop | 150 ++ kdesktop/init/directory.autostart | 68 + kdesktop/init/directory.desktop | 81 ++ kdesktop/init/directory.templates | 78 ++ kdesktop/init/directory.trash | 160 +++ kdesktop/kcheckrunning.cpp | 29 + kdesktop/kcustommenu.cc | 111 ++ kdesktop/kcustommenu.h | 56 + kdesktop/kdesktop.desktop | 85 ++ kdesktop/kdesktop.kcfg | 370 +++++ kdesktop/kdesktopSetAsBackground.desktop | 210 +++ kdesktop/kdesktop_custom_menu1 | 2 + kdesktop/kdesktop_custom_menu2 | 2 + kdesktop/kdesktopbindings.cpp | 47 + kdesktop/kdesktopsettings.kcfgc | 4 + kdesktop/kdesktopshadowsettings.cpp | 92 ++ kdesktop/kdesktopshadowsettings.h | 117 ++ kdesktop/kdiconview.cc | 1668 +++++++++++++++++++++++ kdesktop/kdiconview.h | 256 ++++ kdesktop/kfileividesktop.cpp | 255 ++++ kdesktop/kfileividesktop.h | 127 ++ kdesktop/klaunch.kcfg | 40 + kdesktop/klaunchsettings.kcfgc | 4 + kdesktop/krootwm.cc | 859 ++++++++++++ kdesktop/krootwm.h | 175 +++ kdesktop/kshadowengine.cpp | 194 +++ kdesktop/kshadowengine.h | 113 ++ kdesktop/kshadowsettings.cpp | 182 +++ kdesktop/kshadowsettings.h | 234 ++++ kdesktop/kwebdesktop/Makefile.am | 15 + kdesktop/kwebdesktop/kwebdesktop.cpp | 191 +++ kdesktop/kwebdesktop/kwebdesktop.desktop | 80 ++ kdesktop/kwebdesktop/kwebdesktop.h | 70 + kdesktop/kwebdesktop/kwebdesktop.kcfg | 19 + kdesktop/kwebdesktop/kwebdesktopsettings.kcfgc | 4 + kdesktop/lock/Makefile.am | 24 + kdesktop/lock/autologout.cc | 115 ++ kdesktop/lock/autologout.h | 51 + kdesktop/lock/configure.in.in | 37 + kdesktop/lock/lockdlg.cc | 720 ++++++++++ kdesktop/lock/lockdlg.h | 92 ++ kdesktop/lock/lockprocess.cc | 1172 ++++++++++++++++ kdesktop/lock/lockprocess.h | 131 ++ kdesktop/lock/main.cc | 174 +++ kdesktop/lock/main.h | 39 + kdesktop/lockeng.cc | 371 +++++ kdesktop/lockeng.h | 113 ++ kdesktop/main.cc | 215 +++ kdesktop/minicli.cpp | 886 ++++++++++++ kdesktop/minicli.h | 112 ++ kdesktop/minicli_ui.ui | 624 +++++++++ kdesktop/patterns/Makefile.am | 5 + kdesktop/patterns/fish.desktop | 74 + kdesktop/patterns/fish.png | Bin 0 -> 246 bytes kdesktop/patterns/flowers.desktop | 79 ++ kdesktop/patterns/flowers.png | Bin 0 -> 246 bytes kdesktop/patterns/night-rock.desktop | 75 + kdesktop/patterns/night-rock.jpg | Bin 0 -> 30425 bytes kdesktop/patterns/pavement.desktop | 75 + kdesktop/patterns/pavement.png | Bin 0 -> 241 bytes kdesktop/patterns/rattan.desktop | 40 + kdesktop/patterns/rattan.png | Bin 0 -> 245 bytes kdesktop/patterns/stonewall2.desktop | 76 ++ kdesktop/patterns/stonewall2.png | Bin 0 -> 42047 bytes kdesktop/patterns/triangles.desktop | 76 ++ kdesktop/patterns/triangles.png | Bin 0 -> 246 bytes kdesktop/pics/Makefile.am | 9 + kdesktop/pics/cr32-app-error.png | Bin 0 -> 1591 bytes kdesktop/pics/kde2.xbm | 38 + kdesktop/pics/ksslogo.png | Bin 0 -> 6357 bytes kdesktop/pics/splash.png | Bin 0 -> 98647 bytes kdesktop/pics/splash2.png | Bin 0 -> 211370 bytes kdesktop/pixmapserver.cc | 254 ++++ kdesktop/pixmapserver.h | 124 ++ kdesktop/programs/Makefile.am | 2 + kdesktop/programs/xearth.desktop | 81 ++ kdesktop/programs/xglobe.desktop | 81 ++ kdesktop/programs/xplanet.desktop | 80 ++ kdesktop/startupid.cpp | 301 ++++ kdesktop/startupid.h | 66 + kdesktop/xautolock.cc | 289 ++++ kdesktop/xautolock.h | 77 ++ kdesktop/xautolock_c.h | 76 ++ kdesktop/xautolock_diy.c | 289 ++++ kdesktop/xautolock_engine.c | 419 ++++++ 128 files changed, 19307 insertions(+) create mode 100644 kdesktop/AUTHORS create mode 100644 kdesktop/DESIGN create mode 100644 kdesktop/KBackgroundIface.h create mode 100644 kdesktop/KDesktopIface.h create mode 100644 kdesktop/KScreensaverIface.h create mode 100644 kdesktop/Makefile.am create mode 100644 kdesktop/bgmanager.cc create mode 100644 kdesktop/bgmanager.h create mode 100644 kdesktop/configure.in.in create mode 100644 kdesktop/desktop.cc create mode 100644 kdesktop/desktop.h create mode 100644 kdesktop/init.cc create mode 100644 kdesktop/init.h create mode 100644 kdesktop/init/Home.desktop create mode 100644 kdesktop/init/Makefile.am create mode 100644 kdesktop/init/System.desktop create mode 100644 kdesktop/init/Templates/CAMERA-Device.desktop create mode 100644 kdesktop/init/Templates/CDROM-Device.desktop create mode 100644 kdesktop/init/Templates/CDWRITER-Device.desktop create mode 100644 kdesktop/init/Templates/DVDROM-Device.desktop create mode 100644 kdesktop/init/Templates/Directory.desktop create mode 100644 kdesktop/init/Templates/Floppy.desktop create mode 100644 kdesktop/init/Templates/HD.desktop create mode 100644 kdesktop/init/Templates/HTMLFile.desktop create mode 100644 kdesktop/init/Templates/HTMLFile.html create mode 100644 kdesktop/init/Templates/MO-Device.desktop create mode 100644 kdesktop/init/Templates/Makefile.am create mode 100644 kdesktop/init/Templates/NFS.desktop create mode 100644 kdesktop/init/Templates/Program.desktop create mode 100644 kdesktop/init/Templates/TextFile.desktop create mode 100644 kdesktop/init/Templates/TextFile.txt create mode 100644 kdesktop/init/Templates/URL.desktop create mode 100644 kdesktop/init/Templates/ZIP-Device.desktop create mode 100644 kdesktop/init/Templates/linkCAMERA.desktop create mode 100644 kdesktop/init/Templates/linkCDROM.desktop create mode 100644 kdesktop/init/Templates/linkCDWRITER.desktop create mode 100644 kdesktop/init/Templates/linkDVDROM.desktop create mode 100644 kdesktop/init/Templates/linkFloppy.desktop create mode 100644 kdesktop/init/Templates/linkHD.desktop create mode 100644 kdesktop/init/Templates/linkMO.desktop create mode 100644 kdesktop/init/Templates/linkNFS.desktop create mode 100644 kdesktop/init/Templates/linkProgram.desktop create mode 100644 kdesktop/init/Templates/linkURL.desktop create mode 100644 kdesktop/init/Templates/linkZIP.desktop create mode 100644 kdesktop/init/directory.autostart create mode 100644 kdesktop/init/directory.desktop create mode 100644 kdesktop/init/directory.templates create mode 100644 kdesktop/init/directory.trash create mode 100644 kdesktop/kcheckrunning.cpp create mode 100644 kdesktop/kcustommenu.cc create mode 100644 kdesktop/kcustommenu.h create mode 100644 kdesktop/kdesktop.desktop create mode 100644 kdesktop/kdesktop.kcfg create mode 100644 kdesktop/kdesktopSetAsBackground.desktop create mode 100644 kdesktop/kdesktop_custom_menu1 create mode 100644 kdesktop/kdesktop_custom_menu2 create mode 100644 kdesktop/kdesktopbindings.cpp create mode 100644 kdesktop/kdesktopsettings.kcfgc create mode 100644 kdesktop/kdesktopshadowsettings.cpp create mode 100644 kdesktop/kdesktopshadowsettings.h create mode 100644 kdesktop/kdiconview.cc create mode 100644 kdesktop/kdiconview.h create mode 100644 kdesktop/kfileividesktop.cpp create mode 100644 kdesktop/kfileividesktop.h create mode 100644 kdesktop/klaunch.kcfg create mode 100644 kdesktop/klaunchsettings.kcfgc create mode 100644 kdesktop/krootwm.cc create mode 100644 kdesktop/krootwm.h create mode 100644 kdesktop/kshadowengine.cpp create mode 100644 kdesktop/kshadowengine.h create mode 100644 kdesktop/kshadowsettings.cpp create mode 100644 kdesktop/kshadowsettings.h create mode 100644 kdesktop/kwebdesktop/Makefile.am create mode 100644 kdesktop/kwebdesktop/kwebdesktop.cpp create mode 100644 kdesktop/kwebdesktop/kwebdesktop.desktop create mode 100644 kdesktop/kwebdesktop/kwebdesktop.h create mode 100644 kdesktop/kwebdesktop/kwebdesktop.kcfg create mode 100644 kdesktop/kwebdesktop/kwebdesktopsettings.kcfgc create mode 100644 kdesktop/lock/Makefile.am create mode 100644 kdesktop/lock/autologout.cc create mode 100644 kdesktop/lock/autologout.h create mode 100644 kdesktop/lock/configure.in.in create mode 100644 kdesktop/lock/lockdlg.cc create mode 100644 kdesktop/lock/lockdlg.h create mode 100644 kdesktop/lock/lockprocess.cc create mode 100644 kdesktop/lock/lockprocess.h create mode 100644 kdesktop/lock/main.cc create mode 100644 kdesktop/lock/main.h create mode 100644 kdesktop/lockeng.cc create mode 100644 kdesktop/lockeng.h create mode 100644 kdesktop/main.cc create mode 100644 kdesktop/minicli.cpp create mode 100644 kdesktop/minicli.h create mode 100644 kdesktop/minicli_ui.ui create mode 100644 kdesktop/patterns/Makefile.am create mode 100644 kdesktop/patterns/fish.desktop create mode 100644 kdesktop/patterns/fish.png create mode 100644 kdesktop/patterns/flowers.desktop create mode 100644 kdesktop/patterns/flowers.png create mode 100644 kdesktop/patterns/night-rock.desktop create mode 100644 kdesktop/patterns/night-rock.jpg create mode 100644 kdesktop/patterns/pavement.desktop create mode 100644 kdesktop/patterns/pavement.png create mode 100644 kdesktop/patterns/rattan.desktop create mode 100644 kdesktop/patterns/rattan.png create mode 100644 kdesktop/patterns/stonewall2.desktop create mode 100644 kdesktop/patterns/stonewall2.png create mode 100644 kdesktop/patterns/triangles.desktop create mode 100644 kdesktop/patterns/triangles.png create mode 100644 kdesktop/pics/Makefile.am create mode 100644 kdesktop/pics/cr32-app-error.png create mode 100644 kdesktop/pics/kde2.xbm create mode 100644 kdesktop/pics/ksslogo.png create mode 100644 kdesktop/pics/splash.png create mode 100644 kdesktop/pics/splash2.png create mode 100644 kdesktop/pixmapserver.cc create mode 100644 kdesktop/pixmapserver.h create mode 100644 kdesktop/programs/Makefile.am create mode 100644 kdesktop/programs/xearth.desktop create mode 100644 kdesktop/programs/xglobe.desktop create mode 100644 kdesktop/programs/xplanet.desktop create mode 100644 kdesktop/startupid.cpp create mode 100644 kdesktop/startupid.h create mode 100644 kdesktop/xautolock.cc create mode 100644 kdesktop/xautolock.h create mode 100644 kdesktop/xautolock_c.h create mode 100644 kdesktop/xautolock_diy.c create mode 100644 kdesktop/xautolock_engine.c (limited to 'kdesktop') diff --git a/kdesktop/AUTHORS b/kdesktop/AUTHORS new file mode 100644 index 000000000..05bcfd697 --- /dev/null +++ b/kdesktop/AUTHORS @@ -0,0 +1,4 @@ +Torben Weis +David Faure +Martin R. Jones +Geert Jansen diff --git a/kdesktop/DESIGN b/kdesktop/DESIGN new file mode 100644 index 000000000..e2a6a2b8b --- /dev/null +++ b/kdesktop/DESIGN @@ -0,0 +1,94 @@ +KDesktop Design Document + +Author : + David Faure, faure@kde.org + Martin R. Jones, mjones@kde.org (screensaver) + Geert Jansen, g.t.jansen@stud.tue.nl (background code) + +Last modified: 24 Oct 1999 + +Overall design of KDesktop : +============================= + +KDesktop is the program that handles the desktop icons, +the popup menus for the desktop, the mac menubar, and the +screensaver system. + +Files : +======= + +main.* : main +desktop.* : the icon container for the desktop icons +krootwm.* : right and middle mouse button popup menus, Mac menubar +bg*.*: Background renderer/manager. + +icons.* : old code, not used anymore. + We need to borrow ideas from it for positioning icons after a DnD + (in kiconcontainer so that it works with konqueror as well) + - well, only if we want dropped icons to remain where they have been + dropped :) + We also need to store the desktop icons position, like was done in kfm. + and we need to do it for konqy as well. + +KDesktopIface* : DCOP interface for kdesktop, used by kfmclient + +lock* : screen saver/locker + +Libs used by KDesktop +====================== + +kdecore, kdeui, kfile - usual stuff :) +libkio - I/O stuff, mimetypes, services, registry +libkonq - properties dialog, templates ("new") menu, dir lister, settings + +Screensaver +=========== + +The screensaver now works in a similar way to xscreensaver, i.e. a driver +(kdesktop) provides the timeout, locking, and blanking functionality, but +does no actual drawing. A separate stand-alone program capable of +drawing on a supplied window is used to do the actual fancy graphics. +xscreensaver's "hacks" will work with the KDE screensaver engine. + +This makes adding new screensavers trivial, and means one less process that +must always be running (compared to KDE 1.x). + +The screensaver is controlled via DCOP: + +KScreensaverIface::configure() Reloads the screensaver config from desktoprc. +KScreensaverIface::lock() Locks the screen immediately. +KScreensaverIface::save() Saves the screen immediately. +KScreensaverIface::isEnabled() returns true if the screensaver is enabled. +KScreensaverIface::isBlanked() returns true if the screen is currently blank. + +Backgrounds +=========== + +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 +in X to either use one X screen, or 2 X screens. Difference is that if I +drag a window from one monitor to the other the application gets asked to +repaint itself on a 2 screen setup and a simple move of the window will be +done in memory (by XFree) if you have a 1 screen setup. + +Monitors example: + +----+ +-----+ 2 monitors, with same resolution to keep it simple. + | | | | + +----+ +-----+ + +In case of 1 screen (xinerama) + +------------+ + | + desktopGeometry == screenGeometry == 3200 x 1200 + +------------+ + +In case of 2 screen (multihead) + +----+ +-----+ + | | | | desktopGeometry = 3200 x 1200 + +----+ +-----+ screenGeometry = 1600 x 1200 (for each monitor) + diff --git a/kdesktop/KBackgroundIface.h b/kdesktop/KBackgroundIface.h new file mode 100644 index 000000000..bd2a6ba05 --- /dev/null +++ b/kdesktop/KBackgroundIface.h @@ -0,0 +1,75 @@ +/** + * DCOP interface for the background manager. + */ + +#ifndef __KBackgroundIface_h__ +#define __KBackgroundIface_h__ + +#include +#include + +class KBackgroundIface : virtual public DCOPObject +{ + K_DCOP +public: + +k_dcop: + /** Reread the configuration */ + virtual void configure() = 0; + + /** Enable/disable export of the background pixmap. */ + virtual void setExport(int xport) = 0; + + /** Returns the export desktop pixmap state. */ + virtual bool isExport() = 0; + + /** Enable/disable common desktop background. */ + virtual void setCommon(int common) = 0; + + /** Returns the common desktop background state. */ + virtual bool isCommon() = 0; + + /** Change caching behaviour. + * @param bLimit Limit cache if not equal to zero. + * @param size Cache size in kilobytes. */ + virtual void setCache(int bLimit, int size) = 0; + + /** Change the wallpaper. + * @param desk desktop number, or 0 for the current visible desktop. + * @param wallpaper The (local) path to the wallpaper. + * @param mode The tiling mode. */ + virtual void setWallpaper(int desk, QString wallpaper, int mode) = 0; + + /** Change the wallpaper. + * @param wallpaper The (local) path to the wallpaper. + * @param mode The tiling mode. */ + virtual void setWallpaper(QString wallpaper, int mode) = 0; + + /** Set color. + * @param c The color. + * @param isColorA true for foreground and false for background color. */ + virtual void setColor(const QColor &c, bool isColorA) = 0; + + /** Change the wallpaper in "multi mode". */ + virtual void changeWallpaper() = 0; + + /** Enable/disable desktop background. */ + virtual void setBackgroundEnabled(const bool enable) = 0; + + /** Return the current wallpaper for specified desk. + * @param desk desktop number, or 0 for the current visible desktop. + */ + virtual QString currentWallpaper( int desk ) = 0; + + /** Return the wallpaper list for specified desk. + * @param desk desktop number, or 0 for the current visible desktop. + */ + virtual QStringList wallpaperList(int desk) = 0; + + /** Return the wallpaper files for specified desk. + * @param desk desktop number, or 0 for the current visible desktop. + */ + virtual QStringList wallpaperFiles(int desk) = 0; +}; + +#endif // __KBackgroundIface_h__ diff --git a/kdesktop/KDesktopIface.h b/kdesktop/KDesktopIface.h new file mode 100644 index 000000000..bbd1852ab --- /dev/null +++ b/kdesktop/KDesktopIface.h @@ -0,0 +1,113 @@ + +#ifndef __KDesktopIface_h__ +#define __KDesktopIface_h__ + +#include +#include +#include + +class KDesktopIface : virtual public DCOPObject +{ + K_DCOP +public: + +k_dcop: + /** + * @internal + */ + virtual void runAutoStart() = 0; + + /** + * Re-arrange the desktop icons. + */ + virtual void rearrangeIcons() = 0; + /** + * @deprecated + */ + void rearrangeIcons( bool ) { rearrangeIcons(); } + /** + * Lineup the desktop icons. + */ + virtual void lineupIcons() = 0; + /** + * Select all icons + */ + virtual void selectAll() = 0; + /** + * Unselect all icons + */ + virtual void unselectAll() = 0; + /** + * Refresh all icons + */ + virtual void refreshIcons() = 0; + /** + * @return the urls of selected icons + */ + virtual QStringList selectedURLs() = 0; + + /** + * Re-read KDesktop's configuration + */ + virtual void configure() = 0; + /** + * Display the "Run Command" dialog (minicli) + */ + virtual void popupExecuteCommand() = 0; + /** + * Display the "Run Command" dialog (minicli) and prefill + * @since 3.4 + */ + virtual void popupExecuteCommand(const QString& command) = 0; + /** + * Get the background dcop interface (KBackgroundIface) + */ + DCOPRef background() { return DCOPRef( "kdesktop", "KBackgroundIface" ); } + /** + * Get the screensaver dcop interface (KScreensaverIface) + */ + DCOPRef screenSaver() { return DCOPRef( "kdesktop", "KScreensaverIface" ); } + /** + * Full refresh + */ + virtual void refresh() = 0; + /** + * Bye bye + */ + virtual void logout() = 0; + /** + * Returns whether KDesktop uses a virtual root. + */ + virtual bool isVRoot() = 0; + /** + * Set whether KDesktop should use a virtual root. + */ + virtual void setVRoot( bool enable )= 0; + /** + * Clears the command history and completion items + */ + virtual void clearCommandHistory() = 0; + /** + * Returns whether icons are enabled on the desktop + */ + virtual bool isIconsEnabled() = 0; + /** + * Disable icons on the desktop. + */ + virtual void setIconsEnabled( bool enable )= 0; + + /** + * Should be called by any application that wants to tell KDesktop + * to switch desktops e.g. the minipager applet on kicker. + */ + virtual void switchDesktops( int delta ) = 0; + + /** + * slot for kicker; called when the number or size of panels change the available + * space for desktop icons + */ + virtual void desktopIconsAreaChanged(const QRect &area, int screen) = 0; +}; + +#endif + diff --git a/kdesktop/KScreensaverIface.h b/kdesktop/KScreensaverIface.h new file mode 100644 index 000000000..0ed26b67a --- /dev/null +++ b/kdesktop/KScreensaverIface.h @@ -0,0 +1,49 @@ + +#ifndef __KScreensaverIface_h__ +#define __KScreensaverIface_h__ + +#include + +class KScreensaverIface : virtual public DCOPObject +{ + K_DCOP +public: + +k_dcop: + /** 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. */ + virtual void save() = 0; + + /** Quit the screensaver if it is running */ + virtual void quit() = 0; + + /** Is the screensaver enabled? */ + virtual bool isEnabled() = 0; + + /** + * Enable/disable the screensaver + * returns true if the action succeeded + */ + virtual bool enable( bool e ) = 0; + + /** Is the screen currently blanked? */ + virtual bool isBlanked() = 0; + + /** 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. + */ + virtual void setBlankOnly( bool blankOnly ) = 0; + + /*** + * @internal + */ + virtual void saverLockReady() = 0; +}; + +#endif diff --git a/kdesktop/Makefile.am b/kdesktop/Makefile.am new file mode 100644 index 000000000..0c1041f19 --- /dev/null +++ b/kdesktop/Makefile.am @@ -0,0 +1,71 @@ +## Makefile.am of kdebase/kdesktop + +INCLUDES = -I$(top_srcdir)/kcontrol/background -I$(top_srcdir)/libkonq -I$(top_srcdir)/kdmlib $(all_includes) +kdesktop_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) +kdesktop_la_LIBADD = libkdesktopsettings.la $(top_builddir)/libkonq/libkonq.la $(top_builddir)/kcontrol/background/libbgnd.la $(top_builddir)/kdmlib/libdmctl.la $(LIB_XSS) $(LIB_KUTILS) $(LIB_XCURSOR) + +SUBDIRS = . lock pics patterns programs init kwebdesktop + +####### Files + +bin_PROGRAMS = kcheckrunning +lib_LTLIBRARIES = +kdeinit_LTLIBRARIES = kdesktop.la +noinst_LTLIBRARIES = libkdesktopsettings.la + +libkdesktopsettings_la_LDFLAGS = $(all_libraries) -no-undefined +libkdesktopsettings_la_LIBADD = $(LIB_KDECORE) +libkdesktopsettings_la_SOURCES = kdesktopsettings.kcfgc klaunchsettings.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 \ + startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c \ + kshadowengine.cpp kshadowsettings.cpp \ + kdesktopshadowsettings.cpp kfileividesktop.cpp + +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 + +kcheckrunning_SOURCES = kcheckrunning.cpp +kcheckrunning_LDFLAGS = $(all_libraries) +kcheckrunning_LDADD = $(LIB_X11) + +METASOURCES = AUTO + +####### Build rules + +# List made with: grep -l kdesktopsettings.h *[pc] | sed -e 's/\.c.*$/.lo: kdesktopsettings.h/' +bgmanager.lo: kdesktopsettings.h +desktop.lo: kdesktopsettings.h +init.lo: kdesktopsettings.h +kdesktopsettings.lo: kdesktopsettings.h +kdiconview.lo: kdesktopsettings.h +krootwm.lo: kdesktopsettings.h +lockeng.lo: kdesktopsettings.h +main.lo: kdesktopsettings.h +minicli.lo: kdesktopsettings.h + +# List made with: grep -l klaunchsettings.h *[pc] | sed -e 's/\.c.*$/.lo: klaunchsettings.h/' +desktop.lo: klaunchsettings.h +klaunchsettings.lo: klaunchsettings.h +startupid.lo: klaunchsettings.h + +messages: rc.cpp + $(EXTRACTRC) lock/*.ui >> rc.cpp + $(XGETTEXT) lock/*.cc *.cc *.cpp *.h -o $(podir)/kdesktop.pot + +menu_DATA = kdesktop_custom_menu1 kdesktop_custom_menu2 +menudir = $(kde_confdir) + +autostart_DATA = kdesktop.desktop +autostartdir = $(datadir)/autostart + +konqservice_DATA = kdesktopSetAsBackground.desktop +konqservicedir = $(kde_datadir)/konqueror/servicemenus + +kde_kcfg_DATA = kdesktop.kcfg klaunch.kcfg diff --git a/kdesktop/bgmanager.cc b/kdesktop/bgmanager.cc new file mode 100644 index 000000000..62f97cecc --- /dev/null +++ b/kdesktop/bgmanager.cc @@ -0,0 +1,811 @@ +/* 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 + * + * You can Freely distribute this program under the GNU General Public + * License. See the file "COPYING" for the exact licensing terms. + */ + +#include +#include "bgrender.h" +#include "bgmanager.h" +#include "bgdefaults.h" +#include "kdesktopsettings.h" +#include "bgsettings.h" + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifndef None +#define None 0L +#endif + +#include "pixmapserver.h" + +template class QPtrVector; +template class QPtrVector; +template class QMemArray; + +static Atom prop_root; +static bool properties_inited = false; + +/**** KBackgroundManager ****/ + +KBackgroundManager::KBackgroundManager(QWidget *desktop, KWinModule* kwinModule) + : DCOPObject("KBackgroundIface") +{ + if( !properties_inited ) + { + prop_root = XInternAtom(qt_xdisplay(), "_XROOTPMAP_ID", False); + properties_inited = true; + } + m_bBgInitDone = false; + m_bEnabled = true; + + m_pDesktop = desktop; + if (desktop == 0L) + desktop = QApplication::desktop()->screen(); + + m_Renderer.resize( 1 ); + m_Cache.resize( 1 ); + + m_Serial = 0; m_Hash = 0; + m_pConfig = KGlobal::config(); + m_bExport = m_bCommon = m_bInit = false; + m_pKwinmodule = kwinModule; + m_pPixmapServer = new KPixmapServer(); + m_xrootpmap = None; + + for (unsigned i=0; ipixmap = 0L; + m_Cache[i]->hash = 0; + m_Cache[i]->exp_from = -1; + m_Renderer.insert (i, new KVirtualBGRenderer(i,m_pConfig)); + connect(m_Renderer[i], SIGNAL(imageDone(int)), SLOT(slotImageDone(int))); + m_Renderer[i]->enableTiling( true ); // optimize + } + + configure(); + + m_pTimer = new QTimer(this); + connect(m_pTimer, SIGNAL(timeout()), SLOT(slotTimeout())); + m_pTimer->start( 60000 ); + + connect(m_pKwinmodule, SIGNAL(currentDesktopChanged(int)), + SLOT(slotChangeDesktop(int))); + connect(m_pKwinmodule, SIGNAL(numberOfDesktopsChanged(int)), + SLOT(slotChangeNumberOfDesktops(int))); + +#if (QT_VERSION-0 >= 0x030200) + connect( kapp->desktop(), SIGNAL( resized( int )), SLOT( desktopResized())); // RANDR support +#endif +} + + +KBackgroundManager::~KBackgroundManager() +{ + for (unsigned i=0; ipixmap; + delete m_Cache[i]; + } +} + + +void KBackgroundManager::applyExport(bool exp) +{ + if (exp == m_bExport) + return; + + // If export mode changed from true -> false, remove all shared pixmaps. + // If it changed false -> true force a redraw because the current screen + // image might not have an associated pixmap in the cache. + if (!exp) + { + for (unsigned i=0; i true, remove all cache entries, except + // at index 0 if exports are on. + if (m_bCommon) + { + if (!m_bExport) + removeCache(0); + for (unsigned i=1; ireparseConfiguration(); + KDesktopSettings::self()->readConfig(); + + // Read individual settings + KVirtualBGRenderer *r; + for (unsigned i=0; ihash(); + r->load(i,false); + if ((r->hash() != ohash)) + removeCache(i); + } + + applyCommon(KDesktopSettings::commonDesktop()); + + bool limit = KDesktopSettings::limitCache(); + int size = KDesktopSettings::cacheSize() * 1024; + applyCache(limit, size); + + // Repaint desktop + slotChangeDesktop(0); +} + + +int KBackgroundManager::realDesktop() +{ + int desk = m_pKwinmodule->currentDesktop(); + if (desk) desk--; + return desk; +} + + +int KBackgroundManager::effectiveDesktop() +{ + return m_bCommon ? 0 : realDesktop(); +} + + +/* + * Number of desktops changed + */ +void KBackgroundManager::slotChangeNumberOfDesktops(int num) +{ + if (m_Renderer.size() == (unsigned) num) + return; + + if (m_Renderer.size() > (unsigned) num) + { + for (unsigned i=num; iisActive()) + m_Renderer[i]->stop(); + delete m_Renderer[i]; + removeCache(i); + } + for (unsigned i=num; ipixmap = 0L; + m_Cache[i]->hash = 0; + m_Cache[i]->exp_from = -1; + m_Renderer.insert(i, new KVirtualBGRenderer(i,m_pConfig)); + connect(m_Renderer[i], SIGNAL(imageDone(int)), SLOT(slotImageDone(int))); + m_Renderer[i]->enableTiling( true ); // optimize + } + } +} + +/* + * Call this when the desktop has been changed. + * Desk is in KWin convention: [1..desks], instead of [0..desks-1]. + * 0 repaints the current desktop. + */ +void KBackgroundManager::slotChangeDesktop(int desk) +{ + if (desk == 0) + desk = realDesktop(); + else + desk--; + + // Lazy initialisation of # of desktops + if ((unsigned) desk >= m_Renderer.size()) + slotChangeNumberOfDesktops( m_pKwinmodule->numberOfDesktops() ); + + int edesk = effectiveDesktop(); + m_Serial++; + + // If the background is the same: do nothing + if (m_Hash == m_Renderer[edesk]->hash()) + { + exportBackground(m_Current, desk); + return; + } + m_Renderer[edesk]->stop(); + m_Renderer[edesk]->cleanup(); + + // If we have the background already rendered: set it + for (unsigned i=0; ipixmap) + continue; + if (m_Cache[i]->hash != m_Renderer[edesk]->hash()) + continue; +// kdDebug() << "slotChangeDesktop i=" << i << endl; + setPixmap(m_Cache[i]->pixmap, m_Cache[i]->hash, i); + m_Cache[i]->atime = m_Serial; + exportBackground(i, desk); + return; + } + + // Do we have this or an identical config already running? + for (unsigned i=0; ihash() == m_Renderer[edesk]->hash()) && + (m_Renderer[i]->isActive())) + return; + } + + renderBackground(edesk); +} + + +/* + * Share a desktop pixmap. + */ +void KBackgroundManager::exportBackground(int pixmap, int desk) +{ + if (!m_bExport || (m_Cache[desk]->exp_from == pixmap)) + return; + + m_Cache[desk]->exp_from = pixmap; + m_pPixmapServer->add(KRootPixmap::pixmapName(desk+1), + m_Cache[pixmap]->pixmap); + KIPC::sendMessageAll(KIPC::BackgroundChanged, desk+1); +} + + +/* + * Paint the pixmap to the root window. + */ +void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk) +{ + if (m_pDesktop) + { + QScrollView* sv = dynamic_cast( m_pDesktop ); + if ( sv ) { + // Qt eats repaint events in this case :-(( + sv->viewport()->update(); + } + m_pDesktop->setErasePixmap(*pm); + m_pDesktop->repaint(); + static bool root_cleared = false; + if( !root_cleared ) + { // clear the root window pixmap set by kdm + root_cleared = true; + QTimer::singleShot( 0, this, SLOT( clearRoot())); + // but make the pixmap visible until m_pDesktop is visible + QApplication::desktop()->screen()->setErasePixmap(*pm); + QApplication::desktop()->screen()->erase(); + } + } + else + { + QApplication::desktop()->screen()->setErasePixmap(*pm); + QApplication::desktop()->screen()->erase(); + } + + // and export it via Esetroot-style for gnome/GTK apps to share in the pretties + Pixmap bgPm = pm->handle(); // fetch the actual X handle to it + //kdDebug() << "Esetroot compat: setting pixmap to " << bgPm << endl; + + // don't set the ESETROOT_PMAP_ID property - that would result in possible XKillClient() + // done on kdesktop + + XChangeProperty(qt_xdisplay(), qt_xrootwin(), prop_root, XA_PIXMAP, 32, PropModeReplace, + (unsigned char *) &bgPm, 1); + m_xrootpmap = bgPm; + + m_Hash = hash; + m_Current = desk; +} + +void KBackgroundManager::clearRoot() +{ + QApplication::desktop()->screen()->setErasePixmap( QPixmap()); + QApplication::desktop()->screen()->erase(); +} + +/* + * Start the render of a desktop background. + */ +void KBackgroundManager::renderBackground(int desk) +{ + KVirtualBGRenderer *r = m_Renderer[desk]; + if (r->isActive()) + { + kdDebug() << "renderer " << desk << " already active" << endl; + return; + } + + r->start(); +} + + +/* + * This slot is called when a renderer is done. + */ +void KBackgroundManager::slotImageDone(int desk) +{ + KPixmap *pm = new KPixmap(); + KVirtualBGRenderer *r = m_Renderer[desk]; + bool do_cleanup = true; + + *pm = r->pixmap(); + // If current: paint it + bool current = (r->hash() == m_Renderer[effectiveDesktop()]->hash()); + if (current) + { + setPixmap(pm, r->hash(), desk); + if (!m_bBgInitDone) + { + m_bBgInitDone = true; + emit initDone(); + QTimer::singleShot( 30000, this, SLOT( saveImages())); + do_cleanup = false; + } + } + if (m_bExport || !m_bCommon) + addCache(pm, r->hash(), desk); + else + delete pm; + + if (current) + exportBackground(desk, realDesktop()); + + if( do_cleanup ) + { + r->saveCacheFile(); + r->cleanup(); + } +} + + +void KBackgroundManager::saveImages() +{ + for (unsigned i=0; isaveCacheFile(); + m_Renderer[i]->cleanup(); + } +} + +/* + * Size in bytes of a QPixmap. For use in the pixmap cache. + */ +int KBackgroundManager::pixmapSize(QPixmap *pm) +{ + return (pm->width() * pm->height()) * ((pm->depth() + 7) / 8); +} + + +/* + * Total size of the pixmap cache. + */ +int KBackgroundManager::cacheSize() +{ + int total = 0; + for (unsigned i=0; ipixmap) + total += pixmapSize(m_Cache[i]->pixmap); + } + return total; +} + + +/* + * Remove an entry from the pixmap cache. + */ +void KBackgroundManager::removeCache(int desk) +{ + if (m_bExport) + m_pPixmapServer->remove(KRootPixmap::pixmapName(desk+1)); + else + delete m_Cache[desk]->pixmap; + m_Cache[desk]->pixmap = 0L; + m_Cache[desk]->hash = 0; + m_Cache[desk]->exp_from = -1; + m_Cache[desk]->atime = 0; + + // Remove cache entries pointing to the removed entry + for (unsigned i=0; iexp_from == desk) + { + assert(m_bExport); + m_Cache[i]->exp_from = -1; + m_pPixmapServer->remove(KRootPixmap::pixmapName(i+1)); + } + } +} + + +/* + * Try to free up to size bytes from the cache. + */ +bool KBackgroundManager::freeCache(int size) +{ + if (m_bExport || !m_bLimitCache) + return true; + + // If it doesn't fit at all, return now. + if (size > m_CacheLimit) + return false; + + // If cache is too full, purge it (LRU) + while (size+cacheSize() > m_CacheLimit) + { + int j, min; + min = m_Serial+1; j = 0; + for (unsigned i=0; ipixmap && (m_Cache[i]->atime < min)) + { + min = m_Cache[i]->atime; + j = i; + } + } + removeCache(j); + } + return true; +} + + +/* + * Try to add a pixmap to the pixmap cache. We don't use QPixmapCache here + * because if we're exporting pixmaps, this needs special care. + */ +void KBackgroundManager::addCache(KPixmap *pm, int hash, int desk) +{ + if (m_Cache[desk]->pixmap) + removeCache(desk); + + if (m_bLimitCache && !m_bExport && !freeCache(pixmapSize(pm))) + { + // pixmap does not fit in cache + delete pm; + return; + } + + m_Cache[desk]->pixmap = pm; + m_Cache[desk]->hash = hash; + m_Cache[desk]->atime = m_Serial; + m_Cache[desk]->exp_from = -1; + exportBackground(desk, desk); +} + +/* + * Called every minute to check if we need to rerun a background program. + * or change a wallpaper. + */ +void KBackgroundManager::slotTimeout() +{ + QMemArray running(m_Renderer.size()); + running.fill(0); + + int NumDesks = m_Renderer.size(); + if (m_bCommon) + NumDesks = 1; + + int edesk = effectiveDesktop(); + + for (int i=0; ineedProgramUpdate()) + { + r->programUpdate(); + change = true; + } + + if (r->needWallpaperChange()) + { + r->changeWallpaper(); + change = true; + } + + if (change && (i == edesk)) + { + running[i] = r->hash(); + r->start(); + } + } +} + +// Return a valid desk number. +int KBackgroundManager::validateDesk(int desk) +{ + if (desk > (int)m_Renderer.size()) + slotChangeNumberOfDesktops( m_pKwinmodule->numberOfDesktops() ); + + if ( (desk <= 0) || (desk > (int)m_Renderer.size()) ) + return realDesktop(); + + return desk - 1; +} + +// DCOP exported +// Return current wallpaper for specified desk. +// 0 is for the current visible desktop. +QString KBackgroundManager::currentWallpaper(int desk) +{ + //TODO Is the behaviour of this function appropriate for multiple screens? + KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->currentWallpaper(); +} + +// DCOP exported +void KBackgroundManager::changeWallpaper() +{ + KVirtualBGRenderer *r = m_Renderer[effectiveDesktop()]; + + r->changeWallpaper(); + slotChangeDesktop(0); +} + +// DCOP exported +void KBackgroundManager::setExport(int _export) +{ + kdDebug() << "KBackgroundManager enabling exports.\n"; + applyExport(_export); + slotChangeDesktop(0); +} + +// DCOP exported +void KBackgroundManager::setCommon(int common) +{ + applyCommon(common); + KDesktopSettings::setCommonDesktop( m_bCommon ); + KDesktopSettings::writeConfig(); + slotChangeDesktop(0); +} + +// DCOP exported +void KBackgroundManager::setWallpaper(QString wallpaper, int mode) +{ + if (mode < 0 || mode >= KBackgroundSettings::lastWallpaperMode) { + kdDebug() << "Invalid background mode " << mode << " passed to " << k_funcinfo << "\n"; + return; + } + + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { + KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + r->setWallpaperMode(mode); + r->setMultiWallpaperMode(KBackgroundSettings::NoMulti); + r->setWallpaper(wallpaper); + r->writeSettings(); + } + slotChangeDesktop(0); +} + +void KBackgroundManager::setWallpaper(QString wallpaper) +{ + //TODO Is the behaviour of this function appropriate for multiple screens? + KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(0); + int mode = r->wallpaperMode(); + if (mode == KBackgroundSettings::NoWallpaper) + mode = KBackgroundSettings::Tiled; + setWallpaper(wallpaper, mode); +} + +// DCOP exported +// Returns the filenames of all wallpaper entries for specified desk +// 0 is for current visible desktop. +QStringList KBackgroundManager::wallpaperFiles(int desk) +{ + //TODO Is the behaviour of this function appropriate for multiple screens? + KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->wallpaperFiles(); +} + +// DCOP exported +// Returns the list of wallpaper entries (viewable in background slide +// show window) for specified desk. 0 is for current visible desktop. +QStringList KBackgroundManager::wallpaperList(int desk) +{ + //TODO Is the behaviour of this function appropriate for multiple screens? + KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0);; + + return r->wallpaperList(); +} + +// DCOP exported +void KBackgroundManager::setCache( int bLimit, int size ) +{ + applyCache( bLimit, size*1024 ); + KDesktopSettings::setLimitCache( (bool) bLimit ); + KDesktopSettings::setCacheSize( size ); + KDesktopSettings::writeConfig(); +} + +// DCOP exported +void KBackgroundManager::setWallpaper(int desk, QString wallpaper, int mode) +{ + if (mode < 0 || mode >= KBackgroundSettings::lastWallpaperMode) { + kdDebug() << "Invalid background mode " << mode << " passed to " << k_funcinfo << "\n"; + return; + } + + int sdesk = validateDesk(desk); + + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[sdesk]->numRenderers(); ++i) + { + KBackgroundRenderer *r = m_Renderer[sdesk]->renderer(i); + + setCommon(false); // Force each desktop to have it's own wallpaper + + r->stop(); + r->setWallpaperMode(mode); + r->setMultiWallpaperMode(KBackgroundSettings::NoMulti); + r->setWallpaper(wallpaper); + r->writeSettings(); + } + slotChangeDesktop(sdesk); +} + +void KBackgroundManager::repaintBackground() +{ + if (m_pDesktop) + m_pDesktop->repaint(); + else + QApplication::desktop()->screen()->erase(); +} + +void KBackgroundManager::desktopResized() +{ + for (unsigned i=0; iisActive()) + r->stop(); + removeCache(i); + // make the renderer update its desktop size + r->desktopResized(); + } + m_Hash = 0; + if( m_pDesktop ) + m_pDesktop->resize( kapp->desktop()->size()); + // Repaint desktop + slotChangeDesktop(0); +} + +// DCOP exported +void KBackgroundManager::setColor(const QColor & c, bool isColorA) +{ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { + KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + + if (isColorA) + r->setColorA(c); + else + r->setColorB(c); + + int mode = r->backgroundMode(); + if (mode == KBackgroundSettings::Program) + mode = KBackgroundSettings::Flat; + + if (!isColorA && (mode == KBackgroundSettings::Flat)) + mode = KBackgroundSettings::VerticalGradient; + r->setBackgroundMode(mode); + + r->writeSettings(); + } + slotChangeDesktop(0); +} + +void KBackgroundManager::setBackgroundEnabled( const bool enable ) +{ + if (m_bEnabled == enable) + return; + + m_bEnabled= enable; + + int NumDesks = m_Renderer.size(); + if (m_bCommon) + NumDesks = 1; + + for (int i=0; isetEnabled(enable); + } + slotChangeDesktop(0); +} + +#include "bgmanager.moc" diff --git a/kdesktop/bgmanager.h b/kdesktop/bgmanager.h new file mode 100644 index 000000000..e029cf6cd --- /dev/null +++ b/kdesktop/bgmanager.h @@ -0,0 +1,126 @@ +/* vi: ts=8 sts=4 sw=4 + * + * This file is part of the KDE project, module kdesktop. + * Copyright (C) 1999,2000 Geert Jansen + * + * You can Freely distribute this program under the GNU General Public + * License. See the file "COPYING" for the exact licensing terms. + */ + +#ifndef __BGManager_h_Included__ +#define __BGManager_h_Included__ + +#include +#include + +#include + +class KConfig; +class QTimer; +class QPixmap; +class KPopupMenu; +class KWinModule; +class KPixmap; +class KVirtualBGRenderer; +class KPixmapServer; + +/** + * Internal struct for KBackgroundManager. + */ +struct KBackgroundCacheEntry +{ + int hash; + int atime; + int exp_from; + KPixmap *pixmap; +}; + + +/** + * Background manager for KDE. This class is to be used in kdesktop. Usage is + * very simple: instantiate this class once and the desktop background will + * be painted automatically from now on. + * + * The background manager also has a DCOP interface to remotely control its + * operation. See KBackgroundIface.h for details. + */ + +class KBackgroundManager + : public QObject, + virtual public KBackgroundIface +{ + Q_OBJECT + +public: + KBackgroundManager(QWidget *desktop, KWinModule* kwinModule); + ~KBackgroundManager(); + + void configure(); + void setCommon(int); + bool isCommon() { return m_bCommon; }; + void setExport(int); + bool isExport() { return m_bExport; }; + void setCache(int, int); + void setWallpaper(int desk, QString wallpaper, int mode); + void setWallpaper(QString wallpaper, int mode); + void setWallpaper(QString wallpaper); + void changeWallpaper(); + QString currentWallpaper(int desk); + void setColor(const QColor & c, bool isColorA = true); + void setBackgroundEnabled(const bool enable); + QStringList wallpaperList(int desk); + QStringList wallpaperFiles(int desk); + +signals: + void initDone(); + +private slots: + void slotTimeout(); + void slotImageDone(int desk); + void slotChangeDesktop(int); + void slotChangeNumberOfDesktops(int); + void repaintBackground(); + void desktopResized(); + void clearRoot(); + void saveImages(); + +private: + void applyCommon(bool common); + void applyExport(bool _export); + void applyCache(bool limit, int size); + + int realDesktop(); + int effectiveDesktop(); + int validateDesk(int desk); + + void renderBackground(int desk); + void exportBackground(int pixmap, int desk); + int pixmapSize(QPixmap *pm); + int cacheSize(); + void removeCache(int desk); + bool freeCache(int size); + void addCache(KPixmap *pm, int hash, int desk); + void setPixmap(KPixmap *pm, int hash, int desk); + + bool m_bExport, m_bCommon; + bool m_bLimitCache, m_bInit; + bool m_bBgInitDone; + bool m_bEnabled; + + int m_CacheLimit; + int m_Serial, m_Hash, m_Current; + + KConfig *m_pConfig; + QWidget *m_pDesktop; + QTimer *m_pTimer; + + QPtrVector m_Renderer; + QPtrVector m_Cache; + + KWinModule *m_pKwinmodule; + KPixmapServer *m_pPixmapServer; + + unsigned long m_xrootpmap; +}; + +#endif // __BGManager_h_Included__ diff --git a/kdesktop/configure.in.in b/kdesktop/configure.in.in new file mode 100644 index 000000000..fcc161c1e --- /dev/null +++ b/kdesktop/configure.in.in @@ -0,0 +1,39 @@ +xss_save_ldflags="$LDFLAGS" +LDFLAGS="$X_LDFLAGS" + +LIB_XSS= + +AC_ARG_WITH([xscreensaver], + AC_HELP_STRING([--without-xscreensaver], [Disable XScreenSaver support (default: check)]) ) + +if test "x$with_xscreensaver" != "xno"; then + KDE_CHECK_HEADER(X11/extensions/scrnsaver.h, + [ + AC_CHECK_LIB(Xext,XScreenSaverQueryInfo, + [ + AC_DEFINE(HAVE_XSCREENSAVER, 1, [Define if you have the XScreenSaver extension]) + LIB_XSS="-lXext" + ], + [ + ld_shared_flag= + xss_save_cxxflags="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $lt_prog_compiler_pic_CXX" + KDE_CHECK_COMPILER_FLAG(shared, [ld_shared_flag="-shared"]) + AC_CHECK_LIB(Xss,XScreenSaverQueryInfo, + [ + AC_DEFINE(HAVE_XSCREENSAVER, 1, [Define if you have the XScreenSaver extension]) + LIB_XSS="-lXss" + ], + [], + [ $ld_shared_flag $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS ]) + CXXFLAGS="$xss_save_cxxflags" + ], + [ $X_PRE_LIBS -lX11 $X_EXTRA_LIBS ]) + ], [], + [ + #include + ] ) +fi + +AC_SUBST(LIB_XSS) +LDFLAGS="$xss_save_ldflags" diff --git a/kdesktop/desktop.cc b/kdesktop/desktop.cc new file mode 100644 index 000000000..6e2b1e9c0 --- /dev/null +++ b/kdesktop/desktop.cc @@ -0,0 +1,986 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Torben Weis + + 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 "desktop.h" +#include "krootwm.h" +#include "bgmanager.h" +#include "bgsettings.h" +#include "startupid.h" +#include "kdiconview.h" +#include "minicli.h" +#include "kdesktopsettings.h" +#include "klaunchsettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// Create the equivalent of KAccelBase::connectItem +// and then remove this include and fix reconnects in initRoot() -- ellis +//#include + +extern int kdesktop_screen_number; +extern QCString kdesktop_name, kicker_name, kwin_name; + +KRootWidget::KRootWidget() : QObject() +{ + kapp->desktop()->installEventFilter(this); + kapp->desktop()->setAcceptDrops( true ); +} + +bool KRootWidget::eventFilter ( QObject *, QEvent * e ) +{ + if (e->type() == QEvent::MouseButtonPress) + { + QMouseEvent *me = static_cast(e); + KRootWm::self()->mousePressed( me->globalPos(), me->button() ); + return true; + } + else if (e->type() == QEvent::Wheel) + { + QWheelEvent *we = static_cast(e); + emit wheelRolled(we->delta()); + return true; + } + else if ( e->type() == QEvent::DragEnter ) + { + QDragEnterEvent* de = static_cast( e ); + bool b = !KGlobal::config()->isImmutable() && !KGlobal::dirs()->isRestrictedResource( "wallpaper" ); + + bool imageURL = false; + if ( KURLDrag::canDecode( de ) ) + { + KURL::List list; + KURLDrag::decode( de, list ); + KURL url = list.first(); + KMimeType::Ptr mime = KMimeType::findByURL( url ); + if ( !KImageIO::type( url.path() ).isEmpty() || + KImageIO::isSupported( mime->name(), KImageIO::Reading ) || mime->is( "image/svg+xml" ) ) + imageURL = true; + } + + b = b && ( KColorDrag::canDecode( de ) || QImageDrag::canDecode( de ) || imageURL ); + de->accept( b ); + return true; + } + else if ( e->type() == QEvent::Drop ) + { + QDropEvent* de = static_cast( e ); + if ( KColorDrag::canDecode( de ) ) + emit colorDropEvent( de ); + else if ( QImageDrag::canDecode( de ) ) + emit imageDropEvent( de ); + else if ( KURLDrag::canDecode( de ) ) { + KURL::List list; + KURLDrag::decode( de, list ); + KURL url = list.first(); + emit newWallpaper( url ); + } + return true; + } + return false; // Don't filter. +} + +// ----------------------------------------------------------------------------- +#define DEFAULT_DELETEACTION 1 + +KDesktop::WheelDirection KDesktop::m_eWheelDirection = KDesktop::m_eDefaultWheelDirection; +const char* KDesktop::m_wheelDirectionStrings[2] = { "Forward", "Reverse" }; + +KDesktop::KDesktop( bool x_root_hack, bool wait_for_kded ) : + DCOPObject( "KDesktopIface" ), + QWidget( 0L, "desktop", WResizeNoErase | ( x_root_hack ? (WStyle_Customize | WStyle_NoBorder) : 0) ), + // those two WStyle_ break kdesktop when the root-hack isn't used (no Dnd) + startup_id( NULL ), m_waitForKicker(0) +{ + m_bWaitForKded = wait_for_kded; + m_miniCli = 0; // created on demand + keys = 0; // created later + KGlobal::locale()->insertCatalogue("kdesktop"); + KGlobal::locale()->insertCatalogue("libkonq"); // needed for apps using libkonq + KGlobal::locale()->insertCatalogue("libdmctl"); + + setCaption( "KDE Desktop"); + + setAcceptDrops(true); // WStyle_Customize seems to disable that + m_pKwinmodule = new KWinModule( this ); + + kapp->dcopClient()->setNotifications(true); + kapp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(QRect, int)", + "KDesktopIface", "desktopIconsAreaChanged(QRect, int)", false); + + // Dont repaint on configuration changes during construction + m_bInit = true; + + // It's the child widget that gets the focus, not us + setFocusPolicy( NoFocus ); + + if ( x_root_hack ) + { + // this is a ugly hack to make Dnd work + // Matthias told me that it won't be necessary with kwin + // actually my first try with ICCCM (Dirk) :-) + unsigned long data[2]; + data[0] = (unsigned long) 1; + data[1] = (unsigned long) 0; // None; (Werner) + Atom wm_state = XInternAtom(qt_xdisplay(), "WM_STATE", False); + XChangeProperty(qt_xdisplay(), winId(), wm_state, wm_state, 32, + PropModeReplace, (unsigned char *)data, 2); + + } + + setGeometry( QApplication::desktop()->geometry() ); + lower(); + + connect( kapp, SIGNAL( shutDown() ), + this, SLOT( slotShutdown() ) ); + + connect(kapp, SIGNAL(settingsChanged(int)), + this, SLOT(slotSettingsChanged(int))); + kapp->addKipcEventMask(KIPC::SettingsChanged); + + kapp->addKipcEventMask(KIPC::IconChanged); + connect(kapp, SIGNAL(iconChanged(int)), this, SLOT(slotIconChanged(int))); + + connect(KSycoca::self(), SIGNAL(databaseChanged()), + this, SLOT(slotDatabaseChanged())); + + m_pIconView = 0; + m_pRootWidget = 0; + bgMgr = 0; + initRoot(); + + QTimer::singleShot(0, this, SLOT( slotStart() )); + +#if (QT_VERSION-0 >= 0x030200) // XRANDR support + connect( kapp->desktop(), SIGNAL( resized( int )), SLOT( desktopResized())); +#endif +} + +void +KDesktop::initRoot() +{ + Display *dpy = qt_xdisplay(); + Window root = RootWindow(dpy, kdesktop_screen_number); + XDefineCursor(dpy, root, cursor().handle()); + + m_bDesktopEnabled = KDesktopSettings::desktopEnabled(); + if ( !m_bDesktopEnabled && !m_pRootWidget ) + { + hide(); + delete bgMgr; + bgMgr = 0; + if ( m_pIconView ) + m_pIconView->saveIconPositions(); + delete m_pIconView; + m_pIconView = 0; + + { // trigger creation of QToolTipManager, it does XSelectInput() on the root window + QWidget w; + QToolTip::add( &w, "foo" ); + } + // NOTE: If mouse clicks stop working again, it's most probably something doing XSelectInput() + // on the root window after this, and setting it to some fixed value instead of adding its mask. + XWindowAttributes attrs; + XGetWindowAttributes(dpy, root, &attrs); + XSelectInput(dpy, root, attrs.your_event_mask | ButtonPressMask); + + m_pRootWidget = new KRootWidget; + connect(m_pRootWidget, SIGNAL(wheelRolled(int)), this, SLOT(slotSwitchDesktops(int))); + connect(m_pRootWidget, SIGNAL(colorDropEvent(QDropEvent*)), this, SLOT(handleColorDropEvent(QDropEvent*)) ); + connect(m_pRootWidget, SIGNAL(imageDropEvent(QDropEvent*)), this, SLOT(handleImageDropEvent(QDropEvent*)) ); + connect(m_pRootWidget, SIGNAL(newWallpaper(const KURL&)), this, 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, SIGNAL( initDone()), SLOT( backgroundInitDone())); + if (!m_bInit) + { + delete KRootWm::self(); + KRootWm* krootwm = new KRootWm( this ); // handler for root menu (used by kdesktop on RMB click) + keys->setSlot("Lock Session", krootwm, SLOT(slotLock())); + keys->updateConnections(); + } + } + else if (m_bDesktopEnabled && !m_pIconView) + { + delete bgMgr; + bgMgr = 0; + delete m_pRootWidget; + m_pRootWidget = 0; + m_pIconView = new KDIconView( this, 0 ); + connect( m_pIconView, SIGNAL( imageDropEvent( QDropEvent * ) ), + this, SLOT( handleImageDropEvent( QDropEvent * ) ) ); + connect( m_pIconView, SIGNAL( colorDropEvent( QDropEvent * ) ), + this, SLOT( handleColorDropEvent( QDropEvent * ) ) ); + connect( m_pIconView, SIGNAL( newWallpaper( const KURL & ) ), + this, SLOT( slotNewWallpaper( const KURL & ) ) ); + connect( m_pIconView, SIGNAL( wheelRolled( int ) ), + this, SLOT( slotSwitchDesktops( int ) ) ); + + // All the QScrollView/QWidget-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( QScrollView::AlwaysOff ); + m_pIconView->setHScrollBarMode( QScrollView::AlwaysOff ); + m_pIconView->setDragAutoScroll( false ); + m_pIconView->setFrameStyle( QFrame::NoFrame ); + m_pIconView->viewport()->setBackgroundMode( X11ParentRelative ); + m_pIconView->setFocusPolicy( StrongFocus ); + m_pIconView->viewport()->setFocusPolicy( StrongFocus ); + m_pIconView->setGeometry( geometry() ); + m_pIconView->show(); + + // Geert Jansen: backgroundmanager belongs here + // TODO tell KBackgroundManager if we change widget() + bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule ); + bgMgr->setExport(1); + connect( bgMgr, SIGNAL( initDone()), SLOT( backgroundInitDone())); + + // make sure it is initialized before we first call updateWorkArea() + m_pIconView->initConfig( m_bInit ); + + // set the size of the area for desktop icons placement + { + QByteArray data, result; + QDataStream arg(data, IO_WriteOnly); + arg << kdesktop_screen_number; + QCString replyType; + QRect area; + + if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + data, replyType, result, false, 2000) ) + { + QDataStream res(result, IO_ReadOnly); + res >> area; + + m_pIconView->updateWorkArea(area); + } + else + if ( m_bInit ) + { + // 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 QTimer(this); + connect(m_waitForKicker, SIGNAL(timeout()), this, SLOT(slotNoKicker())); + m_waitForKicker->start(15000, true); + } + else // we are not called from the ctor, so kicker should already run + { + area = kwinModule()->workArea(kwinModule()->currentDesktop()); + m_pIconView->updateWorkArea(area); + } + } + + if (!m_bInit) + { + m_pIconView->start(); + delete KRootWm::self(); + KRootWm* krootwm = new KRootWm( this ); // handler for root menu (used by kdesktop on RMB click) + keys->setSlot("Lock Session", krootwm, SLOT(slotLock())); + keys->updateConnections(); + } + } else { + DCOPRef r( "ksmserver", "ksmserver" ); + r.send( "resumeStartup", QCString( "kdesktop" )); + } + + KWin::setType( winId(), NET::Desktop ); + KWin::setState( winId(), NET::SkipPager ); + KWin::setOnAllDesktops( winId(), true ); +} + +void KDesktop::slotNoKicker() +{ + kdDebug(1204) << "KDesktop::slotNoKicker ... kicker did not respond" << endl; + // up till now, we got no desktopIconsArea from kicker - probably + // it's not running, so use the area from KWinModule + m_pIconView->updateWorkArea(kwinModule()->workArea(kwinModule()->currentDesktop())); +} + +void +KDesktop::backgroundInitDone() +{ + //kdDebug(1204) << "KDesktop::backgroundInitDone" << endl; + // avoid flicker + if (m_bDesktopEnabled) + { + const QPixmap *bg = QApplication::desktop()->screen()->backgroundPixmap(); + if ( bg ) + m_pIconView->setErasePixmap( *bg ); + + show(); + kapp->sendPostedEvents(); + } + + DCOPRef r( "ksmserver", "ksmserver" ); + r.send( "resumeStartup", QCString( "kdesktop" )); +} + +void +KDesktop::slotStart() +{ + //kdDebug(1204) << "KDesktop::slotStart" << endl; + if (!m_bInit) return; + + // In case we started without database + KImageIO::registerFormats(); + + initConfig(); + +// if (m_bDesktopEnabled) +// { +// // We need to be visible in order to insert icons, even if the background isn't ready yet... + +// show(); +// } + + // Now we may react to configuration changes + m_bInit = false; + + if (m_pIconView) + m_pIconView->start(); + + // Global keys + keys = new KGlobalAccel( this ); + (void) new KRootWm( this ); + +#include "kdesktopbindings.cpp" + + keys->readSettings(); + keys->updateConnections(); + + connect(kapp, SIGNAL(appearanceChanged()), SLOT(slotConfigure())); + + QTimer::singleShot(300, this, SLOT( slotUpAndRunning() )); +} + +void +KDesktop::runAutoStart() +{ + // now let's execute all the stuff in the autostart folder. + // the stuff will actually be really executed when the event loop is + // entered, since KRun internally uses a QTimer + QDir dir( KGlobalSettings::autostartPath() ); + QStringList entries = dir.entryList( QDir::Files ); + QStringList::Iterator it = entries.begin(); + QStringList::Iterator end = entries.end(); + for (; it != end; ++it ) + { + // Don't execute backup files + if ( (*it).right(1) != "~" && (*it).right(4) != ".bak" && + ( (*it)[0] != '%' || (*it).right(1) != "%" ) && + ( (*it)[0] != '#' || (*it).right(1) != "#" ) ) + { + KURL url; + url.setPath( dir.absPath() + '/' + (*it) ); + (void) new KRun( url, 0, true ); + } + } +} + +// ----------------------------------------------------------------------------- + +KDesktop::~KDesktop() +{ + delete m_miniCli; + m_miniCli = 0; // see #120382 + delete bgMgr; + bgMgr = 0; + delete startup_id; +} + +// ----------------------------------------------------------------------------- + +void KDesktop::initConfig() +{ + if (m_pIconView) + m_pIconView->initConfig( m_bInit ); + + if ( keys ) + { + keys->readSettings(); + keys->updateConnections(); + } + + KLaunchSettings::self()->readConfig(); + if( !KLaunchSettings::busyCursor() ) + { + delete startup_id; + startup_id = NULL; + } + else + { + if( startup_id == NULL ) + startup_id = new StartupId; + startup_id->configure(); + } + + set_vroot = KDesktopSettings::setVRoot(); + slotSetVRoot(); // start timer + + m_bWheelSwitchesWorkspace = KDesktopSettings::wheelSwitchesWorkspace(); + + const char* forward_string = m_wheelDirectionStrings[Forward]; + m_eWheelDirection = + (KDesktopSettings::wheelDirection() == forward_string) ? Forward : Reverse; +} + +// ----------------------------------------------------------------------------- + +void KDesktop::slotExecuteCommand() +{ + // this function needs to be duplicated since it appears that one + // cannot have a 'slot' be a DCOP method. if this changes in the + // future, then 'slotExecuteCommand' and 'popupExecuteCommand' can + // merge into one slot. + popupExecuteCommand(); +} + +/* + Shows minicli + */ +void KDesktop::popupExecuteCommand() +{ + popupExecuteCommand(""); +} + +void KDesktop::popupExecuteCommand(const QString& command) +{ + if (m_bInit) + return; + + if (!kapp->authorize("run_command")) + return; + + // Created on demand + if ( !m_miniCli ) + { + m_miniCli = new Minicli( this ); + m_miniCli->adjustSize(); // for the centering below + } + + if (!command.isEmpty()) + m_miniCli->setCommand(command); + + // Move minicli to the current desktop + NETWinInfo info( qt_xdisplay(), m_miniCli->winId(), qt_xrootwin(), NET::WMDesktop ); + int currentDesktop = kwinModule()->currentDesktop(); + if ( info.desktop() != currentDesktop ) + info.setDesktop( currentDesktop ); + + if ( m_miniCli->isVisible() ) { + KWin::forceActiveWindow( m_miniCli->winId() ); + } else { + QRect rect = KGlobalSettings::desktopGeometry(QCursor::pos()); + m_miniCli->move(rect.x() + (rect.width() - m_miniCli->width())/2, + rect.y() + (rect.height() - m_miniCli->height())/2); + m_miniCli->show(); // non-modal + } +} + +void KDesktop::slotSwitchUser() +{ + KRootWm::self()->slotSwitchUser(); +} + +void KDesktop::slotShowWindowList() +{ + KRootWm::self()->slotWindowList(); +} + +void KDesktop::slotShowTaskManager() +{ + //kdDebug(1204) << "Launching KSysGuard..." << endl; + KProcess* p = new KProcess; + Q_CHECK_PTR(p); + + *p << "ksysguard"; + *p << "--showprocesses"; + + p->start(KProcess::DontCare); + + delete p; +} + +// ----------------------------------------------------------------------------- + +void KDesktop::rearrangeIcons() +{ + if (m_pIconView) + m_pIconView->rearrangeIcons(); +} + +void KDesktop::lineupIcons() +{ + if (m_pIconView) + m_pIconView->lineupIcons(); +} + +void KDesktop::selectAll() +{ + if (m_pIconView) + m_pIconView->selectAll( true ); +} + +void KDesktop::unselectAll() +{ + if (m_pIconView) + m_pIconView->selectAll( false ); +} + +QStringList KDesktop::selectedURLs() +{ + if (m_pIconView) + return m_pIconView->selectedURLs(); + return QStringList(); +} + +void KDesktop::refreshIcons() +{ + if (m_pIconView) + m_pIconView->refreshIcons(); +} + +KActionCollection * KDesktop::actionCollection() +{ + if (!m_pIconView) + return 0; + return m_pIconView->actionCollection(); +} + +KURL KDesktop::url() const +{ + if (m_pIconView) + return m_pIconView->url(); + return KURL(); +} + +// ----------------------------------------------------------------------------- + +void KDesktop::slotConfigure() +{ + configure(); +} + +void KDesktop::configure() +{ + // re-read configuration and apply it + KGlobal::config()->reparseConfiguration(); + KDesktopSettings::self()->readConfig(); + + // If we have done start() already, then re-configure. + // Otherwise, start() will call initConfig anyway + if (!m_bInit) + { + initRoot(); + initConfig(); + KRootWm::self()->initConfig(); + } + + if (keys) + { + keys->readSettings(); + keys->updateConnections(); + } +} + +void KDesktop::slotSettingsChanged(int category) +{ + //kdDebug(1204) << "KDesktop::slotSettingsChanged" << endl; + if (category == KApplication::SETTINGS_PATHS) + { + kdDebug(1204) << "KDesktop::slotSettingsChanged SETTINGS_PATHS" << endl; + if (m_pIconView) + m_pIconView->recheckDesktopURL(); + } + else if (category == KApplication::SETTINGS_SHORTCUTS) + { + kdDebug(1204) << "KDesktop::slotSettingsChanged SETTINGS_SHORTCUTS" << endl; + keys->readSettings(); + keys->updateConnections(); + } +} + +void KDesktop::slotIconChanged(int group) +{ + if ( group == KIcon::Desktop ) + { + kdDebug(1204) << "KDesktop::slotIconChanged" << endl; + refresh(); + } +} + +void KDesktop::slotDatabaseChanged() +{ + //kdDebug(1204) << "KDesktop::slotDatabaseChanged" << endl; + if (m_bInit) // kded is done, now we can "start" for real + slotStart(); + if (m_pIconView && KSycoca::isChanged("mimetypes")) + m_pIconView->refreshMimeTypes(); +} + +void KDesktop::refresh() +{ + // George Staikos 3/14/01 + // This bit will just refresh the desktop and icons. Now I have code + // in KWin to do a complete refresh so this isn't really needed. + // I'll leave it in here incase the plan is changed again +#if 0 + m_bNeedRepaint |= 1; + updateWorkArea(); +#endif + kapp->dcopClient()->send( kwin_name, "", "refresh()", ""); + refreshIcons(); +} + +// ----------------------------------------------------------------------------- + +void KDesktop::slotSetVRoot() +{ + if (!m_pIconView) + return; + + if (KWin::windowInfo(winId()).mappingState() == NET::Withdrawn) { + QTimer::singleShot(100, this, SLOT(slotSetVRoot())); + return; + } + + unsigned long rw = RootWindowOfScreen(ScreenOfDisplay(qt_xdisplay(), qt_xscreen())); + unsigned long vroot_data[1] = { m_pIconView->viewport()->winId() }; + static Atom vroot = XInternAtom(qt_xdisplay(), "__SWM_VROOT", False); + + Window rootReturn, parentReturn, *children; + unsigned int numChildren; + Window top = winId(); + while (1) { + /*int ret = */XQueryTree(qt_xdisplay(), top , &rootReturn, &parentReturn, + &children, &numChildren); + if (children) + XFree((char *)children); + if (parentReturn == rw) { + break; + } else + top = parentReturn; + } + if ( set_vroot ) + XChangeProperty(qt_xdisplay(), top, vroot, XA_WINDOW, 32, + PropModeReplace, (unsigned char *)vroot_data, 1); + else + XDeleteProperty (qt_xdisplay(), top, vroot); +} + +// ----------------------------------------------------------------------------- + +void KDesktop::slotShutdown() +{ + if ( m_pIconView ) + m_pIconView->saveIconPositions(); + if ( m_miniCli ) + m_miniCli->saveConfig(); +} + +// don't hide when someone presses Alt-F4 on us +void KDesktop::closeEvent(QCloseEvent *e) +{ + e->ignore(); +} + +void KDesktop::desktopIconsAreaChanged(const QRect &area, int screen) +{ + // hurra! kicker is alive + if ( m_waitForKicker ) m_waitForKicker->stop(); + + // -2: all screens + // -1: primary screen + // else: screen number + + if (screen <= -2) + screen = kdesktop_screen_number; + else if (screen == -1) + screen = kapp->desktop()->primaryScreen(); + + // This is pretty broken, mixes Xinerama and non-Xinerama multihead + // and generally doesn't seem to be required anyway => ignore screen. + if ( /*(screen == kdesktop_screen_number) &&*/ m_pIconView ) + m_pIconView->updateWorkArea(area); +} + +void KDesktop::slotSwitchDesktops(int delta) +{ + if(m_bWheelSwitchesWorkspace && KWin::numberOfDesktops() > 1) + { + int newDesk, curDesk = KWin::currentDesktop(); + + if( (delta < 0 && m_eWheelDirection == Forward) || (delta > 0 && m_eWheelDirection == Reverse) ) + newDesk = curDesk % KWin::numberOfDesktops() + 1; + else + newDesk = ( KWin::numberOfDesktops() + curDesk - 2 ) % KWin::numberOfDesktops() + 1; + + KWin::setCurrentDesktop( newDesk ); + } +} + +void KDesktop::handleColorDropEvent(QDropEvent * e) +{ + KPopupMenu popup; + popup.insertItem(SmallIconSet("colors"),i18n("Set as Primary Background Color"), 1); + popup.insertItem(SmallIconSet("colors"),i18n("Set as Secondary Background Color"), 2); + int result = popup.exec(e->pos()); + + QColor c; + KColorDrag::decode(e, c); + switch (result) { + case 1: bgMgr->setColor(c, true); break; + case 2: bgMgr->setColor(c, false); break; + default: return; + } + bgMgr->setWallpaper(0,0); +} + +void KDesktop::handleImageDropEvent(QDropEvent * e) +{ + KPopupMenu popup; + if ( m_pIconView ) + popup.insertItem(SmallIconSet("filesave"),i18n("&Save to Desktop..."), 1); + if ( ( m_pIconView && m_pIconView->maySetWallpaper() ) || m_pRootWidget ) + popup.insertItem(SmallIconSet("background"),i18n("Set as &Wallpaper"), 2); + popup.insertSeparator(); + popup.insertItem(SmallIconSet("cancel"), i18n("&Cancel")); + int result = popup.exec(e->pos()); + + if (result == 1) + { + bool ok = true; + QString filename = KInputDialog::getText(QString::null, i18n("Enter a name for the image below:"), QString::null, &ok, m_pIconView); + + if (!ok) + { + return; + } + + if (filename.isEmpty()) + { + filename = i18n("image.png"); + } + else if (filename.right(4).lower() != ".png") + { + filename += ".png"; + } + + QImage i; + QImageDrag::decode(e, i); + KTempFile tmpFile(QString::null, filename); + i.save(tmpFile.name(), "PNG"); + // We pass 0 as parent window because passing the desktop is not a good idea + KURL src; + src.setPath( tmpFile.name() ); + KURL dest( KDIconView::desktopURL() ); + dest.addPath( filename ); + KIO::NetAccess::copy( src, dest, 0 ); + tmpFile.unlink(); + } + else if (result == 2) + { + QImage i; + QImageDrag::decode(e, i); + KTempFile tmpFile(KGlobal::dirs()->saveLocation("wallpaper"), ".png"); + i.save(tmpFile.name(), "PNG"); + kdDebug(1204) << "KDesktop::contentsDropEvent " << tmpFile.name() << endl; + bgMgr->setWallpaper(tmpFile.name()); + } +} + +void KDesktop::slotNewWallpaper(const KURL &url) +{ + // This is called when a file containing an image is dropped + // (called by KonqOperations) + if ( url.isLocalFile() ) + bgMgr->setWallpaper( url.path() ); + else + { + // Figure out extension + QString fileName = url.fileName(); + QFileInfo fileInfo( fileName ); + QString ext = fileInfo.extension(); + // Store tempfile in a place where it will still be available after a reboot + KTempFile tmpFile( KGlobal::dirs()->saveLocation("wallpaper"), "." + ext ); + KURL localURL; localURL.setPath( tmpFile.name() ); + // We pass 0 as parent window because passing the desktop is not a good idea + KIO::NetAccess::file_copy( url, localURL, -1, true /*overwrite*/ ); + bgMgr->setWallpaper( localURL.path() ); + } +} + +// for dcop interface backward compatibility +void KDesktop::logout() +{ + logout( KApplication::ShutdownConfirmDefault, + KApplication::ShutdownTypeNone ); +} + +void KDesktop::logout( KApplication::ShutdownConfirm confirm, + KApplication::ShutdownType sdtype ) +{ + if( !kapp->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 " + "Ctrl+Alt+Backspace; note, however, that your current session " + "will not be saved with a forced shutdown." ) ); +} + +void KDesktop::slotLogout() +{ + logout( KApplication::ShutdownConfirmDefault, + KApplication::ShutdownTypeDefault ); +} + +void KDesktop::slotLogoutNoCnf() +{ + logout( KApplication::ShutdownConfirmNo, + KApplication::ShutdownTypeNone ); +} + +void KDesktop::slotHaltNoCnf() +{ + logout( KApplication::ShutdownConfirmNo, + KApplication::ShutdownTypeHalt ); +} + +void KDesktop::slotRebootNoCnf() +{ + logout( KApplication::ShutdownConfirmNo, + KApplication::ShutdownTypeReboot ); +} + +void KDesktop::setVRoot( bool enable ) +{ + if ( enable == set_vroot ) + return; + + set_vroot = enable; + kdDebug(1204) << "setVRoot " << enable << endl; + KDesktopSettings::setSetVRoot( set_vroot ); + KDesktopSettings::writeConfig(); + slotSetVRoot(); +} + +void KDesktop::clearCommandHistory() +{ + if ( m_miniCli ) + m_miniCli->clearHistory(); +} + +void KDesktop::setIconsEnabled( bool enable ) +{ + if ( enable == m_bDesktopEnabled ) + return; + + m_bDesktopEnabled = enable; + kdDebug(1204) << "setIcons " << enable << endl; + KDesktopSettings::setDesktopEnabled( m_bDesktopEnabled ); + KDesktopSettings::writeConfig(); + if (!enable) { + delete m_pIconView; + m_pIconView = 0; + } + configure(); +} + +void KDesktop::desktopResized() +{ + resize(kapp->desktop()->size()); + + if ( m_pIconView ) + { + // the sequence of actions is important: + // 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()); + + // get new desktopIconsArea from kicker + QByteArray data, result; + QDataStream arg(data, IO_WriteOnly); + arg << kdesktop_screen_number; + QCString replyType; + QRect area; + + if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + data, replyType, result, false, 2000) ) + { + QDataStream res(result, IO_ReadOnly); + res >> area; + } + else + area = kwinModule()->workArea(kwinModule()->currentDesktop()); + + m_pIconView->updateWorkArea(area); + m_pIconView->startDirLister(); + } +} + +void KDesktop::switchDesktops( int delta ) +{ + bool old = m_bWheelSwitchesWorkspace; + m_bWheelSwitchesWorkspace = true; + slotSwitchDesktops(delta); + m_bWheelSwitchesWorkspace = old; +} + +bool KDesktop::event(QEvent * e) +{ + if ( e->type() == QEvent::WindowDeactivate) + { + if (m_pIconView) + m_pIconView->clearSelection(); + } + return QWidget::event(e); +} + +#include "desktop.moc" diff --git a/kdesktop/desktop.h b/kdesktop/desktop.h new file mode 100644 index 000000000..0407fbe4f --- /dev/null +++ b/kdesktop/desktop.h @@ -0,0 +1,212 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Torben Weis + + 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 __desktop_h__ +#define __desktop_h__ + +#include "KDesktopIface.h" + +#include +#include + +#include // for logout parameters + +class KURL; +class QCloseEvent; +class QDropEvent; +class QPopupMenu; +class KGlobalAccel; +class KWinModule; +class KBackgroundManager; +class QTimer; +class StartupId; +class KDIconView; +class Minicli; +class KActionCollection; + +class KRootWidget : public QObject +{ + Q_OBJECT +public: + KRootWidget(); + bool eventFilter( QObject *, QEvent * e ); +signals: + void wheelRolled( int delta ); + void colorDropEvent( QDropEvent* e ); + void imageDropEvent( QDropEvent* e ); + void newWallpaper( const KURL& url ); +}; + +/** + * KDesktop is the toplevel widget that is the desktop. + * It handles the background, the screensaver and all the rest of the global stuff. + * The icon view is a child widget of KDesktop. + */ +class KDesktop : public QWidget, virtual public KDesktopIface +{ + Q_OBJECT + +public: + + enum WheelDirection { Forward = 0, Reverse }; + + KDesktop(bool x_root_hack, bool wait_for_kded ); + ~KDesktop(); + + // Implementation of the DCOP interface + virtual void rearrangeIcons(); + virtual void lineupIcons(); + virtual void selectAll(); + virtual void unselectAll(); + virtual void refreshIcons(); + virtual QStringList selectedURLs(); + + virtual void configure(); + virtual void popupExecuteCommand(); + virtual void popupExecuteCommand(const QString& content); + virtual void refresh(); + virtual void logout(); + virtual void clearCommandHistory(); + virtual void runAutoStart(); + + virtual void switchDesktops( int delta ); + + virtual void desktopIconsAreaChanged(const QRect &area, int screen); + + void logout( KApplication::ShutdownConfirm confirm, KApplication::ShutdownType sdtype ); + + KWinModule* kwinModule() const { return m_pKwinmodule; } + + // The action collection of the active widget + KActionCollection *actionCollection(); + + // The URL (for the File/New menu) + KURL url() const; + + // ## hack ## + KDIconView *iconView() const { return m_pIconView; } + +private slots: + /** Background is ready. */ + void backgroundInitDone(); + + /** Activate the desktop. */ + void slotStart(); + + /** Activate crash recovery. */ + void slotUpAndRunning(); + + /** Reconfigures */ + void slotConfigure(); + + /** Show minicli,. the KDE command line interface */ + void slotExecuteCommand(); + + /** Show taskmanager (calls KSysGuard with --showprocesses option) */ + void slotShowTaskManager(); + + void slotShowWindowList(); + + void slotSwitchUser(); + + void slotLogout(); + void slotLogoutNoCnf(); + void slotHaltNoCnf(); + void slotRebootNoCnf(); + + /** Connected to KSycoca */ + void slotDatabaseChanged(); + + void slotShutdown(); + void slotSettingsChanged(int); + void slotIconChanged(int); + + /** set the vroot atom for e.g. xsnow */ + void slotSetVRoot(); + + /** Connected to KDIconView */ + void handleImageDropEvent( QDropEvent * ); + void handleColorDropEvent( QDropEvent * ); + void slotNewWallpaper(const KURL &url); + + /** Connected to KDIconView and KRootWidget */ + void slotSwitchDesktops(int delta); + + // when there seems to be no kicker, we have to get desktopIconsArea from kwinModule + void slotNoKicker(); + +protected: + void initConfig(); + void initRoot(); + + virtual void closeEvent(QCloseEvent *e); + + virtual bool isVRoot() { return set_vroot; } + virtual void setVRoot( bool enable ); + + virtual bool isIconsEnabled() { return m_bDesktopEnabled; } + virtual void setIconsEnabled( bool enable ); + virtual bool event ( QEvent * e ); + +private slots: + void desktopResized(); + +private: + + KGlobalAccel *keys; + + KWinModule* m_pKwinmodule; + + KBackgroundManager* bgMgr; + + KDIconView *m_pIconView; + KRootWidget *m_pRootWidget; + + Minicli *m_miniCli; + + StartupId* startup_id; + bool set_vroot; + + /** Set to true until start() has been called */ + bool m_bInit; + + /** Wait for kded to finish building database? */ + bool m_bWaitForKded; + + /** Desktop enabled / disabled **/ + bool m_bDesktopEnabled; + + /** Whether or not to switch desktops when mouse wheel is rolled */ + bool m_bWheelSwitchesWorkspace; + + QTimer *m_waitForKicker; + + /** Default mouse wheel direction (Fwd means mwheel up switches to + lower desktop) + */ + static const WheelDirection m_eDefaultWheelDirection = Forward; + + /** Mouse wheel/desktop switching direction */ + static WheelDirection m_eWheelDirection; + + /** Possible values for "kdesktoprc"->"Mouse Buttons"->"WheelDirection" */ + static const char* m_wheelDirectionStrings[2]; +}; + +#endif diff --git a/kdesktop/init.cc b/kdesktop/init.cc new file mode 100644 index 000000000..c0c2502d5 --- /dev/null +++ b/kdesktop/init.cc @@ -0,0 +1,247 @@ +/* This file is part of the KDE project + Copyright (C) 1999 David Faure + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +// for multihead +extern int kdesktop_screen_number; + + +/** + * Test if a directory exists, create otherwise + * @param _name full path of the directory + * @param _showMsg show a message box if we created the dir + * @return true if the dir was just created (e.g. so that we can populate it) + */ +static bool testDir( const QString &_name ) +{ + DIR *dp; + dp = opendir( QFile::encodeName(_name) ); + if ( dp == NULL ) + { + QString m = _name; + if ( m.endsWith( "/" ) ) + m.truncate( m.length() - 1 ); + QCString path = QFile::encodeName(m); + + bool ok = ::mkdir( path, S_IRWXU ) == 0; + if ( !ok && errno == EEXIST ) { + int ret = KMessageBox::warningYesNo( 0, i18n("%1 is a file, but KDE needs it to be a directory; move it to %2.orig and create directory?").arg(m).arg(m), QString::null, i18n("Move It"), i18n("Do Not Move") ); + if ( ret == KMessageBox::Yes ) { + if ( ::rename( path, path + ".orig" ) == 0 ) { + ok = ::mkdir( path, S_IRWXU ) == 0; + } else { + // foo.orig existed already. How likely is that? + ok = false; + } + } else { + return false; + } + } + if ( !ok ) + { + KMessageBox::sorry( 0, i18n( "Could not create directory %1; check for permissions or reconfigure the desktop to use another path." ).arg( m ) ); + return false; + } + return true; + } + else // exists already + { + closedir( dp ); + return false; + } +} + +/** + * Copy a standard .directory file to a user's directory + * @param fileName destination file name + * @param dir destination directory + * @param force if false, don't copy if destination file already exists + */ +static void copyDirectoryFile(const QString &fileName, const QString& dir, bool force) +{ + if (force || !QFile::exists(dir + "/.directory")) { + QString cmd = "cp "; + cmd += KProcess::quote(locate("data", QString("kdesktop/") + fileName)); + cmd += " "; + cmd += KProcess::quote(dir+"/.directory"); + system( QFile::encodeName(cmd) ); + } +} + +static void copyFile( const QString& src, const QString& dest ) +{ + QCString cmd = "cp "; + cmd += QFile::encodeName(KProcess::quote(src)); + cmd += " "; + cmd += QFile::encodeName(KProcess::quote(dest)); + system( cmd ); +} + +static QString realDesktopPath() +{ + QString desktopPath = KGlobalSettings::desktopPath(); + if (kdesktop_screen_number != 0) { + QString dn = "Desktop"; + dn += QString::number(kdesktop_screen_number); + desktopPath.replace("Desktop", dn); + } + return desktopPath; +} + +/** + * Copy all links from DesktopLinks/ to the desktop, appropriately renamed + * (to the contents of the translated Name field) + */ +static void copyDesktopLinks() +{ + KConfig *config = kapp->config(); + config->setGroup("General"); + if (!config->readBoolEntry("CopyDesktopLinks", true)) + return; + + QStringList list = + KGlobal::dirs()->findAllResources("appdata", "DesktopLinks/*", false, true); + + QString desktopPath = realDesktopPath(); + + for (QStringList::ConstIterator it = list.begin(); it != list.end(); it++) { + KDesktopFile desk( *it ); + if (desk.readBoolEntry("Hidden")) + continue; + copyFile( *it, desktopPath ); + } +} + +/** + * @return true if this is the first time + * kdesktop is run for the current release + * WARNING : call only once !!! (second call will always return false !) + */ +static bool isNewRelease() +{ + bool bNewRelease = false; + + int versionMajor = KDesktopSettings::kDEVersionMajor(); + int versionMinor = KDesktopSettings::kDEVersionMinor(); + int versionRelease = KDesktopSettings::kDEVersionRelease(); + + if( versionMajor < KDE_VERSION_MAJOR ) + bNewRelease = true; + else if( versionMinor < KDE_VERSION_MINOR ) + bNewRelease = true; + else if( versionRelease < KDE_VERSION_RELEASE ) + bNewRelease = true; + + if( bNewRelease ) { + KDesktopSettings::setKDEVersionMajor( KDE_VERSION_MAJOR ); + KDesktopSettings::setKDEVersionMinor( KDE_VERSION_MINOR ); + KDesktopSettings::setKDEVersionRelease( KDE_VERSION_RELEASE ); + KDesktopSettings::writeConfig(); + } + + return bNewRelease; +} + +/** + * Create, if necessary, some directories in user's .kde/, + * copy default .directory files there, as well as templates files. + * Called by kdesktop on startup. + */ +void testLocalInstallation() +{ + const bool newRelease = isNewRelease(); + + const QString desktopPath = realDesktopPath(); + const bool emptyDesktop = testDir( desktopPath ); + + // Do not force copying that one (it would lose the icon positions) + copyDirectoryFile("directory.desktop", desktopPath, false); + + testDir( KGlobalSettings::autostartPath() ); + // we force the copying in case of a new release, to install new translations.... + copyDirectoryFile("directory.autostart", KGlobalSettings::autostartPath(), newRelease); + + if (emptyDesktop) + copyDesktopLinks(); + + // Take care of creating or updating trash.desktop + const QString trashDir = KGlobal::dirs()->localxdgdatadir() + "Trash"; + const bool firstTimeWithNewTrash = !QFile::exists( trashDir ); + const QString trashDesktopPath = desktopPath + "/trash.desktop"; + const bool trashDesktopExists = QFile::exists( trashDesktopPath ); + const bool installNewTrashi18n = newRelease && trashDesktopExists; // not if deleted by user + if ( emptyDesktop || firstTimeWithNewTrash || installNewTrashi18n ) { + QString oldIcon, oldEmptyIcon; + if ( trashDesktopExists ) { + KDesktopFile trashDesktop( trashDesktopPath, true ); + oldIcon = trashDesktop.readIcon(); + oldEmptyIcon = trashDesktop.readEntry( "EmptyIcon" ); + } + copyFile( locate( "data", "kdesktop/directory.trash" ), trashDesktopPath ); + if ( trashDesktopExists ) { + KDesktopFile trashDesktop( trashDesktopPath ); + trashDesktop.writeEntry( "Icon", oldIcon ); + trashDesktop.writeEntry( "EmptyIcon", oldEmptyIcon ); + trashDesktop.sync(); + } + } + + if ( firstTimeWithNewTrash ) { // migrate pre-kde-3.4 trash contents + QByteArray packedArgs; + QDataStream stream( packedArgs, IO_WriteOnly ); + stream << (int)2; + KIO::Job* job = KIO::special( "trash:/", packedArgs ); + (void)KIO::NetAccess::synchronousRun( job, 0 ); + + // OK the only thing missing is to convert the icon position... + KSimpleConfig cfg( locateLocal("appdata", "IconPositions") ); + if ( cfg.hasGroup( "IconPosition::Trash" ) && !cfg.hasGroup( "IconPosition::trash.desktop" ) ) { + const QMap entries = cfg.entryMap( "IconPosition::Trash" ); + cfg.setGroup( "IconPosition::trash.desktop" ); + for( QMap::ConstIterator it = entries.begin(); it != entries.end(); ++it ) { + cfg.writeEntry( it.key(), it.data() ); + } + } + } +} + diff --git a/kdesktop/init.h b/kdesktop/init.h new file mode 100644 index 000000000..8f23ac1b4 --- /dev/null +++ b/kdesktop/init.h @@ -0,0 +1,30 @@ +/* This file is part of the KDE project + Copyright (C) 1999 David Faure + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __init_h +#define __init_h + +/** + * Create, if necessary, some directories in user's .kde/, + * copy default .directory files there, as well as templates files. + * Called by kdesktop on startup. + */ +void testLocalInstallation(); + +#endif diff --git a/kdesktop/init/Home.desktop b/kdesktop/init/Home.desktop new file mode 100644 index 000000000..7273aa057 --- /dev/null +++ b/kdesktop/init/Home.desktop @@ -0,0 +1,166 @@ +[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 +URL=$HOME +Icon=kfm_home +Type=Link +OnlyShowIn=KDE; diff --git a/kdesktop/init/Makefile.am b/kdesktop/init/Makefile.am new file mode 100644 index 000000000..8e1895bf4 --- /dev/null +++ b/kdesktop/init/Makefile.am @@ -0,0 +1,8 @@ +SUBDIRS = Templates + +kdesktop_init_data_DATA = directory.trash directory.autostart directory.templates directory.desktop +kdesktop_init_datadir = $(kde_datadir)/kdesktop + +desktoplink_DATA = Home.desktop System.desktop +desktoplinkdir = $(kde_datadir)/kdesktop/DesktopLinks + diff --git a/kdesktop/init/System.desktop b/kdesktop/init/System.desktop new file mode 100644 index 000000000..1c4816b57 --- /dev/null +++ b/kdesktop/init/System.desktop @@ -0,0 +1,149 @@ +[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]=系統位置 +URL=system:/ +Icon=system +Type=Link +OnlyShowIn=KDE; diff --git a/kdesktop/init/Templates/CAMERA-Device.desktop b/kdesktop/init/Templates/CAMERA-Device.desktop new file mode 100644 index 000000000..524436e35 --- /dev/null +++ b/kdesktop/init/Templates/CAMERA-Device.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=camera_mount +UnmountIcon=camera_unmount diff --git a/kdesktop/init/Templates/CDROM-Device.desktop b/kdesktop/init/Templates/CDROM-Device.desktop new file mode 100644 index 000000000..65560072f --- /dev/null +++ b/kdesktop/init/Templates/CDROM-Device.desktop @@ -0,0 +1,92 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=cdrom_mount +UnmountIcon=cdrom_unmount +Actions=Eject; +X-KDE-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=kdeeject %v diff --git a/kdesktop/init/Templates/CDWRITER-Device.desktop b/kdesktop/init/Templates/CDWRITER-Device.desktop new file mode 100644 index 000000000..810b71824 --- /dev/null +++ b/kdesktop/init/Templates/CDWRITER-Device.desktop @@ -0,0 +1,92 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=0 +Type=FSDevice +Icon=cdwriter_mount +UnmountIcon=cdwriter_unmount +Actions=Eject; +X-KDE-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=kdeeject %v diff --git a/kdesktop/init/Templates/DVDROM-Device.desktop b/kdesktop/init/Templates/DVDROM-Device.desktop new file mode 100644 index 000000000..3d46866be --- /dev/null +++ b/kdesktop/init/Templates/DVDROM-Device.desktop @@ -0,0 +1,92 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=dvd_mount +UnmountIcon=dvd_unmount +Actions=Eject; +X-KDE-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=kdeeject %v diff --git a/kdesktop/init/Templates/Directory.desktop b/kdesktop/init/Templates/Directory.desktop new file mode 100644 index 000000000..3ace5a6a4 --- /dev/null +++ b/kdesktop/init/Templates/Directory.desktop @@ -0,0 +1,146 @@ +[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 new file mode 100644 index 000000000..ddae9a2c6 --- /dev/null +++ b/kdesktop/init/Templates/Floppy.desktop @@ -0,0 +1,78 @@ +[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; +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=3floppy_mount +UnmountIcon=3floppy_unmount +X-KDE-Priority=TopLevel diff --git a/kdesktop/init/Templates/HD.desktop b/kdesktop/init/Templates/HD.desktop new file mode 100644 index 000000000..78ed614dc --- /dev/null +++ b/kdesktop/init/Templates/HD.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=hdd_mount +UnmountIcon=hdd_unmount diff --git a/kdesktop/init/Templates/HTMLFile.desktop b/kdesktop/init/Templates/HTMLFile.desktop new file mode 100644 index 000000000..d2ebe33b0 --- /dev/null +++ b/kdesktop/init/Templates/HTMLFile.desktop @@ -0,0 +1,148 @@ +[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=html diff --git a/kdesktop/init/Templates/HTMLFile.html b/kdesktop/init/Templates/HTMLFile.html new file mode 100644 index 000000000..c217ab3fc --- /dev/null +++ b/kdesktop/init/Templates/HTMLFile.html @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/kdesktop/init/Templates/MO-Device.desktop b/kdesktop/init/Templates/MO-Device.desktop new file mode 100644 index 000000000..7ad78fd18 --- /dev/null +++ b/kdesktop/init/Templates/MO-Device.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=mo_mount +UnmountIcon=mo_unmount diff --git a/kdesktop/init/Templates/Makefile.am b/kdesktop/init/Templates/Makefile.am new file mode 100644 index 000000000..b05dfcbd1 --- /dev/null +++ b/kdesktop/init/Templates/Makefile.am @@ -0,0 +1,21 @@ + +# The links (that contain translations) +templ_DATA = 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 + +templdir = $(kde_templatesdir) + +# The source files (the actual templates) +sources_DATA = 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 + +sourcesdir = $(kde_templatesdir)/.source + +install-data-hook: + $(mkinstalldirs) $(DESTDIR)$(sourcesdir)/emptydir diff --git a/kdesktop/init/Templates/NFS.desktop b/kdesktop/init/Templates/NFS.desktop new file mode 100644 index 000000000..dcfc043d4 --- /dev/null +++ b/kdesktop/init/Templates/NFS.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=nfs_mount +UnmountIcon=nfs_unmount diff --git a/kdesktop/init/Templates/Program.desktop b/kdesktop/init/Templates/Program.desktop new file mode 100644 index 000000000..263e1a155 --- /dev/null +++ b/kdesktop/init/Templates/Program.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Exec= +Icon=exec +Path= +Terminal=false +Type=Application diff --git a/kdesktop/init/Templates/TextFile.desktop b/kdesktop/init/Templates/TextFile.desktop new file mode 100644 index 000000000..3c371d42c --- /dev/null +++ b/kdesktop/init/Templates/TextFile.desktop @@ -0,0 +1,148 @@ +[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=txt diff --git a/kdesktop/init/Templates/TextFile.txt b/kdesktop/init/Templates/TextFile.txt new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/kdesktop/init/Templates/TextFile.txt @@ -0,0 +1 @@ + diff --git a/kdesktop/init/Templates/URL.desktop b/kdesktop/init/Templates/URL.desktop new file mode 100644 index 000000000..968859c37 --- /dev/null +++ b/kdesktop/init/Templates/URL.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +URL= +Type=Link diff --git a/kdesktop/init/Templates/ZIP-Device.desktop b/kdesktop/init/Templates/ZIP-Device.desktop new file mode 100644 index 000000000..f51641275 --- /dev/null +++ b/kdesktop/init/Templates/ZIP-Device.desktop @@ -0,0 +1,92 @@ +[Desktop Entry] +MountPoint= +Dev= +ReadOnly=false +Type=FSDevice +Icon=zip_mount +UnmountIcon=zip_unmount +Actions=Eject; +X-KDE-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=kdeeject %v diff --git a/kdesktop/init/Templates/linkCAMERA.desktop b/kdesktop/init/Templates/linkCAMERA.desktop new file mode 100644 index 000000000..5d9dc9be1 --- /dev/null +++ b/kdesktop/init/Templates/linkCAMERA.desktop @@ -0,0 +1,150 @@ +[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_unmount diff --git a/kdesktop/init/Templates/linkCDROM.desktop b/kdesktop/init/Templates/linkCDROM.desktop new file mode 100644 index 000000000..b895fe79b --- /dev/null +++ b/kdesktop/init/Templates/linkCDROM.desktop @@ -0,0 +1,150 @@ +[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=cdrom_unmount diff --git a/kdesktop/init/Templates/linkCDWRITER.desktop b/kdesktop/init/Templates/linkCDWRITER.desktop new file mode 100644 index 000000000..8a080c55a --- /dev/null +++ b/kdesktop/init/Templates/linkCDWRITER.desktop @@ -0,0 +1,150 @@ +[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=cdwriter_unmount diff --git a/kdesktop/init/Templates/linkDVDROM.desktop b/kdesktop/init/Templates/linkDVDROM.desktop new file mode 100644 index 000000000..e65875b9d --- /dev/null +++ b/kdesktop/init/Templates/linkDVDROM.desktop @@ -0,0 +1,150 @@ +[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=dvd_unmount diff --git a/kdesktop/init/Templates/linkFloppy.desktop b/kdesktop/init/Templates/linkFloppy.desktop new file mode 100644 index 000000000..2a86dd575 --- /dev/null +++ b/kdesktop/init/Templates/linkFloppy.desktop @@ -0,0 +1,158 @@ +[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=3floppy_unmount diff --git a/kdesktop/init/Templates/linkHD.desktop b/kdesktop/init/Templates/linkHD.desktop new file mode 100644 index 000000000..43a5ba482 --- /dev/null +++ b/kdesktop/init/Templates/linkHD.desktop @@ -0,0 +1,157 @@ +[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=hdd_unmount diff --git a/kdesktop/init/Templates/linkMO.desktop b/kdesktop/init/Templates/linkMO.desktop new file mode 100644 index 000000000..44f801e5e --- /dev/null +++ b/kdesktop/init/Templates/linkMO.desktop @@ -0,0 +1,150 @@ +[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_unmount diff --git a/kdesktop/init/Templates/linkNFS.desktop b/kdesktop/init/Templates/linkNFS.desktop new file mode 100644 index 000000000..a7952c33f --- /dev/null +++ b/kdesktop/init/Templates/linkNFS.desktop @@ -0,0 +1,91 @@ +[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_unmount diff --git a/kdesktop/init/Templates/linkProgram.desktop b/kdesktop/init/Templates/linkProgram.desktop new file mode 100644 index 000000000..867e9e380 --- /dev/null +++ b/kdesktop/init/Templates/linkProgram.desktop @@ -0,0 +1,153 @@ +[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=exec +Type=Link +URL=.source/Program.desktop diff --git a/kdesktop/init/Templates/linkURL.desktop b/kdesktop/init/Templates/linkURL.desktop new file mode 100644 index 000000000..df71e95c2 --- /dev/null +++ b/kdesktop/init/Templates/linkURL.desktop @@ -0,0 +1,153 @@ +[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 kwindawo 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 new file mode 100644 index 000000000..9ef9eaee9 --- /dev/null +++ b/kdesktop/init/Templates/linkZIP.desktop @@ -0,0 +1,150 @@ +[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=zip_unmount diff --git a/kdesktop/init/directory.autostart b/kdesktop/init/directory.autostart new file mode 100644 index 000000000..d63845aed --- /dev/null +++ b/kdesktop/init/directory.autostart @@ -0,0 +1,68 @@ +[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 new file mode 100644 index 000000000..2269e69dd --- /dev/null +++ b/kdesktop/init/directory.desktop @@ -0,0 +1,81 @@ +[Desktop Entry] +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 new file mode 100644 index 000000000..d77fa5cb6 --- /dev/null +++ b/kdesktop/init/directory.templates @@ -0,0 +1,78 @@ +[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/init/directory.trash b/kdesktop/init/directory.trash new file mode 100644 index 000000000..83b69240b --- /dev/null +++ b/kdesktop/init/directory.trash @@ -0,0 +1,160 @@ +[Desktop Entry] +Type=Link +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[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 +Comment[af]=Bevat verwyder lêers +Comment[ar]=تحتوي على الملفات المحذوفة +Comment[az]=Silinmiş faylları daxil edir +Comment[be]=Утрымлівае выдаленыя файлы +Comment[bg]=Изтрити файлове +Comment[bn]=মুছে ফেলা ফাইল থাকে +Comment[bs]=Sadrži izbrisane datoteke +Comment[ca]=Conté els fitxers esborrats +Comment[cs]=Obsahuje odstraněné soubory +Comment[csb]=Zamëkô w se remniãté lopczi +Comment[cy]=Yn cynnwys ffeiliau sydd wedi eu gwaredu +Comment[da]=Indeholder fjernede filer +Comment[de]=Enthält gelöschte Dateien +Comment[el]=Περιέχει σβησμένα αρχεία +Comment[eo]=Enhavas forigitajn dosierojn +Comment[es]=Contiene archivos borrados +Comment[et]=Sisaldab eemaldatud faile +Comment[eu]=Kendutako fitxategiak dauzka +Comment[fa]=شامل پرونده‌های حذف‌شده +Comment[fi]=Sisältää poistettuja tiedostoja +Comment[fr]=Contient les fichiers supprimés +Comment[fy]=Befettet fuortsmieten triemmen +Comment[gl]=Contén ficheiros borrados +Comment[he]=מכילה קבצים שהוסרו +Comment[hi]=मिटाई गई फ़ाइलों को रखता है +Comment[hr]=Sadrži izbrisane datoteke +Comment[hu]=Itt találhatók a törölt fájlok +Comment[is]=Inniheldur fjarlægðar skrár +Comment[it]=Contiene i file cestinati +Comment[ja]=削除されたファイルを保持しています +Comment[ka]=შეიცავს წაშლილ ფაილებს +Comment[kk]=Өшірілген файлдар үшін +Comment[km]=ផ្ទុក​ឯកសារ​ដែល​បាន​យកចេញ +Comment[lo]=ທີ່ສຳລັບເກັບແຟ້ມຂອງເຈົ້າທີ່ຕ້ອງການລືບ +Comment[lt]=Čia yra ištrintos bylos +Comment[lv]=Satur aizvāktos failus +Comment[mk]=Содржи отстранети датотеки +Comment[mn]=Усгагдсан файлууд агуулагдана +Comment[ms]=Mengandungi fail yang dibuang +Comment[mt]=Fih fajls mormija +Comment[nb]=Inneholder slettede filer +Comment[nds]=Dor sünd wegdaan Dateien binnen +Comment[ne]=हटाएका फाइल समावेश गर्छ +Comment[nl]=Bevat de verwijderde bestanden +Comment[nn]=Inneheld sletta filer +Comment[nso]=Ena le difaele tseo di tlositswego +Comment[pa]=ਹਟਾਈਆਂ ਫਾਇਲ਼ਾਂ ਰੱਖਦਾ ਹੈ +Comment[pl]=Zawiera usunięte pliki +Comment[pt]=Contém os ficheiros apagados +Comment[pt_BR]=Contém arquivos removidos +Comment[ro]=Conține fișiere șterse +Comment[ru]=Содержит удалённые файлы +Comment[se]=Dáppe leat bálkestuvvon fiillat +Comment[sk]=Obsahuje zmazané súbory +Comment[sl]=Vsebuje odstranjene datoteke +Comment[sr]=Садржи уклоњене фајлове +Comment[sr@Latn]=Sadrži uklonjene fajlove +Comment[sv]=Innehåller borttagna filer +Comment[ta]=நீக்கப்பட்ட கோப்புகள் உள்ளது +Comment[tg]=Файлҳои нобудшуда дорад +Comment[th]=ที่สำหรับเก็บแฟ้มที่คุณต้องการลบ +Comment[tr]=Silinmiş dosyaları içerir +Comment[tt]=Beterelgän biremnär yatu urını +Comment[uk]=Містить вилучені файли +Comment[uz]=Olib tashlangan fayllardan iborat +Comment[uz@cyrillic]=Олиб ташланган файллардан иборат +Comment[ven]=Ina faela dzo bviswaho +Comment[vi]=Chứa tập tin đã vứt +Comment[wa]=I gn a des fitchîs oistés +Comment[xh]=Iqulathe iifayile ezisusiweyo +Comment[zh_CN]=保存临时删除的文件 +Comment[zh_TW]=包含刪除的檔案 +Comment[zu]=Iqukethe amafayela agudluziwe +OnlyShowIn=KDE diff --git a/kdesktop/kcheckrunning.cpp b/kdesktop/kcheckrunning.cpp new file mode 100644 index 000000000..eaf8b9ebb --- /dev/null +++ b/kdesktop/kcheckrunning.cpp @@ -0,0 +1,29 @@ +/* This file is part of the KDE project + Copyright (C) 2005 Lubos Lunak + + 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 + +int main() + { + Display* dpy = XOpenDisplay( NULL ); + if( dpy == NULL ) + return 1; + Atom atom = XInternAtom( dpy, "_KDE_RUNNING", False ); + return XGetSelectionOwner( dpy, atom ) != None ? 0 : 1; + } diff --git a/kdesktop/kcustommenu.cc b/kdesktop/kcustommenu.cc new file mode 100644 index 000000000..675dab098 --- /dev/null +++ b/kdesktop/kcustommenu.cc @@ -0,0 +1,111 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Waldo Bastian + + 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 +#include + +#include +#include +#include + +#include "kcustommenu.h" + +class KCustomMenu::KCustomMenuPrivate +{ +public: + QMap entryMap; +}; + +KCustomMenu::KCustomMenu(const QString &configfile, QWidget *parent) + : QPopupMenu(parent, "kcustom_menu") +{ + d = new KCustomMenuPrivate; + + KConfig cfg(configfile, true, false); + int count = cfg.readNumEntry("NrOfItems"); + for(int i = 0; i < count; i++) + { + QString entry = cfg.readEntry(QString("Item%1").arg(i+1)); + if (entry.isEmpty()) + continue; + + // Try KSycoca first. + KService::Ptr menuItem = KService::serviceByDesktopPath( entry ); + if (!menuItem) + menuItem = KService::serviceByDesktopName( entry ); + if (!menuItem) + menuItem = new KService( entry ); + + if (!menuItem->isValid()) + continue; + + insertMenuItem( menuItem, -1 ); + } + connect(this, SIGNAL(activated(int)), this, SLOT(slotActivated(int))); +} + +KCustomMenu::~KCustomMenu() +{ + delete d; +} + +void +KCustomMenu::slotActivated(int id) +{ + KService::Ptr s = d->entryMap[id]; + if (!s) + return; + kapp->startServiceByDesktopPath(s->desktopEntryPath()); +} + +// The following is copied from kicker's PanelServiceMenu +void +KCustomMenu::insertMenuItem(KService::Ptr & s, int nId, int nIndex/*= -1*/) +{ + QString serviceName = s->name(); + + // item names may contain ampersands. To avoid them being converted + // to accelators, replace them with two ampersands. + serviceName.replace("&", "&&"); + + QPixmap normal = KGlobal::instance()->iconLoader()->loadIcon(s->icon(), KIcon::Small, + 0, KIcon::DefaultState, 0L, true); + QPixmap active = KGlobal::instance()->iconLoader()->loadIcon(s->icon(), KIcon::Small, + 0, KIcon::ActiveState, 0L, true); + // make sure they are not larger than 16x16 + if (normal.width() > 16 || normal.height() > 16) { + QImage tmp = normal.convertToImage(); + tmp = tmp.smoothScale(16, 16); + normal.convertFromImage(tmp); + } + if (active.width() > 16 || active.height() > 16) { + QImage tmp = active.convertToImage(); + tmp = tmp.smoothScale(16, 16); + active.convertFromImage(tmp); + } + + QIconSet iconset; + iconset.setPixmap(normal, QIconSet::Small, QIconSet::Normal); + iconset.setPixmap(active, QIconSet::Small, QIconSet::Active); + + int newId = insertItem(iconset, serviceName, nId, nIndex); + d->entryMap.insert(newId, s); +} + +#include "kcustommenu.moc" diff --git a/kdesktop/kcustommenu.h b/kdesktop/kcustommenu.h new file mode 100644 index 000000000..3a678ae7a --- /dev/null +++ b/kdesktop/kcustommenu.h @@ -0,0 +1,56 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Waldo Bastian + + 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 __kcustommenu_h__ +#define __kcustommenu_h__ + +#include +#include + +/* + * This class provides a Popup Menu with programs that can be executed and + * that reads its configuration from a config file. + */ +class KCustomMenu : public QPopupMenu +{ + Q_OBJECT +public: + /** + * Create a custome menu described by @p configfile. + */ + KCustomMenu(const QString &configfile, QWidget *parent=0); + + /** + * Destructor + */ + ~KCustomMenu(); + +protected slots: + void slotActivated(int id); + +protected: + void insertMenuItem(KService::Ptr &s, int nId, int nIndex = -1); + +private: + class KCustomMenuPrivate; + KCustomMenuPrivate *d; +}; + + +#endif diff --git a/kdesktop/kdesktop.desktop b/kdesktop/kdesktop.desktop new file mode 100644 index 000000000..7da10e945 --- /dev/null +++ b/kdesktop/kdesktop.desktop @@ -0,0 +1,85 @@ +[Desktop Entry] +Exec=kdesktop +X-DCOP-ServiceType=wait +Name=KDE Desktop +Name[af]=KDE Werkskerm +Name[ar]=سطح المكتب KDE +Name[az]=KDE Masa üstü +Name[be]=Працоўны стол KDE +Name[bn]=কে.ডি.ই. ডেস্কটপ +Name[br]=Burev KDE +Name[bs]=KDE radna površina +Name[ca]=Escriptori KDE +Name[cs]=Pracovní plocha KDE +Name[csb]=Pùlt KDE +Name[cy]=Penbwrdd KDE +Name[da]=KDE-desktop +Name[de]=KDE-Arbeitsfläche +Name[el]=Επιφάνεια εργασίας του KDE +Name[eo]=KDE Labortablo +Name[es]=Escritorio de KDE +Name[et]=KDE töölaud +Name[eu]=KDE mahaigaina +Name[fa]=رومیزی KDE +Name[fi]=KDE-työpöytä +Name[fr]=Bureau de KDE +Name[fy]=KDE Buroblêd +Name[ga]=Deasc KDE +Name[gl]=Escritório de KDE +Name[he]=שולחן העבודה של KDE +Name[hi]=केडीई डेस्कटॉप +Name[hr]=KDE radna površina +Name[hu]=Munkaasztal +Name[id]=Desktop KDE +Name[is]=KDE skjáborð +Name[it]=Desktop KDE +Name[ja]=KDE デスクトップ +Name[ka]=KDE სამუშაო დაფა +Name[kk]=KDE үстелі +Name[km]=ផ្ទៃតុ KDE +Name[ko]=데스크톱 +Name[lo]=ພື້ນທີ່ທຳງານ KDE +Name[lt]=KDE Darbastalis +Name[lv]=KDE Darbvirsma +Name[mk]=KDE Десктоп +Name[mn]=КДЭ-Ажлын тавцан +Name[ms]=Desktop KDE +Name[mt]=Desktop KDE +Name[nb]=KDE Skrivebord +Name[nds]=KDE-Schriefdisch +Name[ne]=KDE डेस्कटप +Name[nl]=KDE Bureaublad +Name[nn]=KDE-skrivebord +Name[nso]=Desktop ya KDE +Name[pa]=KDE ਵੇਹੜਾ +Name[pl]=Pulpit KDE +Name[pt]=Ecrã do KDE +Name[pt_BR]=Área de Trabalho KDE +Name[ro]=Ecran KDE +Name[ru]=Рабочий стол KDE +Name[rw]=KDE Ibiro +Name[se]=KDE-čallinbeavdi +Name[sk]=Pracovná plocha +Name[sl]=Namizje KDE +Name[sr]=KDE радна површина +Name[sr@Latn]=KDE radna površina +Name[sv]=KDE-skrivbord +Name[ta]=KDE மேல்மேசை +Name[te]=కెడిఈ రంగస్థలం +Name[tg]=Мизи Кории KDE +Name[th]=พื้นที่ทำงาน KDE +Name[tr]=KDE Masaüstü +Name[tt]=KDE Östäl +Name[uk]=Стільниця KDE +Name[uz]=KDE ish stoli +Name[uz@cyrillic]=KDE иш столи +Name[ven]=Desikithopo ya KDE +Name[vi]=Môi trường KDE +Name[wa]=Sicribanne KDE +Name[zh_CN]=KDE 桌面 +Name[zh_TW]=KDE 桌面 +Name[zu]=I-Desktop ye-KDE +Type=Service +X-KDE-StartupNotify=false +OnlyShowIn=KDE; +X-KDE-autostart-phase=0 diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg new file mode 100644 index 000000000..597377661 --- /dev/null +++ b/kdesktop/kdesktop.kcfg @@ -0,0 +1,370 @@ + + + + + + + true + + If you want the same background settings to be applied to all desktops enable this option. + + + true + + If you want the same background settings to be applied to all screens enable this option. + + + false + + If you want to draw to each screen separately in xinerama mode enable this option. + + + false + + Enable this option if you want to limit the cache size for the background. + + + 2048 + + Here you can enter how much memory KDE should use for caching the background(s). If you have different backgrounds for the different desktops caching can make switching desktops smoother at the expense of higher memory use. + + + + + true + + Uncheck this option if you do not want to have icons on the desktop. Without icons the desktop will be somewhat faster but you will no longer be able to drag files to the desktop. + + + false + + Check this option if you want to run X11 programs that draw into the desktop such as xsnow, xpenguin or xmountain. If you have problems with applications like netscape that check the root window for running instances, disable this option. + + + true + + + + + + + false + + Check this option if you want to see your icons automatically aligned to the grid when you move them. + + + true + + + + + + + + + + + false + + You can switch between the virtual desktops by using the mouse wheel over the desktop background. + + + Forward + + + + + + + konsole + + Defines which terminal application is used. + + + + + You can choose what happens when you click the left button of your pointing device on the desktop. + + + WindowListMenu + + You can choose what happens when you click the middle button of your pointing device on the desktop. + + + DesktopMenu + + You can choose what happens when you click the right button of your pointing device on the desktop. + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + Qt::white + + + + + + + + + true + + Check here to enable a shadow outline around the desktop font. This also improves the readability of the desktop text against backgrounds of a similar color. + + + 0,0,4.0,120.0,2,1,1,0,0,0 + + + + + + + + + false + +

If you check this option, any files in your desktop directory that begin with a period (.) will be shown. Usually, such files contain configuration information, and remain hidden from view.

\n

For example, files which are named \".directory\" are plain text files which contain information for Konqueror, such as the icon to use in displaying a directory, the order in which files should be sorted, etc. You should not change or delete these files unless you know what you are doing.

+
+ + true + + If this is enabled, icons are aligned vertically, otherwise horizontally. + + + + + Select for which types of files you want to enable preview images. + + + + 0 + + Sets the sort criterion. Possible choices are NameCaseSensitive = 0, NameCaseInsensitive = 1, Size = 2, Type = 3, Date = 4. + + + true + + Enable this to place directories in front of the sorted list, otherwise they are amongst the files. + + + false + + Check this option if you want to keep your icons from moving. + + + + + + + + + +
+ + + false + + + + + + + media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted + + The device types which you do not want to see on the desktop. + + + + + + + false + + If this option is selected, applications will not have their menu bar attached to their own window anymore. Instead, there is one menu bar at the top of the screen which shows the menus of the currently active application. You might recognize this behavior from Mac OS. + + + + + false + + If this option is selected, there is one menu bar at the top of the screen which shows the desktop menus. + + + + + false + + Enables the screen saver. + + + 300 + + Sets the seconds after which the screen saver is started. + + + true + + Usually the screen saver is suspended when display power saving kicks in, + as nothing can be seen on the screen anyway, obviously. However, some screen savers + actually perform useful computations, so it is not desirable to suspend them. + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + false + + + + + + + 5000 + + + + + + + false + + + + + + + 600 + + + + + + + 19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + KGlobalSettings::completionMode() + + + + + + + + + 30 + + + + + + + +
diff --git a/kdesktop/kdesktopSetAsBackground.desktop b/kdesktop/kdesktopSetAsBackground.desktop new file mode 100644 index 000000000..0579fc013 --- /dev/null +++ b/kdesktop/kdesktopSetAsBackground.desktop @@ -0,0 +1,210 @@ +[Desktop Entry] +ServiceTypes=image/* +Actions=setAsBackground;tileAsBackground; +X-KDE-Submenu=Set as Background +X-KDE-Submenu[af]=Stel as agtergrond +X-KDE-Submenu[be]=Зрабіць фонавым малюнкам +X-KDE-Submenu[bg]=Установяване като фон +X-KDE-Submenu[bn]=পশ্চাদ্‌পট হিসাবে বেছে নাও +X-KDE-Submenu[bs]=Postavi kao pozadinu +X-KDE-Submenu[ca]=Estableix com a fons +X-KDE-Submenu[cs]=Nastavit jako pozadí +X-KDE-Submenu[csb]=Ùstôwi jakno spòdlé +X-KDE-Submenu[da]=Sæt som baggrund +X-KDE-Submenu[de]=Als Hintergrund setzen +X-KDE-Submenu[el]=Ορισμός ως ταπετσαρία +X-KDE-Submenu[eo]=Agordu kiel fono +X-KDE-Submenu[es]=Establecer como fondo +X-KDE-Submenu[et]=Sea taustapildiks +X-KDE-Submenu[eu]=Ezarri atzeko plano gisa +X-KDE-Submenu[fa]=تنظیم به عنوان زمینه +X-KDE-Submenu[fi]=Aseta taustakuvaksi +X-KDE-Submenu[fr]=Définir comme arrière-plan +X-KDE-Submenu[fy]=As eftergrûn brûke +X-KDE-Submenu[gl]=Pór como Fondo de Escritório +X-KDE-Submenu[he]=קבע כרקע +X-KDE-Submenu[hr]=Postavi kao pozadinu +X-KDE-Submenu[hu]=Beállítás háttérképnek +X-KDE-Submenu[is]=Setja sem bakgrunn +X-KDE-Submenu[it]=Imposta come sfondo +X-KDE-Submenu[ja]=背景としてセット +X-KDE-Submenu[kk]=Ая ретінде орнату +X-KDE-Submenu[km]=កំណត់​ជា​ផ្ទៃខាងក្រោយ +X-KDE-Submenu[lt]=Nustatyti fonu +X-KDE-Submenu[mk]=Постави како подлога +X-KDE-Submenu[nb]=Sett som bakgrunn +X-KDE-Submenu[nds]=As Achtergrund fastleggen +X-KDE-Submenu[ne]=पृष्ठभूमिको रुपमा सेट गर्छ +X-KDE-Submenu[nl]=Als achtergrond gebruiken +X-KDE-Submenu[nn]=Bruk som bakgrunn +X-KDE-Submenu[pa]=ਪਿੱਠਭੂਮੀ ਬਣਾਓ +X-KDE-Submenu[pl]=Ustaw jako tło +X-KDE-Submenu[pt]=Colocar como Fundo +X-KDE-Submenu[pt_BR]=Configurar como Plano de fundo +X-KDE-Submenu[ro]=Setează ca fundal +X-KDE-Submenu[ru]=Сделать фоновым рисунком +X-KDE-Submenu[se]=Geavat duogášgovvan +X-KDE-Submenu[sk]=Nastaviť ako pozadie +X-KDE-Submenu[sl]=Nastavi kot ozadje +X-KDE-Submenu[sr]=Постави као позадину +X-KDE-Submenu[sr@Latn]=Postavi kao pozadinu +X-KDE-Submenu[sv]=Använd som bakgrund +X-KDE-Submenu[th]=ตั้งให้เป็นพื้นหลัง +X-KDE-Submenu[tr]=Masaüstü Arkaplanı Yap +X-KDE-Submenu[uk]=Встановити як тло +X-KDE-Submenu[uz]=Ish stoliga qoʻyish +X-KDE-Submenu[uz@cyrillic]=Иш столига қўйиш +X-KDE-Submenu[vi]=Đặt làm Hình nền +X-KDE-Submenu[wa]=Mete come fond d' waitroûle +X-KDE-Submenu[zh_CN]=设为背景 +X-KDE-Submenu[zh_TW]=設為背景 + +[Desktop Action setAsBackground] +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 + +[Desktop Action tileAsBackground] +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 diff --git a/kdesktop/kdesktop_custom_menu1 b/kdesktop/kdesktop_custom_menu1 new file mode 100644 index 000000000..f0466b886 --- /dev/null +++ b/kdesktop/kdesktop_custom_menu1 @@ -0,0 +1,2 @@ +NrOfItems=1 +Item1=konsole diff --git a/kdesktop/kdesktop_custom_menu2 b/kdesktop/kdesktop_custom_menu2 new file mode 100644 index 000000000..2073a0d77 --- /dev/null +++ b/kdesktop/kdesktop_custom_menu2 @@ -0,0 +1,2 @@ +NrOfItems=1 +Item1=xterm diff --git a/kdesktop/kdesktopbindings.cpp b/kdesktop/kdesktopbindings.cpp new file mode 100644 index 000000000..c50eb7c30 --- /dev/null +++ b/kdesktop/kdesktopbindings.cpp @@ -0,0 +1,47 @@ +#ifndef NOSLOTS +# define DEF( name, key3, key4, fnSlot ) \ + keys->insert( name, i18n(name), QString::null, key3, key4, this, SLOT(fnSlot) ) +# define DEF2( name, key3, key4, receiver, slot ) \ + keys->insert( name, i18n(name), QString::null, key3, key4, receiver, slot ); +#else +# define DEF( name, key3, key4, fnSlot ) \ + keys->insert( name, i18n(name), QString::null, key3, key4 ) +# define DEF2( name, key3, key4, receiver, slot ) \ + keys->insert( name, i18n(name), QString::null, key3, key4 ) +#endif +#define WIN KKey::QtWIN + + keys->insert( "Program:kdesktop", i18n("Desktop") ); + +#ifndef NOSLOTS + if (kapp->authorize("run_command")) + { +#endif + DEF( I18N_NOOP("Run Command"), ALT+Qt::Key_F2, WIN+Qt::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() ); +#ifndef NOSLOTS + if (kapp->authorize("lock_screen")) + { +#endif + DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+Qt::Key_L, WIN+Qt::Key_ScrollLock, KRootWm::self(), SLOT(slotLock()) ); +#ifndef NOSLOTS + } + if (kapp->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() ); +#ifndef NOSLOTS + } +#endif + +#undef DEF +#undef DEF2 +#undef WIN diff --git a/kdesktop/kdesktopsettings.kcfgc b/kdesktop/kdesktopsettings.kcfgc new file mode 100644 index 000000000..f3577d133 --- /dev/null +++ b/kdesktop/kdesktopsettings.kcfgc @@ -0,0 +1,4 @@ +File=kdesktop.kcfg +ClassName=KDesktopSettings +Singleton=true +Mutators=true diff --git a/kdesktop/kdesktopshadowsettings.cpp b/kdesktop/kdesktopshadowsettings.cpp new file mode 100644 index 000000000..8ebdc89a8 --- /dev/null +++ b/kdesktop/kdesktopshadowsettings.cpp @@ -0,0 +1,92 @@ +/* This file is proposed to be part of the KDE base. + * Copyright (C) 2003 Laur Ivan + * + * Many thanks to: + * - Bernardo Hung for the enhanced shadow + * algorithm (currently used) + * - Tim Jansen for the API updates and fixes. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * 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 +#include +#include "kdesktopshadowsettings.h" + + +//#define DEBUG + +KDesktopShadowSettings::KDesktopShadowSettings(KConfig *cfg) : + KShadowSettings(), + m_textColor(QColor(255,255,255)), + _UID(0L) +{ + setConfig(cfg); +} + +KDesktopShadowSettings::~KDesktopShadowSettings() +{ +} + +/** + * + */ +void KDesktopShadowSettings::setUID(unsigned long val) +{ + if (val == 0L || val == _UID) + _UID++; + else + _UID = val; +} + +unsigned long KDesktopShadowSettings::UID() +{ + return _UID; +} + +/** + * Loads a new configuration + */ +void KDesktopShadowSettings::setConfig(KConfig *val) +{ + config = val; + + if (val == NULL) + return; + + // increment the UID so the items will rebuild their + // pixmaps + setUID(); + + config->setGroup("FMSettings"); + m_textColor = config->readColorEntry("NormalTextColor", &Qt::white); + m_bgColor = config->readColorEntry("ItemTextBackground"); + m_isEnabled = config->readBoolEntry("ShadowEnabled", true); + +#ifdef DEBUG + // debug + kdDebug(1204) << "setConfig()" << endl; +#endif + + if (config->hasKey(SHADOW_CONFIG_ENTRY)) + fromString(config->readEntry(SHADOW_CONFIG_ENTRY)); + +#ifdef DEBUG + // debug + kdDebug(1204) << " \t" << SHADOW_TEXT_COLOR << "=" << m_textColor << endl; + kdDebug(1204) << " \t" << SHADOW_TEXT_BACKGROUND << "=" << m_bgColor << endl; + kdDebug(1204) << " \t" << toString() << endl; +#endif +} diff --git a/kdesktop/kdesktopshadowsettings.h b/kdesktop/kdesktopshadowsettings.h new file mode 100644 index 000000000..7ee3b1451 --- /dev/null +++ b/kdesktop/kdesktopshadowsettings.h @@ -0,0 +1,117 @@ +/* This file is proposed to be part of the KDE base. + * Copyright (C) 2003 Laur Ivan + * + * Many thanks to: + * - Bernardo Hung for the enhanced shadow + * algorithm (currently used) + * - Tim Jansen for the API updates and fixes. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * 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 __FX_DATA_DESKTOP +#define __FX_DATA_DESKTOP + +#include +#include +#include + +#include + +#define FX_GROUP "FX" + +#define ALGO_KEY "Shadow.Algorithm" +#define MULT_KEY "Shadow.MultiplicationFactor" +#define OPAC_KEY "Shadow.MaxOpacity" +#define OFSX_KEY "Shadow.OffsetX" +#define OFSY_KEY "Shadow.OffsetY" +#define THIK_KEY "Shadow.Thickness" +#define SELT_KEY "Shadow.SelectionType" + +/** + * This implementation of FxData will read a the default configuration + * file. The values used for shadow are frouped under "FX". + * + * The values are: + * Shadow.Algorithm: the algorithm used for making the sahdow + * Shadow.Scale the normailsation factor for veraging the sum + * Shadow.MaxOpacity the maximum allowable opacity (255 = 100%opaque) + * Shadow.OffsetX the X-coordinate offset (0 centered) + * Shadow.OffsetY the Y-coordinate offset (0 centered) + * Shadow.Thickness the shadow thickness (usually 3-5 px) + * Shadow.SelectionType the selection type - inverse video or use + * the selection colours. + * + * 06-Feb-03: Added simple UID algorithm + * + */ +class KDesktopShadowSettings : public KShadowSettings +{ + public: + /** + * Constructor + * @param cfg the configuration file + */ + KDesktopShadowSettings(KConfig *cfg = NULL); + + virtual ~KDesktopShadowSettings(); + + /** + * Sets a specific configuration file after the object's creation + * @param config new configuration object + */ + void setConfig(KConfig *); + + /** + * Returns the text color as definied in the configuraiton + * @return the text color as definied in the configuraiton + */ + QColor &textColor(){ return m_textColor; }; + + /** + * Returns the shadow color as definied in the configuraiton + * @return the shadow color as definied in the configuraiton + */ + QColor &bgColor() { return m_bgColor; }; + + /** + * Returns true if the shadow engine is enabled. + * @return true if the shadow engine is enabled. + */ + bool isEnabled() { return m_isEnabled; }; + + /** + * Returns an UID for shadow rebuilding purposes + * @return an UID for shadow rebuilding purposes + */ + unsigned long UID(); + + /** + * (Re)sets an UID for shadow rebuilding purposes + * @param the new UID (if 0/default, increments the stored UID) + */ + void setUID(unsigned long val = 0L); + + private: + KConfig *config; + QColor m_textColor; + QColor m_bgColor; + bool m_isEnabled; + + // uid of the object. Use this to determine the oportunity of a new + // rebuild. + unsigned long _UID; +}; + +#endif diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cc new file mode 100644 index 000000000..f9ca6c446 --- /dev/null +++ b/kdesktop/kdiconview.cc @@ -0,0 +1,1668 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Torben Weis + Copyright (C) 2000, 2001 David Faure + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License version 2 as published by the Free Software Foundation. + + This program 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "kdiconview.h" +#include "krootwm.h" +#include "desktop.h" +#include "kdesktopsettings.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include + +#include "kshadowengine.h" +#include "kdesktopshadowsettings.h" +#include "kfileividesktop.h" + +// for multihead +extern int kdesktop_screen_number; + +// ----------------------------------------------------------------------------- + +QRect KDIconView::desktopRect() +{ + return ( kdesktop_screen_number == 0 ) + ? QApplication::desktop()->geometry() // simple case, or xinerama + : QApplication::desktop()->screenGeometry( kdesktop_screen_number ); // multi-head +} + +// ----------------------------------------------------------------------------- + +void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y) +{ + // save the icon position in absolute coordinates + config->writeEntry("Xabs", x); + config->writeEntry("Yabs", y); + + // save also mentioning desktop size + QRect desk = desktopRect(); + QString sizeStr = QString( "_%1x%2" ).arg(desk.width()).arg(desk.height()); + + config->writeEntry("Xabs" + sizeStr, x); + config->writeEntry("Yabs" + sizeStr, y); +} + +// ----------------------------------------------------------------------------- + +void KDIconView::readIconPosition(KSimpleConfig *config, int &x, int &y) +{ + // check if we have the position for the current desktop size + QRect desk = desktopRect(); + QString sizeStr = QString( "_%1x%2" ).arg(desk.width()).arg(desk.height()); + + x = config->readNumEntry("Xabs" + sizeStr, -99999); + + if ( x != -99999 ) + y = config->readNumEntry("Yabs" + sizeStr); + else + { + // not found; use the resolution independent position + x = config->readNumEntry("Xabs", -99999); + + if ( x != -99999 ) + y = config->readNumEntry("Yabs"); + else // for compatibility, read the old iconArea-relative-position + { + // problem here: when reading a position before we know the correct + // desktopIconsArea, the relative position do not make sense + // workaround: use desktopRect() as the allowed size + + QRect desk = desktopRect(); + QString X_w = QString("X %1").arg(desk.width() ); + QString Y_h = QString("Y %1").arg(desk.height()); + + x = config->readNumEntry(X_w, -99999); + if ( x != -99999 ) x = config->readNumEntry("X"); + if ( x < 0 ) x += desk.width(); + + y = config->readNumEntry(Y_h, -99999); + if ( y != -99999 ) y = config->readNumEntry("Y"); + if ( y < 0 ) y += desk.height(); + } + } +} + +// ----------------------------------------------------------------------------- + +KDIconView::KDIconView( QWidget *parent, const char* name ) + : KonqIconViewWidget( parent, name, WResizeNoErase, true ), + m_actionCollection( this, "KDIconView::m_actionCollection" ), + m_accel( 0L ), + m_bNeedRepaint( false ), + m_bNeedSave( false ), + m_autoAlign( false ), + m_hasExistingPos( false ), + m_bEditableDesktopIcons( kapp->authorize("editable_desktop_icons") ), + m_bShowDot( false ), + m_bVertAlign( true ), + m_dirLister( 0L ), + m_mergeDirs(), + m_dotDirectory( 0L ), + m_lastDeletedIconPos(), + m_eSortCriterion( NameCaseInsensitive ), + m_bSortDirectoriesFirst( true ), + m_itemsAlwaysFirst(), + m_gotIconsArea(false) +{ + setResizeMode( Fixed ); + setIconArea( desktopRect() ); // the default is the whole desktop + + // Initialise the shadow data objects... + m_shadowEngine = new KShadowEngine(new KDesktopShadowSettings(KGlobal::config())); + + connect( QApplication::clipboard(), SIGNAL(dataChanged()), + this, SLOT(slotClipboardDataChanged()) ); + + setURL( desktopURL() ); // sets m_url + + m_desktopDirs = KGlobal::dirs()->findDirs( "appdata", "Desktop" ); + initDotDirectories(); + + connect( this, SIGNAL( executed( QIconViewItem * ) ), + SLOT( slotExecuted( QIconViewItem * ) ) ); + connect( this, SIGNAL( returnPressed( QIconViewItem * ) ), + SLOT( slotReturnPressed( QIconViewItem * ) ) ); + connect( this, SIGNAL( mouseButtonPressed(int, QIconViewItem*, const QPoint&)), + SLOT( slotMouseButtonPressed(int, QIconViewItem*, const QPoint&)) ); + connect( this, SIGNAL( mouseButtonClicked(int, QIconViewItem*, const QPoint&)), + SLOT( slotMouseButtonClickedKDesktop(int, QIconViewItem*, const QPoint&)) ); + connect( this, SIGNAL( contextMenuRequested(QIconViewItem*, const QPoint&)), + SLOT( slotContextMenuRequested(QIconViewItem*, const QPoint&)) ); + + connect( this, SIGNAL( enableAction( const char * , bool ) ), + SLOT( slotEnableAction( const char * , bool ) ) ); + + // Hack: KonqIconViewWidget::slotItemRenamed is not virtual :-( + disconnect( this, SIGNAL(itemRenamed(QIconViewItem *, const QString &)), + this, SLOT(slotItemRenamed(QIconViewItem *, const QString &)) ); + connect( this, SIGNAL(itemRenamed(QIconViewItem *, const QString &)), + this, SLOT(slotItemRenamed(QIconViewItem *, const QString &)) ); + + if (!m_bEditableDesktopIcons) + { + setItemsMovable(false); + setAcceptDrops(false); + viewport()->setAcceptDrops(false); + } +} + +KDIconView::~KDIconView() +{ + if (m_dotDirectory && !m_bEditableDesktopIcons) + m_dotDirectory->rollback(false); // Don't save positions + + delete m_dotDirectory; + delete m_dirLister; + delete m_shadowEngine; +} + +void KDIconView::initDotDirectories() +{ + QStringList dirs = m_desktopDirs; + KURL u = desktopURL(); + if (u.isLocalFile()) + dirs.prepend(u.path()); + + QString prefix = iconPositionGroupPrefix(); + QString dotFileName = locateLocal("appdata", "IconPositions"); + if (kdesktop_screen_number != 0) + dotFileName += "_Desktop" + QString::number(kdesktop_screen_number); + + if (m_dotDirectory && !m_bEditableDesktopIcons) + m_dotDirectory->rollback(false); // Don't save positions + + delete m_dotDirectory; + + m_dotDirectory = new KSimpleConfig( dotFileName ); + // If we don't allow editable desktop icons, empty m_dotDirectory + if (!m_bEditableDesktopIcons) + { + QStringList groups = m_dotDirectory->groupList(); + QStringList::ConstIterator gIt = groups.begin(); + QStringList::ConstIterator gEnd = groups.end(); + for (; gIt != gEnd; ++gIt ) + { + m_dotDirectory->deleteGroup(*gIt, true); + } + } + QRect desk = desktopRect(); + QString X_w = QString( "X %1" ).arg( desk.width() ); + QString Y_h = QString( "Y %1" ).arg( desk.height() ); + for ( QStringList::ConstIterator it = dirs.begin() ; it != dirs.end() ; ++it ) + { + kdDebug(1204) << "KDIconView::initDotDirectories found dir " << *it << endl; + QString dotFileName = *it + "/.directory"; + + if (QFile::exists(dotFileName)) + { + KSimpleConfig dotDir(dotFileName, true); // Read only + + QStringList groups = dotDir.groupList(); + QStringList::ConstIterator gIt = groups.begin(); + QStringList::ConstIterator gEnd = groups.end(); + for (; gIt != gEnd; ++gIt ) + { + if ( (*gIt).startsWith(prefix) ) + { + dotDir.setGroup( *gIt ); + m_dotDirectory->setGroup( *gIt ); + + if (!m_dotDirectory->hasKey( X_w )) + { + int x,y; + readIconPosition(&dotDir, x, y); + m_dotDirectory->writeEntry( X_w, x ); + m_dotDirectory->writeEntry( Y_h, y ); // Not persistant! + } + } + } + } + } +} + +void KDIconView::initConfig( bool init ) +{ + //kdDebug() << "initConfig " << init << endl; + + if ( !init ) { + KonqFMSettings::reparseConfiguration(); + KDesktopSettings::self()->readConfig(); + } + + KConfig * config = KGlobal::config(); + + if ( !init ) { + KDesktopShadowSettings *shadowSettings = static_cast(m_shadowEngine->shadowSettings()); + shadowSettings->setConfig(config); + } + + setMaySetWallpaper(!config->isImmutable() && !KGlobal::dirs()->isRestrictedResource("wallpaper")); + m_bShowDot = KDesktopSettings::showHidden(); + m_bVertAlign = KDesktopSettings::vertAlign(); + QStringList oldPreview = previewSettings(); + setPreviewSettings( KDesktopSettings::preview() ); + + // read arrange configuration + m_eSortCriterion = (SortCriterion)KDesktopSettings::sortCriterion(); + m_bSortDirectoriesFirst = KDesktopSettings::directoriesFirst(); + m_itemsAlwaysFirst = KDesktopSettings::alwaysFirstItems(); // Distributor plug-in + + if (KProtocolInfo::isKnownProtocol(QString::fromLatin1("media"))) + m_enableMedia=KDesktopSettings::mediaEnabled(); + else + m_enableMedia=false; + QString tmpList=KDesktopSettings::exclude(); + kdDebug(1204)<<"m_excludeList"<setShowingDotFiles( m_bShowDot ); + m_dirLister->emitChanges(); + } + + setArrangement(m_bVertAlign ? TopToBottom : LeftToRight); + + if ( KonqIconViewWidget::initConfig( init ) ) + lineupIcons(); // called if the font changed. + + setAutoArrange( false ); + + if ( previewSettings().count() ) + { + for ( QStringList::ConstIterator it = oldPreview.begin(); it != oldPreview.end(); ++it) + if ( !previewSettings().contains( *it ) ){ + kdDebug(1204) << "Disabling preview for " << *it << endl; + if ( *it == "audio/" ) + disableSoundPreviews(); + else + { + KService::Ptr serv = KService::serviceByDesktopName( *it ); + Q_ASSERT( serv != 0L ); + if ( serv ) + { + setIcons( iconSize( ), serv->property("MimeTypes").toStringList() /* revert no-longer wanted previews to icons */ ); + } + } + } + startImagePreview( QStringList(), true ); + } + else + { + stopImagePreview(); + setIcons( iconSize(), "*" /* stopImagePreview */ ); + } + + if ( !init ) + updateContents(); +} + +void KDIconView::start() +{ + // We can only start once + Q_ASSERT(!m_dirLister); + if (m_dirLister) + return; + + kdDebug(1204) << "KDIconView::start" << endl; + + // Create the directory lister + m_dirLister = new KDirLister(); + + m_bNeedSave = false; + + connect( m_dirLister, SIGNAL( clear() ), this, SLOT( slotClear() ) ); + connect( m_dirLister, SIGNAL( started(const KURL&) ), + this, SLOT( slotStarted(const KURL&) ) ); + connect( m_dirLister, SIGNAL( completed() ), this, SLOT( slotCompleted() ) ); + connect( m_dirLister, SIGNAL( newItems( const KFileItemList & ) ), + this, SLOT( slotNewItems( const KFileItemList & ) ) ); + connect( m_dirLister, SIGNAL( deleteItem( KFileItem * ) ), + this, SLOT( slotDeleteItem( KFileItem * ) ) ); + connect( m_dirLister, SIGNAL( refreshItems( const KFileItemList & ) ), + this, SLOT( slotRefreshItems( const KFileItemList & ) ) ); + + // Start the directory lister ! + m_dirLister->setShowingDotFiles( m_bShowDot ); + kapp->allowURLAction("list", KURL(), url()); + startDirLister(); + createActions(); +} + +void KDIconView::configureMedia() +{ + kdDebug(1204) << "***********KDIconView::configureMedia() " <setMimeExcludeFilter(m_excludedMedia); + m_dirLister->emitChanges(); + updateContents(); + if (m_enableMedia) + { + for (KURL::List::Iterator it1=m_mergeDirs.begin();it1!=m_mergeDirs.end();++it1) + { + if ((*it1).url()=="media:/") return; + } + m_mergeDirs.append(KURL("media:/")); + m_dirLister->openURL(KURL("media:/"),true); + } + else + { + for (KURL::List::Iterator it2=m_mergeDirs.begin();it2!=m_mergeDirs.end();++it2) + { + if ((*it2).url()=="media:/") + { + delete m_dirLister; + m_dirLister=0; + start(); +// m_mergeDirs.remove(it2); +// m_dirLister->stop("media"); + return; + } + + } + return; + } + +} + +void KDIconView::createActions() +{ + if (m_bEditableDesktopIcons) + { + KAction *undo = KStdAction::undo( KonqUndoManager::self(), SLOT( undo() ), &m_actionCollection, "undo" ); + connect( KonqUndoManager::self(), SIGNAL( undoAvailable( bool ) ), + undo, SLOT( setEnabled( bool ) ) ); + connect( KonqUndoManager::self(), SIGNAL( undoTextChanged( const QString & ) ), + undo, SLOT( setText( const QString & ) ) ); + undo->setEnabled( KonqUndoManager::self()->undoAvailable() ); + + KAction* paCut = KStdAction::cut( this, SLOT( slotCut() ), &m_actionCollection, "cut" ); + KShortcut cutShortCut = paCut->shortcut(); + cutShortCut.remove( KKey( SHIFT + Key_Delete ) ); // used for deleting files + paCut->setShortcut( cutShortCut ); + + KStdAction::copy( this, SLOT( slotCopy() ), &m_actionCollection, "copy" ); + KStdAction::paste( this, SLOT( slotPaste() ), &m_actionCollection, "paste" ); + KAction *pasteTo = KStdAction::paste( this, SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" ); + pasteTo->setEnabled( false ); // only enabled during popupMenu() + + KShortcut reloadShortcut = KStdAccel::shortcut(KStdAccel::Reload); + new KAction( i18n( "&Reload" ), "reload", reloadShortcut, this, SLOT( refreshIcons() ), &m_actionCollection, "reload" ); + + (void) new KAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, this, SLOT( renameSelectedItem() ), &m_actionCollection, "rename" ); + (void) new KAction( i18n( "&Properties" ), ALT+Key_Return, this, SLOT( slotProperties() ), &m_actionCollection, "properties" ); + KAction* trash = new KAction( i18n( "&Move to Trash" ), "edittrash", Key_Delete, &m_actionCollection, "trash" ); + connect( trash, SIGNAL( activated( KAction::ActivationReason, Qt::ButtonState ) ), + this, SLOT( slotTrashActivated( KAction::ActivationReason, Qt::ButtonState ) ) ); + + KConfig config("kdeglobals", true, false); + config.setGroup( "KDE" ); + (void) new KAction( i18n( "&Delete" ), "editdelete", SHIFT+Key_Delete, this, SLOT( slotDelete() ), &m_actionCollection, "del" ); + + // Initial state of the actions (cut/copy/paste/...) + slotSelectionChanged(); + //init paste action + slotClipboardDataChanged(); + } +} + +void KDIconView::rearrangeIcons( SortCriterion sc, bool bSortDirectoriesFirst ) +{ + m_eSortCriterion = sc; + m_bSortDirectoriesFirst = bSortDirectoriesFirst; + rearrangeIcons(); +} + +void KDIconView::rearrangeIcons() +{ + setupSortKeys(); + sort(); // calls arrangeItemsInGrid() which does not honor iconArea() + + if ( m_autoAlign ) + lineupIcons( m_bVertAlign ? QIconView::TopToBottom : QIconView::LeftToRight ); // also saves position + else + { + KonqIconViewWidget::lineupIcons(m_bVertAlign ? QIconView::TopToBottom : QIconView::LeftToRight); + saveIconPositions(); + } +} + +void KDIconView::lineupIcons() +{ + if ( !m_gotIconsArea ) return; + KonqIconViewWidget::lineupIcons(); + saveIconPositions(); +} + +void KDIconView::setAutoAlign( bool b ) +{ + m_autoAlign = b; + + // Auto line-up icons + if ( b ) { + lineupIcons(); + connect( this, SIGNAL( iconMoved() ), + this, SLOT( lineupIcons() ) ); + } + else { + // change maxItemWidth, because when grid-align was active, it changed this for the grid + int sz = iconSize() ? iconSize() : KGlobal::iconLoader()->currentSize( KIcon::Desktop ); + setMaxItemWidth( QMAX( QMAX( sz, previewIconSize( iconSize() ) ), KonqFMSettings::settings()->iconTextWidth() ) ); + setFont( font() ); // Force calcRect() + + disconnect( this, SIGNAL( iconMoved() ), + this, SLOT( lineupIcons() ) ); + } +} + +void KDIconView::startDirLister() +{ + // if desktop is resized before start() is called (XRandr) + if (!m_dirLister) return; + + m_dirLister->openURL( url() ); + + // Gather the list of directories to merge into the desktop + // (the main URL is desktopURL(), no need for it in the m_mergeDirs list) + m_mergeDirs.clear(); + for ( QStringList::ConstIterator it = m_desktopDirs.begin() ; it != m_desktopDirs.end() ; ++it ) + { + kdDebug(1204) << "KDIconView::desktopResized found merge dir " << *it << endl; + KURL u; + u.setPath( *it ); + m_mergeDirs.append( u ); + // And start listing this dir right now + kapp->allowURLAction("list", KURL(), u); + m_dirLister->openURL( u, true ); + } + configureMedia(); +} + +void KDIconView::lineupIcons(QIconView::Arrangement align) +{ + m_bVertAlign = ( align == QIconView::TopToBottom ); + setArrangement( m_bVertAlign ? TopToBottom : LeftToRight ); + + if ( m_autoAlign ) + { + KonqIconViewWidget::lineupIcons( align ); + saveIconPositions(); + } + else + rearrangeIcons(); // also saves the position + + KDesktopSettings::setVertAlign( m_bVertAlign ); + KDesktopSettings::writeConfig(); +} + +// Only used for DCOP +QStringList KDIconView::selectedURLs() +{ + QStringList seq; + + QIconViewItem *it = firstItem(); + for (; it; it = it->nextItem() ) + if ( it->isSelected() ) { + KFileItem *fItem = ((KFileIVI *)it)->item(); + seq.append( fItem->url().url() ); // copy the URL + } + + return seq; +} + +void KDIconView::recheckDesktopURL() +{ + // Did someone change the path to the desktop ? + kdDebug(1204) << desktopURL().url() << endl; + kdDebug(1204) << url().url() << endl; + if ( desktopURL() != url() ) + { + kdDebug(1204) << "Desktop path changed from " << url().url() << + " to " << desktopURL().url() << endl; + setURL( desktopURL() ); // sets m_url + initDotDirectories(); + m_dirLister->openURL( url() ); + } +} + +KURL KDIconView::desktopURL() +{ + // Support both paths and URLs + QString desktopPath = KGlobalSettings::desktopPath(); + if (kdesktop_screen_number != 0) { + QString dn = "Desktop"; + dn += QString::number(kdesktop_screen_number); + desktopPath.replace("Desktop", dn); + } + + KURL desktopURL; + if (desktopPath[0] == '/') + desktopURL.setPath(desktopPath); + else + desktopURL = desktopPath; + + Q_ASSERT( desktopURL.isValid() ); + if ( !desktopURL.isValid() ) { // should never happen + KURL u; + u.setPath( QDir::homeDirPath() + "/" + "Desktop" + "/" ); + return u; + } + + return desktopURL; +} + +void KDIconView::contentsMousePressEvent( QMouseEvent *e ) +{ + if (!m_dirLister) return; + //kdDebug(1204) << "KDIconView::contentsMousePressEvent" << endl; + // QIconView, as of Qt 2.2, doesn't emit mouseButtonPressed for LMB on background + if ( e->button() == LeftButton && KRootWm::self()->hasLeftButtonMenu() ) + { + QIconViewItem *item = findItem( e->pos() ); + if ( !item ) + { + // Left click menu + KRootWm::self()->mousePressed( e->globalPos(), e->button() ); + return; + } + } + KonqIconViewWidget::contentsMousePressEvent( e ); +} + +void KDIconView::mousePressEvent( QMouseEvent *e ) +{ + KRootWm::self()->mousePressed( e->globalPos(), e->button() ); +} + +void KDIconView::wheelEvent( QWheelEvent* e ) +{ + if (!m_dirLister) return; + //kdDebug(1204) << "KDIconView::wheelEvent" << endl; + + QIconViewItem *item = findItem( e->pos() ); + if ( !item ) + { + emit wheelRolled( e->delta() ); + return; + } + + KonqIconViewWidget::wheelEvent( e ); +} + +void KDIconView::slotProperties() +{ + KFileItemList selectedFiles = selectedFileItems(); + + if( selectedFiles.isEmpty() ) + return; + + (void) new KPropertiesDialog( selectedFiles ); +} + +void KDIconView::slotContextMenuRequested(QIconViewItem *_item, const QPoint& _global) +{ + if (_item) + { + ((KFileIVI*)_item)->setSelected( true ); + popupMenu( _global, selectedFileItems() ); + } +} + +void KDIconView::slotMouseButtonPressed(int _button, QIconViewItem* _item, const QPoint& _global) +{ + //kdDebug(1204) << "KDIconView::slotMouseButtonPressed" << endl; + if (!m_dirLister) return; + m_lastDeletedIconPos = QPoint(); // user action -> not renaming an icon + if(!_item) + KRootWm::self()->mousePressed( _global, _button ); +} + +void KDIconView::slotMouseButtonClickedKDesktop(int _button, QIconViewItem* _item, const QPoint&) +{ + if (!m_dirLister) return; + //kdDebug(1204) << "KDIconView::slotMouseButtonClickedKDesktop" << endl; + if ( _item && _button == MidButton ) + slotExecuted(_item); +} + +// ----------------------------------------------------------------------------- + +void KDIconView::slotReturnPressed( QIconViewItem *item ) +{ + if (item && item->isSelected()) + slotExecuted(item); +} + +// ----------------------------------------------------------------------------- + +void KDIconView::slotExecuted( QIconViewItem *item ) +{ + kapp->propagateSessionManager(); + m_lastDeletedIconPos = QPoint(); // user action -> not renaming an icon + if (item) { + visualActivate(item); + ((KFileIVI*)item)->returnPressed(); + } +} + +// ----------------------------------------------------------------------------- + +void KDIconView::slotCut() +{ + cutSelection(); +} + +// ----------------------------------------------------------------------------- + +void KDIconView::slotCopy() +{ + copySelection(); +} + +// ----------------------------------------------------------------------------- + +void KDIconView::slotPaste() +{ + KonqOperations::doPaste(this, url(), KRootWm::self()->desktopMenuPosition()); +} + +void KDIconView::slotPopupPasteTo() +{ + Q_ASSERT( !m_popupURL.isEmpty() ); + if ( !m_popupURL.isEmpty() ) + paste( m_popupURL ); +} + +/** + * The files on the desktop come from a variety of sources. + * If an attempt is made to delete a .desktop file that does + * not originate from the users own Desktop directory then + * a .desktop file with "Hidden=true" is written to the users + * own Desktop directory to hide the file. + * + * Returns true if all selected items have been deleted. + * Returns false if there are selected items remaining that + * still need to be deleted in a regular fashion. + */ +bool KDIconView::deleteGlobalDesktopFiles() +{ + KURL desktop_URL = desktopURL(); + if (!desktop_URL.isLocalFile()) + return false; // Dunno how to do this. + + QString desktopPath = desktop_URL.path(); + + bool itemsLeft = false; + QIconViewItem *it = 0; + QIconViewItem *nextIt = firstItem(); + for (; (it = nextIt); ) + { + nextIt = it->nextItem(); + if ( !it->isSelected() ) + continue; + + KFileItem *fItem = ((KFileIVI *)it)->item(); + if (fItem->url().path().startsWith(desktopPath)) + { + itemsLeft = true; + continue; // File is in users own Desktop directory + } + + if (!isDesktopFile(fItem)) + { + itemsLeft = true; + continue; // Not a .desktop file + } + + KDesktopFile df(desktopPath + fItem->url().fileName()); + df.writeEntry("Hidden", true); + df.sync(); + + delete it; + } + return !itemsLeft; +} + +void KDIconView::slotTrashActivated( KAction::ActivationReason reason, Qt::ButtonState state ) +{ + if (deleteGlobalDesktopFiles()) + return; // All items deleted + + if ( reason == KAction::PopupMenuActivation && ( state & Qt::ShiftButton ) ) + KonqOperations::del(this, KonqOperations::DEL, selectedUrls()); + else + KonqOperations::del(this, KonqOperations::TRASH, selectedUrls()); +} + +void KDIconView::slotDelete() +{ + if (deleteGlobalDesktopFiles()) + return; // All items deleted + KonqOperations::del(this, KonqOperations::DEL, selectedUrls()); +} + +// ----------------------------------------------------------------------------- + +// This method is called when right-clicking over one or more items +// Not to be confused with the global popup-menu, KRootWm, when doing RMB on the desktop +void KDIconView::popupMenu( const QPoint &_global, const KFileItemList& _items ) +{ + if (!kapp->authorize("action/kdesktop_rmb")) return; + if (!m_dirLister) return; + if ( _items.count() == 1 ) + m_popupURL = _items.getFirst()->url(); + + KAction* pasteTo = m_actionCollection.action( "pasteto" ); + if (pasteTo) + pasteTo->setEnabled( m_actionCollection.action( "paste" )->isEnabled() ); + + bool hasMediaFiles = false; + KFileItemListIterator it(_items); + for (; it.current() && !hasMediaFiles; ++it) { + hasMediaFiles = it.current()->url().protocol() == "media"; + } + + KParts::BrowserExtension::PopupFlags itemFlags = KParts::BrowserExtension::DefaultPopupItems; + if ( hasMediaFiles ) + itemFlags |= KParts::BrowserExtension::NoDeletion; + KonqPopupMenu * popupMenu = new KonqPopupMenu( KonqBookmarkManager::self(), _items, + url(), + m_actionCollection, + KRootWm::self()->newMenu(), + this, + KonqPopupMenu::ShowProperties | KonqPopupMenu::ShowNewWindow, + itemFlags ); + + popupMenu->exec( _global ); + delete popupMenu; + m_popupURL = KURL(); + if (pasteTo) + pasteTo->setEnabled( false ); +} + +void KDIconView::slotNewMenuActivated() +{ + //kdDebug(1204) << "KDIconView::slotNewMenuActivated" << endl; + // New /