Added DCOP interface.

svn path=/trunk/kdebase/konsole/; revision=118698
wilder-portage
Stephan Binner 25 years ago
parent 35763db331
commit a38bf5e90a
  1. 2
      konsole/Makefile.am
  2. 39
      konsole/konsole.cpp
  3. 11
      konsole/konsole.h
  4. 22
      konsole/konsoleiface.h
  5. 7
      konsole/main.cpp

@ -46,7 +46,7 @@ konsole_la_LDFLAGS = $(all_libraries) -module -avoid-version
# konsole executable - has all the sources, doesn't link kparts, saves startup time
konsole_SOURCES = TEPty.cpp BlockArray.cpp main.cpp konsole.cpp schema.cpp session.cpp TEWidget.cpp TEmuVt102.cpp \
TEScreen.cpp TEmulation.cpp TEHistory.cpp keytrans.cpp
TEScreen.cpp TEmulation.cpp TEHistory.cpp keytrans.cpp konsoleiface.skel
konsole_LDADD = $(LIB_KDEUI) $(LIB_KSYCOCA) $(LIBUTEMPTER) $(LIBUTIL) $(LIB_KFILE) @XTESTLIB@
konsole_LDFLAGS = $(all_libraries) $(KDE_RPATH)

@ -95,7 +95,7 @@ Time to start a requirement list.
#include <klineeditdlg.h>
#include <kdebug.h>
#include <kipc.h>
#include <dcopclient.h>
#include <klocale.h>
#include <sys/wait.h>
@ -162,7 +162,8 @@ const char *fonts[] = {
Konsole::Konsole(const char* name, const QString& _program, QStrList & _args, int histon,
bool menubaron, bool toolbaron, bool frameon, bool scrollbaron,
const QString &_title, QCString type, const QString &_term, bool b_inRestore)
:KMainWindow(0, name)
:KMainWindow(0, name),
DCOPObject( "KonsoleIface" )
,m_defaultSession(0)
,te(0)
,se(0)
@ -311,6 +312,12 @@ Konsole::Konsole(const char* name, const QString& _program, QStrList & _args, in
//KONSOLEDEBUG<<"Konsole ctor() ends "<<time.elapsed()<<" msecs elapsed"<<endl;
//KONSOLEDEBUG<<"Konsole ctor(): done"<<endl;
// Register with DCOP
if ( !kapp->dcopClient()->isRegistered() ) {
kapp->dcopClient()->registerAs( "konsole" );
kapp->dcopClient()->setDefaultObject( objId() );
}
}
Konsole::~Konsole()
@ -1407,16 +1414,32 @@ void Konsole::addSession(TESession* s)
session2button.insert(s,ktb);
}
/**
Activates a session (from the menu or by pressing a button)
*/
void Konsole::setActiveSession(uint sessionNo)
int Konsole::currentSession()
{
if (sessionNo>=sessions.count())
uint counter=0;
uint active=0;
sessions.first();
while(counter < sessions.count())
{
if (sessions.current()==se)
active=counter;
sessions.next();
counter++;
}
return active+1;
}
void Konsole::setCurrentSession(int sessionNo)
{
if (sessionNo>sessions.count())
return;
activateSession( sessions.at(sessionNo) );
activateSession( sessions.at(sessionNo-1) );
}
/**
Activates a session (from the menu or by pressing a button)
*/
void Konsole::activateSession()
{
TESession* s = NULL;

@ -35,6 +35,8 @@
#include "session.h"
#include "schema.h"
#include "konsoleiface.h"
#undef PACKAGE
#undef VERSION
#define PACKAGE "konsole"
@ -46,7 +48,7 @@ class QCheckBox;
// Defined in main.C
const char *konsole_shell(QStrList &args);
class Konsole : public KMainWindow
class Konsole : public KMainWindow, virtual public KonsoleIface
{
Q_OBJECT
@ -57,7 +59,6 @@ public:
bool menubaron, bool toolbaron, bool frameon, bool scrollbaron, const QString & _title,
QCString type = 0, const QString &_term=QString::null, bool b_inRestore = false);
~Konsole();
void setActiveSession(uint sessionNo);
void setColLin(int columns, int lines);
void setFullScreen(bool on);
void initFullScreen();
@ -69,6 +70,12 @@ public:
void run();
// DCOP functions
int currentSession();
int sessionCount() { return sessions.count(); }
void setCurrentSession(int sessionNo);
public slots:
void makeGUI();

@ -0,0 +1,22 @@
#ifndef KONSOLEIFACE_H
#define KONSOLEIFACE_H
#include <dcopobject.h>
class KonsoleIface : virtual public DCOPObject
{
K_DCOP
k_dcop:
virtual int sessionCount() = 0;
virtual int currentSession() = 0;
virtual void setCurrentSession( int ) = 0;
virtual void nextSession() = 0;
virtual void prevSession() = 0;
virtual void newSession() = 0;
};
#endif // KONSOLEIFACE_H

@ -25,7 +25,6 @@
#include <kcmdlineargs.h>
#include <kimageio.h>
#include <kdebug.h>
#include <dcopclient.h>
#include "konsole.h"
static const char *description =
@ -270,10 +269,6 @@ int main(int argc, char* argv[])
// ///////////////////////////////////////////////
// a.dcopClient()->registerAs(a.name()); //FIXME: Experimental
// ///////////////////////////////////////////////
// Ignore SIGHUP so that we don't get killed when
// our parent-shell gets closed.
signal(SIGHUP, SIG_IGN);
@ -335,7 +330,7 @@ int main(int argc, char* argv[])
m->initSessionKeyTab(sessionconfig->readEntry(key));
counter++;
}
m->setActiveSession( sessionconfig->readNumEntry("ActiveSession",0) );
m->setCurrentSession( sessionconfig->readNumEntry("ActiveSession",0)+1 );
ksm->konsole = m;
ksm->konsole->initFullScreen();
// works only for the first one, but there won't be more.

Loading…
Cancel
Save