[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: new_kcm_code: kdelibs/kcmshell
From:       Frans Englich <frans.englich () telia ! com>
Date:       2004-10-18 13:58:19
Message-ID: 200410181404.41535.frans.englich () telia ! com
[Download RAW message or body]

On Sunday 17 October 2004 21:14, you wrote:
> On Sunday 17 October 2004 17:30, Frans Englich wrote:
> > CVS commit by englich:
> >
> >
> > Refactor and remove DCOP code. In all have kcmshell gone from 2700 LOC to
> > 250. The way I like them, dumb and small so they fit in my pocket.
> >
> > To be noticed is a small policy change: Previously, when kcmshell was
> > already loaded, it slept until the other kcmshell exited, and then exited
> > itself. Now, when in the same situation, the user may close the
> > kcmshell(which doesn't have anything loaded) while the module(s) are
> > loaded somewhere else. I can't think that this will break anything.
> > Konqueror and Kicker should probably be converted to using
> > KCMultiDialog(for serveral reasons).
>
> Well, in the 1 module case it doesn't make sense to show a new dialog that
> says "look there" if you can just give the other dialog focus
> automatically. If the other dialog has more than 1 module that starts to
> become unclear though.

I think the kcmshell+N modules case is equally tricky to kcmshell+1module, 
because they are used in the same situation(AFAICT): configuration dialogs 
for applications. When the user selects "Settings->Configure Foo" it should 
in either case set focus on the dialog, whether it have 1 or more modules(as 
kcmshell in HEAD does).

Besides from that configuration-dialog-for-app scenario, we have those which 
the DCOP code in KCModuleProxy fixes; where modules are found in whatever 
combinations across applications. But it doesn't cover the case where 
kcmshell is used a a configuration dialog.

AFAICT, kcmshell is used as configuration dialog because KCMultiDialog didn't 
exist back then. But now it does, and using it instead of kcmshell seems to 
me in several ways better; it's faster, lighter on resources, and solves the 
focus/window handling issue in an optimal way.

Attached is a grepping, listing where kcmshell is used. Wouldn't it be better 
to convert those to use KCMultiDialog, as the solution to this problem? Or 
would there still be cases where kcmshell's uniqueness checking would be 
necessary? Also, perhaps the semantical change is too big for 3rd parties.

If not, I see no other way than to readd and have duplicate DCOP checks.


Cheers,

		Frans


["kcmshell_uses.txt" (text/plain)]

kdeaddons/kicker-applets/kbinaryclock/kbinaryclock.cpp:332:				.arg(locate("exe", \
"kcmshell")) kdeaddons/kicker-applets/kbinaryclock/kbinaryclock.cpp:337:		proc << \
locate("exe", "kcmshell"); \
kdeaddons/konq-plugins/searchbar/searchbar.cpp:200:	*process << "kcmshell" << \
"ebrowsing";

kdeadmin/debian/lilo-config.menu:7:	command="/usr/bin/kdesu kcmshell lilo"
kdeadmin/kcmlinuz/configuration.cpp:275:	// if started via kcmshell.

kdebase/kcontrol/kfontinst/ChangeLog:92:11. Remember size of main window when run via \
kcmshell. kdebase/kcontrol/kfontinst/kcmfontinst/KCmFontInst.cpp:99:    \
itsKCmshell=!itsEmbeddedAdmin && NULL!=appName && 0==strcmp("kcmshell", appName) && \
kdebase/kcontrol/knotify/knotify.cpp:131:    // kcmshell is a modal dialog, and \
apparently, we can't put a non-modal \
kdebase/kcontrol/kthememanager/kthemedlg.ui.h:19:    KRun::runCommand("kcmshell \
background"); kdebase/kcontrol/kthememanager/kthemedlg.ui.h:25:    \
KRun::runCommand("kcmshell colors"); \
kdebase/kcontrol/kthememanager/kthemedlg.ui.h:31:    KRun::runCommand("kcmshell \
style"); kdebase/kcontrol/kthememanager/kthemedlg.ui.h:37:    \
KRun::runCommand("kcmshell icons"); kdebase/kcontrol/kthememanager/kthemedlg.ui.h:43: \
KRun::runCommand("kcmshell screensaver"); kdebase/kdesktop/krootwm.cc:710:  \
KApplication::kdeinitExec(QString::fromLatin1("kcmshell"), args); \
kdebase/kicker/applets/clock/clock.cpp:1241:                  .arg(locate("exe", \
"kcmshell")) kdebase/kicker/applets/clock/clock.cpp:1246:          proc << \
locate("exe", "kcmshell"); kdebase/kicker/applets/lockout/lockout.cpp:258:    \
KRun::run( "kcmshell screensaver", KURL::List() ); \
kdebase/kicker/applets/lockout/lockout.cpp:276:    KRun::run( "kcmshell kcmsmserver", \
KURL::List() ); kdebase/kicker/core/kicker.cpp:297:    QString prog = locate("exe", \
"kcmshell"); kdebase/konqueror/about/konq_aboutpage.cc:167:          .arg( \
i18n("JavaScript disabled (globally). Enable JavaScript <A \
HREF=\"%1\">here</A>.").arg("exec:/kcmshell khtml_java_js") ) \
kdebase/konqueror/about/konq_aboutpage.cc:168:          .arg( i18n("JavaScript \
enabled (globally). Configure JavaScript <A \
HREF=\\\"%1\\\">here</A>.").arg("exec:/kcmshell khtml_java_js") ) // leave the double \
backslashes here, they are necessary for javascript ! \
kdebase/konqueror/about/konq_aboutpage.cc:172:          .arg( i18n("Enable Java \
(globally) <A HREF=\"%1\">here</A>.").arg("exec:/kcmshell khtml_java_js") ) // TODO \
Maybe test if Java is enabled ? kdebase/konqueror/about/konq_aboutpage.cc:193:        \
.arg( i18n("and <A HREF=\"%1\">many more...</A>").arg("exec:/kcmshell ioslaveinfo") ) \
kdebase/konqueror/about/konq_aboutpage.cc:242:                      "<A \
HREF=\"%1\">create your own</A> Web-Shortcuts!" ).arg("exec:/kcmshell ebrowsing") ) \
kdebase/konqueror/about/konq_aboutpage.cc:262:		      "(and do not forget to send a \
complaint to the webmaster!)" ).arg("exec:/kcmshell useragent") ) \
kdebase/konqueror/about/konq_aboutpage.cc:266:		      " Internet \
connection.").arg("exec:/kcmshell proxy") ) \
kdebase/konqueror/sidebar/trees/history_module/history_module.cpp:281:    KRun::run( \
"kcmshell kcmhistory", KURL::List() ); kdebase/konsole/konsole/konsole.cpp:2066:  \
KApplication::kdeinitExec( "kcmshell", args ); kdebase/kwin/workspace.cpp:895:    \
KApplication::kdeinitExec( "kcmshell", configModules(false) ); \
kdebase/kxkb/kxkb.cpp:476:        p << "kcmshell" << "keyboard_layout";

kdeextragear-1/cdbakeoven/cdbosettings/CdboDefaultOpt.cpp:198:	connect(cdboProc, \
SIGNAL(processExited(KProcess*)), this, SLOT(kcmshellDone(KProcess*))); \
kdeextragear-1/cdbakeoven/cdbosettings/CdboDefaultOpt.cpp:205:void \
CdboDefaultOpt::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdbosettings/CdboDefaultOpt.h:59:	void \
kcmshellDone(KProcess *proc); \
kdeextragear-1/cdbakeoven/cdbosettings/CdboTmpDirConfig.cpp:139:		this, \
SLOT(kcmshellDone(KProcess *))); \
kdeextragear-1/cdbakeoven/cdbosettings/CdboTmpDirConfig.cpp:199:void \
CdboTmpDirConfig::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdbosettings/CdboTmpDirConfig.h:60:	void \
kcmshellDone(KProcess *proc); \
kdeextragear-1/cdbakeoven/cdbosetuptool/CdboWizard.cpp:435:void \
CdboWizard::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdbosetuptool/CdboWizard.cpp:447:      			this, \
SLOT(kcmshellDone(KProcess *))); \
kdeextragear-1/cdbakeoven/cdbosetuptool/CdboWizard.h:71:	void kcmshellDone(KProcess \
*proc); kdeextragear-1/cdbakeoven/cdbosetuptool/cdbosetuptool.cpp:281:void \
CdboSetupTool::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdbosetuptool/cdbosetuptool.cpp:64:      			this, \
SLOT(kcmshellDone(KProcess *))); \
kdeextragear-1/cdbakeoven/cdbosetuptool/cdbosetuptool.h:54:	void \
kcmshellDone(KProcess *); \
kdeextragear-1/cdbakeoven/cdboshared/CdboDialogBase.cpp:236:	*cdboProc << "kcmshell" \
<< type << " -caption \"CD Bake Oven\""; \
kdeextragear-1/cdbakeoven/cdboshared/CdboDialogBase.cpp:237:	connect(cdboProc, \
SIGNAL(processExited(KProcess*)), this, SLOT(kcmshellDone(KProcess*))); \
kdeextragear-1/cdbakeoven/cdboshared/CdboDialogBase.cpp:242:void \
CdboDialogBase::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdboshared/CdboDialogBase.h:157:	void kcmshellDone(KProcess \
*proc); kdeextragear-1/cdbakeoven/cdboshared/CdboDialogBase.h:222:     * Pops up \
kcmshell. kdeextragear-1/cdbakeoven/cdboshared/CdboViewPart.cpp:100:void \
CdboViewPart::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdboshared/CdboViewPart.cpp:94:	*cdboProc << "kcmshell" << \
type << " -caption \"CD Bake Oven\""; \
kdeextragear-1/cdbakeoven/cdboshared/CdboViewPart.cpp:95:	connect(cdboProc, \
SIGNAL(processExited(KProcess*)), this, SLOT(kcmshellDone(KProcess*))); \
kdeextragear-1/cdbakeoven/cdboshared/CdboViewPart.h:76:	void kcmshellDone(KProcess \
*proc); kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdbo_konqy_plugins.cpp:130:	connect(cdboProc, \
SIGNAL(processExited(KProcess*)), this, SLOT(kcmshellDone(KProcess*))); \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdbo_konqy_plugins.cpp:137:void \
CdboKonqyPlugins::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdbo_konqy_plugins.cpp:99:	launchCommand("kcmshell \
cdboisoopt cdboburnopt -caption \"CD Bake Oven\""); \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdbo_konqy_plugins.h:50:	void \
kcmshellDone(KProcess *proc); \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdboplugins.cpp:183:	launchCommand("kcmshell \
cdbodefaultopt cdbocdromdevices kcmdf cdboburnopt cdboisoopt cdboaudioopt audiocd \
-caption \"CD Bake Oven\""); \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdboplugins.cpp:230:	connect(cdboProc, \
SIGNAL(processExited(KProcess*)), this, SLOT(kcmshellDone(KProcess*))); \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdboplugins.cpp:237:void \
CdboPlugins::kcmshellDone(KProcess *proc){ \
kdeextragear-1/cdbakeoven/cdboviews/cdboplugins/cdboplugins.h:62:	void \
kcmshellDone(KProcess *proc); kdeextragear-1/k3b/FAQ:33:   it manually with "kdesu \
kcmshell k3bsetup2". kdeextragear-1/k3b/k3bsetup/k3bsetup:20:kdesu kcmshell k3bsetup2
kdeextragear-1/k3b/src/k3b.cpp:1242:  p << "kdesu" << "kcmshell k3bsetup2 --lang " + \
KGlobal::locale()->language(); kdeextragear-1/k3b/src/k3bsystemproblemdialog.cpp:389: \
p << "kdesu" << "kcmshell k3bsetup2 --lang " + KGlobal::locale()->language(); \
kdeextragear-1/k3b/src/option/k3bcddboptiontab.cpp:257:  KRun::runCommand( "kcmshell \
proxy" );

kdeextragear-2/kmldonkey/kmldonkey/kmldonkey.cpp:857:    if \
(KApplication::kdeinitExec("kcmshell", foo, &err))

kdeextragear-3/kdebluetooth/kbluetoothd/kbluetoothd/trayicon.cpp:262:    process << \
"kcmshell" << "kcm_kbluetoothd"; \
kdeextragear-3/kdebluetooth/kbluetoothd/kbluetoothd/trayicon.cpp:274:    process << \
"kdesu" << "--nonewdcop" << "kcmshell" << "kcm_khciconfig";

kdegames/kbackgammon/kbg.cpp:581:	KURLLabel *lab = new KURLLabel("kcmshell \
kcmnotify",

kdegraphics/kmrml/kmrml/mrml_part.cpp:287:                KApplication::kdeinitExec( \
"kcmshell",

kdelibs/kcert/kcertpart.cc:771:p << "kcmshell" << "crypto";
kdelibs/kdecore/README.kiosk:573:See also kcmshell --list for a list of all the base \
names. kdelibs/kdeui/kbugreport.cpp:312:  *m_process << \
QString::fromLatin1("kcmshell") << QString::fromLatin1("email"); \
kdelibs/kdeui/kbugreport.cpp:316:    kdDebug() << "Couldn't start kcmshell.." << \
endl; kdelibs/kdeui/kbugreport.h:60:   * "Configure email" has been clicked - this \
calls kcmshell System/email kdelibs/kdeui/kdepackages.h:196:"kcontrol/kcmshell",
kdelibs/kio/kfile/kfilesharedlg.cpp:199:    proc << KStandardDirs::findExe("kdesu") \
<< "kcmshell" << "fileshare"; kdelibs/kio/kssl/ksslinfodlg.cc:131:  p << "kcmshell" \
<< "crypto";

kdemultimedia/libkcddb/kcmcddb/cddbconfigwidget.cpp:59:    \
KApplication::kdeinitExec("kcmshell", "kcm_useraccount");

kdenetwork/filesharing/advanced/propsdlgplugin/propsdlgshareplugin.cpp:104:    proc \
<< KStandardDirs::findExe("kdesu") << "kcmshell" << "fileshare"; \
kdenetwork/krfb/krfb/configuration.cc:462:	p << "kcmshell" << "Network/kcmkrfb"; \
kdenetwork/wifi/kwifimanager.cpp:481:  startConf << "kdesu" << "kcmshell" << \
"kcmwifi";

kdenonbeta/kcontrol3/modules.cpp:129:  // kcmshell running as root
kdenonbeta/kcontrol3/modules.cpp:149:  // prepare the process to run the kcmshell
kdenonbeta/kcontrol3/modules.cpp:163:  if (cmd.left(8) == "kcmshell")
kdenonbeta/kcontrol3/modules.cpp:182:         *_rootProcess << QString("kcmshell %1 \
--embed %2 --lang %3").arg(cmd).arg(_embedWidget->winId()).arg(KGlobal::locale()->language());
 kdenonbeta/kdedebian/kapture/konsole/konsole.cpp:1980:  KApplication::kdeinitExec( \
"kcmshell", args ); kdenonbeta/kio_freenet/TODO:6:  standard KDE methods (kcmshell?).
kdenonbeta/koncd/src/koncd.cpp:162:	KRun::runCommand( "kcmshell audiocd" );
kdenonbeta/koncd/src/optiondialog.cpp:700:  KRun::runCommand( "kcmshell audiocd" );
kdenonbeta/ksynaptics/README:11:To run the application stand-alone type "kcmshell \
ksynaptics" after installing. kdenonbeta/ksynaptics/man/ksynaptics.1x:5:.B kcmshell \
ksynaptics or kcontrol kdenonbeta/kttsd/README:234:kcmkttsmgr         A KControl \
module for managing KTTSD.  Run using "kcmshell kcmkttsmgr". \
kdenonbeta/kttsd/README:236:kcmkttsd           Old version of KTTSD configuration \
manager.  A KControl module.  Run using "kcmshell kcmkttsd". \
kdenonbeta/kvidmode/kvidmode/kvidmode.cpp:160:  p << "kcmshell" << \
"Peripherals/Display/videomode" kdenonbeta/kvidmode/kvidmode/kvidmode.cpp:186:        \
p << "kcmshell" << "Peripherals/Display/videomode"; \
kdenonbeta/kvidmode/kvidmode/kvidmode.cpp:191:            p << "kcmshell" << \
"Peripherals/Display/gamma"; kdenonbeta/kvidmode/kvidmode/kvidmode.cpp:196:           \
p << "kcmshell" << "Peripherals/Display/monitor";

kdepim/README.Kolab:79:  1. All available addressbook resources as seen in "kcmshell \
kresources", section "kabc" kdepim/kalarm/daemon.cpp:526:	proc << locate("exe", \
QString::fromLatin1("kcmshell")); kdepim/korganizer/actionmanager.cpp:1163:  *proc << \
"kcmshell" << "language";

kdesdk/scripts/completions/zsh/CVS/Entries:2:/_kcmshell/1.6/Fri Jul 25 02:29:19 \
2003// kdesdk/scripts/completions/zsh/_kcmshell:1:#compdef kcmshell=kcmshell \
appletproxy=appletproxy kdesdk/scripts/completions/zsh/_kcmshell:4:if [ "$service" = \
"kcmshell" ]; then

kdeutils/klaptopdaemon/daemondock.cpp:532:	proc << \
KStandardDirs::findExe("kcmshell");

kdewebdev/quanta/src/quanta_init.cpp:1285:  if \
(KStandardDirs::findExe("kcmshell").isNull())



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic