mirror of
https://github.com/KDE/krfb
synced 2026-07-01 07:31:16 -07:00
added dcop stuff from greiser
svn path=/trunk/kdenetwork/krfb/; revision=136620
This commit is contained in:
1
AUTHORS
1
AUTHORS
@@ -1 +1,2 @@
|
|||||||
Tim Jansen <tim@tjansen.de>
|
Tim Jansen <tim@tjansen.de>
|
||||||
|
Ian Reinhart Geiser <geiseri@kde.org>
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
2002-02-14 Tim Jansen <tjansen@tjansen.de>
|
||||||
|
|
||||||
|
* krfb/krfbiface.h: integrated DCOP interface patch by
|
||||||
|
Ian Reinhart Geiser <geiseri@kde.org>. Thanks!
|
||||||
|
|
||||||
2002-02-04 Tim Jansen <tim@tjansen.de>
|
2002-02-04 Tim Jansen <tim@tjansen.de>
|
||||||
|
|
||||||
* replaced x0rfbserver's library with libvncserver
|
* replaced x0rfbserver's library with libvncserver
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
SUBDIRS = libvncserver krfb po doc
|
SUBDIRS = libvncserver krfb po doc
|
||||||
|
|
||||||
EXTRA_DIST = admin AUTHORS COPYING ChangeLog INSTALL README TODO NOTES \
|
EXTRA_DIST = admin AUTHORS COPYING ChangeLog INSTALL README TODO NOTES \
|
||||||
README_KDE3 krfb.lsm
|
krfb.lsm
|
||||||
|
|
||||||
# not a GNU package. You can remove this line, if
|
# not a GNU package. You can remove this line, if
|
||||||
# have all needed files, that a GNU package needs
|
# have all needed files, that a GNU package needs
|
||||||
|
|||||||
11
NOTES
11
NOTES
@@ -15,17 +15,6 @@ Some comments on various aspects of KRfb:
|
|||||||
issues like setting a password
|
issues like setting a password
|
||||||
- design goal of KRfb is to make it as easy to use as possible. I tried to
|
- design goal of KRfb is to make it as easy to use as possible. I tried to
|
||||||
limit functionality whereever possible.
|
limit functionality whereever possible.
|
||||||
- to limit the required testing efforts I try to limit the number of provided
|
|
||||||
codecs.
|
|
||||||
As far as I can tell there are three major classes of VNC clients: the
|
|
||||||
original ones that support RRE, CoRRE and Hextiles, the Tridia ones
|
|
||||||
with additional ZLib and sometimes HexZLib support and the TightVNC one
|
|
||||||
with additional TightVNC encoding. So I will have four primary codecs to
|
|
||||||
support: Raw as a fall-back and for local traffic, Hextiles for original
|
|
||||||
VNC clients, ZLib for the Tridia ones and TightVNC. RRE and CoRRE won't be
|
|
||||||
supported, and probably neither HexZLib. 4 codecs ought to be enough for
|
|
||||||
everybody. TightVNC is the preferred codec and the one that clients should
|
|
||||||
use.
|
|
||||||
- the original x0rfbserver has a features for selecting the port number
|
- the original x0rfbserver has a features for selecting the port number
|
||||||
automatically. I skipped that because it is too complicated on the client
|
automatically. I skipped that because it is too complicated on the client
|
||||||
side, but I this will change when there are mechanisms for inviting people.
|
side, but I this will change when there are mechanisms for inviting people.
|
||||||
|
|||||||
2
ROADMAP
2
ROADMAP
@@ -3,7 +3,7 @@ Version 0.5 (2002/01/02): First release
|
|||||||
- port x0rfbserver with simplified KDE/Qt interface
|
- port x0rfbserver with simplified KDE/Qt interface
|
||||||
|
|
||||||
|
|
||||||
Version 0.6 (2002/02/??): Improve RFB backend
|
Version 0.6 (2002/02/20): Improve RFB backend
|
||||||
- replace x0rfbserver's backend with libvncserver
|
- replace x0rfbserver's backend with libvncserver
|
||||||
<- knotify
|
<- knotify
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
METASOURCES = AUTO
|
METASOURCES = AUTO
|
||||||
|
|
||||||
# Code
|
# Code
|
||||||
noinst_LIBRARIES = kinetd.a
|
noinst_LIBRARIES = libkinetd.a
|
||||||
|
|
||||||
kinetd_a_SOURCES = kinetd.cpp
|
libkinetd_a_SOURCES = kinetd.cpp kinetd.h
|
||||||
kinetd_a_LDADD = $(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI)
|
libkinetd_a_LIBADD = $(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI)
|
||||||
|
|
||||||
# Services
|
# Services
|
||||||
kdedir = $(kde_servicesdir)/kded
|
kdedir = $(kde_servicesdir)/kded
|
||||||
kde_DATA = kdeprintd.desktop
|
kde_DATA = kdeprintd.desktop
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = $(krfb_SOURCES) $(kde_DATA) kinetd.h
|
EXTRA_DIST = $(libkinetd_a_SOURCES) $(kde_DATA)
|
||||||
|
|
||||||
|
|
||||||
KDE_ICON = kinetd
|
KDE_ICON = kinetd
|
||||||
@@ -19,8 +19,6 @@ KDE_ICON = kinetd
|
|||||||
# set the include path for X, qt and KDE
|
# set the include path for X, qt and KDE
|
||||||
INCLUDES= $(all_includes)
|
INCLUDES= $(all_includes)
|
||||||
|
|
||||||
# the library search path.
|
|
||||||
kinetd_a_LDFLAGS = $(all_libraries) $(KDE_RPATH)
|
|
||||||
|
|
||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
METASOURCES = AUTO
|
METASOURCES = AUTO
|
||||||
|
|
||||||
bin_PROGRAMS = krfb
|
bin_PROGRAMS = krfb
|
||||||
krfb_SOURCES = rfbcontroller.cc configuration.cc trayicon.cpp XUpdateScanner.cc main.cpp configurationdialog.ui newconnectiondialog.ui
|
krfb_SOURCES = rfbcontroller.cc configuration.cc trayicon.cpp \
|
||||||
krfb_LDADD = ../libvncserver/libvncserver.a -lz -lpthread -ljpeg -lXtst $(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI) $(LIBSOCKET)
|
XUpdateScanner.cc main.cpp configurationdialog.ui newconnectiondialog.ui \
|
||||||
|
krfbifaceimpl.cc krfbiface.skel
|
||||||
|
krfb_LDADD = ../libvncserver/libvncserver.a -lz -lpthread -ljpeg -lXtst \
|
||||||
|
$(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI) $(LIBSOCKET)
|
||||||
|
|
||||||
EXTRA_DIST = $(krfb_SOURCES) krfb.desktop lo32-app-krfb.png lo16-app-krfb.png rfbcontroller.h eyes-closed24.png eyes-open24.png XUpdateScanner.h trayicon.h configuration.h
|
EXTRA_DIST = $(krfb_SOURCES) krfb.desktop lo32-app-krfb.png \
|
||||||
|
lo16-app-krfb.png rfbcontroller.h eyes-closed24.png eyes-open24.png \
|
||||||
|
XUpdateScanner.h trayicon.h configuration.h krfbiface.h krfbiface.kidl
|
||||||
|
|
||||||
install-data-local:
|
install-data-local:
|
||||||
$(mkinstalldirs) $(kde_appsdir)/Applications/
|
$(mkinstalldirs) $(kde_appsdir)/Applications/
|
||||||
|
|||||||
@@ -131,6 +131,45 @@ int Configuration::port() const {
|
|||||||
return (portNumber < 100) ? (portNumber + 5900) : portNumber;
|
return (portNumber < 100) ? (portNumber + 5900) : portNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Configuration::setOnceConnection(bool oneConnection)
|
||||||
|
{
|
||||||
|
oneConnectionFlag = oneConnection;
|
||||||
|
saveToKConfig();
|
||||||
|
saveToDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Configuration::setAskOnConnect(bool askOnConnect)
|
||||||
|
{
|
||||||
|
askOnConnectFlag = askOnConnect;
|
||||||
|
saveToKConfig();
|
||||||
|
saveToDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Configuration::setAllowDesktopControl(bool allowDesktopControl)
|
||||||
|
{
|
||||||
|
allowDesktopControlFlag = allowDesktopControl;
|
||||||
|
saveToKConfig();
|
||||||
|
saveToDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Configuration::setPassword(QString password)
|
||||||
|
{
|
||||||
|
passwordString = password;
|
||||||
|
saveToKConfig();
|
||||||
|
saveToDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Configuration::setPort(int port)
|
||||||
|
{
|
||||||
|
if ((port >= 5900) && (port < 6000))
|
||||||
|
portNumber = port-5900;
|
||||||
|
else
|
||||||
|
portNumber = port;
|
||||||
|
emit portChanged();
|
||||||
|
saveToKConfig();
|
||||||
|
saveToDialog();
|
||||||
|
}
|
||||||
|
|
||||||
void Configuration::showDialog() {
|
void Configuration::showDialog() {
|
||||||
confDlg.show();
|
confDlg.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,10 +49,15 @@ public:
|
|||||||
bool oneConnection() const;
|
bool oneConnection() const;
|
||||||
bool askOnConnect() const;
|
bool askOnConnect() const;
|
||||||
bool allowDesktopControl() const;
|
bool allowDesktopControl() const;
|
||||||
|
|
||||||
QString password() const;
|
QString password() const;
|
||||||
int port() const;
|
int port() const;
|
||||||
|
|
||||||
|
void setOnceConnection(bool oneConnection);
|
||||||
|
void setAskOnConnect(bool askOnConnect);
|
||||||
|
void setAllowDesktopControl(bool allowDesktopControl);
|
||||||
|
void setPassword(QString password);
|
||||||
|
void setPort(int port);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void portChanged();
|
void portChanged();
|
||||||
|
|
||||||
|
|||||||
24
krfb/krfbiface.h
Normal file
24
krfb/krfbiface.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#ifndef __KRFB_IFACE_H
|
||||||
|
#define __KRFB_IFACE_H
|
||||||
|
|
||||||
|
#include <dcopobject.h>
|
||||||
|
|
||||||
|
class krfbIface : virtual public DCOPObject
|
||||||
|
{
|
||||||
|
K_DCOP
|
||||||
|
k_dcop:
|
||||||
|
virtual void disconnect() = 0;
|
||||||
|
// virtual void setWindowID(int) = 0;
|
||||||
|
virtual void exit() = 0;
|
||||||
|
|
||||||
|
virtual bool oneConnection() = 0;
|
||||||
|
virtual void setOneConnection(bool) = 0;
|
||||||
|
virtual bool askOnConnect() = 0;
|
||||||
|
virtual void setAskOnConnect(bool) = 0;
|
||||||
|
virtual bool allowDesktopControl() = 0;
|
||||||
|
virtual void setAllowDesktopControl(bool) = 0;
|
||||||
|
virtual void setPassword(QString) = 0;
|
||||||
|
virtual int port() = 0;
|
||||||
|
virtual void setPort(int) = 0;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
69
krfb/krfbifaceimpl.cc
Normal file
69
krfb/krfbifaceimpl.cc
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "krfbifaceimpl.h"
|
||||||
|
|
||||||
|
KRfbIfaceImpl::KRfbIfaceImpl(Configuration *c) :
|
||||||
|
DCOPObject("krfbIface"),
|
||||||
|
configuration(c)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void KRfbIfaceImpl::disconnect()
|
||||||
|
{
|
||||||
|
emit connectionClosed();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void KRfbIfaceImpl::setWindowID(int)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void KRfbIfaceImpl::exit()
|
||||||
|
{
|
||||||
|
emit exitApp();
|
||||||
|
}
|
||||||
|
bool KRfbIfaceImpl::oneConnection()
|
||||||
|
{
|
||||||
|
return configuration->oneConnection();
|
||||||
|
}
|
||||||
|
void KRfbIfaceImpl::setOneConnection(bool b)
|
||||||
|
{
|
||||||
|
configuration->setOnceConnection(b);
|
||||||
|
}
|
||||||
|
bool KRfbIfaceImpl::askOnConnect()
|
||||||
|
{
|
||||||
|
return configuration->askOnConnect();
|
||||||
|
}
|
||||||
|
void KRfbIfaceImpl::setAskOnConnect(bool b)
|
||||||
|
{
|
||||||
|
configuration->setAskOnConnect(b);
|
||||||
|
}
|
||||||
|
bool KRfbIfaceImpl::allowDesktopControl()
|
||||||
|
{
|
||||||
|
return configuration->allowDesktopControl();
|
||||||
|
}
|
||||||
|
void KRfbIfaceImpl::setAllowDesktopControl(bool b)
|
||||||
|
{
|
||||||
|
configuration->setAllowDesktopControl(b);
|
||||||
|
}
|
||||||
|
void KRfbIfaceImpl::setPassword(QString password)
|
||||||
|
{
|
||||||
|
configuration->setPassword(password);
|
||||||
|
}
|
||||||
|
int KRfbIfaceImpl::port()
|
||||||
|
{
|
||||||
|
return configuration->port();
|
||||||
|
}
|
||||||
|
void KRfbIfaceImpl::setPort(int port)
|
||||||
|
{
|
||||||
|
configuration->setPort(port);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -17,12 +17,13 @@
|
|||||||
|
|
||||||
#include "trayicon.h"
|
#include "trayicon.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
#include "krfbifaceimpl.h"
|
||||||
#include "rfbcontroller.h"
|
#include "rfbcontroller.h"
|
||||||
|
|
||||||
#include <kpixmap.h>
|
#include <kpixmap.h>
|
||||||
#include <kaction.h>
|
#include <kaction.h>
|
||||||
#include <kdebug.h>
|
#include <kdebug.h>
|
||||||
#include <kapp.h>
|
#include <kapplication.h>
|
||||||
#include <ksystemtray.h>
|
#include <ksystemtray.h>
|
||||||
#include <kcmdlineargs.h>
|
#include <kcmdlineargs.h>
|
||||||
#include <kaboutdata.h>
|
#include <kaboutdata.h>
|
||||||
@@ -73,6 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
"(c) 1999, AT&T Laboratories Cambridge\n",
|
"(c) 1999, AT&T Laboratories Cambridge\n",
|
||||||
0, "http://www.tjansen.de/krfb", "ml@tjansen.de");
|
0, "http://www.tjansen.de/krfb", "ml@tjansen.de");
|
||||||
aboutData.addAuthor("Tim Jansen", "", "tim@tjansen.de");
|
aboutData.addAuthor("Tim Jansen", "", "tim@tjansen.de");
|
||||||
|
aboutData.addAuthor("Ian Reinhart Geiser", "DCOP interface", "geiseri@kde.org");
|
||||||
aboutData.addCredit("Johannes E. Schindelin",
|
aboutData.addCredit("Johannes E. Schindelin",
|
||||||
I18N_NOOP("libvncserver"));
|
I18N_NOOP("libvncserver"));
|
||||||
aboutData.addCredit("Const Kaplinsky",
|
aboutData.addCredit("Const Kaplinsky",
|
||||||
@@ -117,6 +119,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
TrayIcon trayicon(new KAboutApplication(&aboutData),
|
TrayIcon trayicon(new KAboutApplication(&aboutData),
|
||||||
config);
|
config);
|
||||||
|
KRfbIfaceImpl dcopiface(config);
|
||||||
RFBController controller(config);
|
RFBController controller(config);
|
||||||
|
|
||||||
QObject::connect(&app, SIGNAL(lastWindowClosed()),
|
QObject::connect(&app, SIGNAL(lastWindowClosed()),
|
||||||
@@ -131,6 +134,12 @@ int main(int argc, char *argv[])
|
|||||||
QObject::connect(&trayicon, SIGNAL(showConfigure()),
|
QObject::connect(&trayicon, SIGNAL(showConfigure()),
|
||||||
config, SLOT(showDialog()));
|
config, SLOT(showDialog()));
|
||||||
|
|
||||||
|
QObject::connect(&dcopiface, SIGNAL(connectionClosed()),
|
||||||
|
&controller, SLOT(closeConnection()));
|
||||||
|
|
||||||
|
QObject::connect(&dcopiface, SIGNAL(exitApp()),
|
||||||
|
&controller, SLOT(quit()));
|
||||||
|
|
||||||
QObject::connect(config, SIGNAL(portChanged()),
|
QObject::connect(config, SIGNAL(portChanged()),
|
||||||
&controller, SLOT(rebind()));
|
&controller, SLOT(rebind()));
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <kapp.h>
|
#include <kapplication.h>
|
||||||
#include <kdebug.h>
|
#include <kdebug.h>
|
||||||
#include <kmessagebox.h>
|
#include <kmessagebox.h>
|
||||||
#include <klocale.h>
|
#include <klocale.h>
|
||||||
@@ -119,6 +119,31 @@ KeyboardEvent::KeyboardEvent(bool d, KeySym k) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeyboardEvent::initKeycodes() {
|
||||||
|
KeySym key,*keymap;
|
||||||
|
int i,j,minkey,maxkey,syms_per_keycode;
|
||||||
|
|
||||||
|
memset(modifiers,-1,sizeof(modifiers));
|
||||||
|
|
||||||
|
XDisplayKeycodes(dpy,&minkey,&maxkey);
|
||||||
|
keymap=XGetKeyboardMapping(dpy,minkey,(maxkey - minkey + 1),&syms_per_keycode);
|
||||||
|
|
||||||
|
for (i = minkey; i <= maxkey; i++)
|
||||||
|
for(j=0;j<syms_per_keycode;j++) {
|
||||||
|
key=keymap[(i-minkey)*syms_per_keycode+j];
|
||||||
|
if(key>=' ' && key<0x100 && i==XKeysymToKeycode(dpy,key)) {
|
||||||
|
keycodes[key]=i;
|
||||||
|
modifiers[key]=j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leftShiftCode = XKeysymToKeycode(dpy,XK_Shift_L);
|
||||||
|
rightShiftCode = XKeysymToKeycode(dpy,XK_Shift_R);
|
||||||
|
altGrCode = XKeysymToKeycode(dpy,XK_Mode_switch);
|
||||||
|
|
||||||
|
XFree ((char *)keymap);
|
||||||
|
}
|
||||||
|
|
||||||
/* this function adjusts the modifiers according to mod (as from modifiers) and ModifierState */
|
/* this function adjusts the modifiers according to mod (as from modifiers) and ModifierState */
|
||||||
void KeyboardEvent::tweakModifiers(char mod, bool down) {
|
void KeyboardEvent::tweakModifiers(char mod, bool down) {
|
||||||
|
|
||||||
@@ -147,31 +172,6 @@ void KeyboardEvent::tweakModifiers(char mod, bool down) {
|
|||||||
down, CurrentTime);
|
down, CurrentTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyboardEvent::initKeycodes() {
|
|
||||||
KeySym key,*keymap;
|
|
||||||
int i,j,minkey,maxkey,syms_per_keycode;
|
|
||||||
|
|
||||||
memset(modifiers,-1,sizeof(modifiers));
|
|
||||||
|
|
||||||
XDisplayKeycodes(dpy,&minkey,&maxkey);
|
|
||||||
keymap=XGetKeyboardMapping(dpy,minkey,(maxkey - minkey + 1),&syms_per_keycode);
|
|
||||||
|
|
||||||
for (i = minkey; i <= maxkey; i++)
|
|
||||||
for(j=0;j<syms_per_keycode;j++) {
|
|
||||||
key=keymap[(i-minkey)*syms_per_keycode+j];
|
|
||||||
if(key>=' ' && key<0x100 && i==XKeysymToKeycode(dpy,key)) {
|
|
||||||
keycodes[key]=i;
|
|
||||||
modifiers[key]=j;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
leftShiftCode = XKeysymToKeycode(dpy,XK_Shift_L);
|
|
||||||
rightShiftCode = XKeysymToKeycode(dpy,XK_Shift_R);
|
|
||||||
altGrCode = XKeysymToKeycode(dpy,XK_Mode_switch);
|
|
||||||
|
|
||||||
XFree ((char *)keymap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void KeyboardEvent::exec() {
|
void KeyboardEvent::exec() {
|
||||||
#define ADJUSTMOD(sym,state) \
|
#define ADJUSTMOD(sym,state) \
|
||||||
if(keySym==sym) { if(down) ModifierState|=state; else ModifierState&=~state; }
|
if(keySym==sym) { if(down) ModifierState|=state; else ModifierState&=~state; }
|
||||||
|
|||||||
Reference in New Issue
Block a user