summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt10
-rw-r--r--Debug/3rdparty/qtsingleapplication/subdir.mk39
-rw-r--r--Debug/makefile95
-rw-r--r--Debug/objects.mk7
-rw-r--r--Debug/sources.mk63
-rw-r--r--Debug/src/core/subdir.mk39
-rw-r--r--Debug/src/gui/subdir.mk75
-rw-r--r--Debug/src/net/subdir.mk48
-rw-r--r--Debug/src/subdir.mk36
-rw-r--r--Debug/src/util/CertManager.d6
-rw-r--r--Debug/src/util/subdir.mk51
-rw-r--r--doc/LaTeX/pvs-doc.aux140
-rw-r--r--doc/LaTeX/pvs-doc.idx34
-rw-r--r--doc/LaTeX/pvs-doc.log1065
-rw-r--r--doc/LaTeX/pvs-doc.out56
-rw-r--r--doc/LaTeX/pvs-doc.pdfbin0 -> 2362812 bytes
-rw-r--r--doc/LaTeX/pvs-doc.toc65
-rw-r--r--doc/LaTeX/zusfassung.log333
-rw-r--r--icons/gearsgo.pngbin0 -> 5692 bytes
-rw-r--r--icons/gearsstop.pngbin0 -> 5051 bytes
-rw-r--r--pvsmgr.qrc1
-rw-r--r--src/core/pvsClient.cpp20
-rw-r--r--src/core/pvsClient.h13
-rw-r--r--src/core/pvsConnectionManager.cpp42
-rw-r--r--src/gui/connectionWindow.cpp29
-rw-r--r--src/gui/connectionWindow.h1
-rw-r--r--src/gui/dialog.cpp2
-rw-r--r--src/gui/mainWindow.cpp51
-rw-r--r--src/gui/mainWindow.h9
-rw-r--r--src/gui/processWidget.cpp98
-rw-r--r--src/gui/processWidget.h35
-rw-r--r--src/gui/processesDialog.cpp62
-rw-r--r--src/gui/processesDialog.h37
-rw-r--r--src/gui/processesStartDialog.cpp75
-rw-r--r--src/gui/processesStartDialog.h31
-rw-r--r--src/gui/ui/mainwindow.ui10
-rw-r--r--src/gui/ui/mainwindowtouch.ui10
-rw-r--r--src/gui/ui/processWidget.ui227
-rw-r--r--src/gui/ui/processesDialog.ui92
-rw-r--r--src/gui/ui/processesStartDialog.ui69
-rwxr-xr-xsrc/pvs.cpp83
-rwxr-xr-xsrc/pvs.h5
42 files changed, 3152 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 61574cf..433afb9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,6 +76,9 @@ SET( PVSMGR_SRCS
src/util/TextFile.cpp
src/util/serviceDiscoveryUtil.cpp
src/gui/aboutDialog.cpp
+ src/gui/processesDialog.cpp
+ src/gui/processesStartDialog.cpp
+ src/gui/processWidget.cpp
)
# pvs
@@ -121,16 +124,20 @@ SET( PVSMGR_UIS
src/gui/ui/mainwindow.ui
src/gui/ui/profileDialog.ui
src/gui/ui/dialog.ui
+ src/gui/ui/processesStartDialog.ui
src/gui/ui/projectionDialog.ui
src/gui/ui/aboutDialog.ui
src/gui/ui/serverChatDialog.ui
src/gui/ui/clientFileSendDialog.ui
+ src/gui/ui/processesDialog.ui
+ src/gui/ui/processWidget.ui
)
SET( PVSMGRTOUCH_UIS
src/gui/ui/mainwindowtouch.ui
src/gui/ui/profileDialog.ui
src/gui/ui/dialog.ui
+ src/gui/ui/processesStartDialog.ui
src/gui/ui/projectionDialog.ui
src/gui/ui/aboutDialog.ui
src/gui/ui/serverChatDialog.ui
@@ -170,6 +177,7 @@ SET( PVSMGR_MOC_HDRS
src/gui/connectionFrame.h
src/gui/profileDialog.h
src/gui/dialog.h
+ src/gui/processesStartDialog.h
src/gui/projectionDialog.h
src/gui/serverChatDialog.h
src/gui/serverFileTransfert.h
@@ -180,6 +188,8 @@ SET( PVSMGR_MOC_HDRS
src/net/pvsServiceBroadcast.h
src/net/SslServer.h
src/gui/aboutDialog.h
+ src/gui/processesDialog.h
+ src/gui/processWidget.h
)
SET( PVS_MOC_HDRS
diff --git a/Debug/3rdparty/qtsingleapplication/subdir.mk b/Debug/3rdparty/qtsingleapplication/subdir.mk
new file mode 100644
index 0000000..78466e5
--- /dev/null
+++ b/Debug/3rdparty/qtsingleapplication/subdir.mk
@@ -0,0 +1,39 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../3rdparty/qtsingleapplication/qtlocalpeer.cpp \
+../3rdparty/qtsingleapplication/qtlockedfile.cpp \
+../3rdparty/qtsingleapplication/qtlockedfile_unix.cpp \
+../3rdparty/qtsingleapplication/qtlockedfile_win.cpp \
+../3rdparty/qtsingleapplication/qtsingleapplication.cpp \
+../3rdparty/qtsingleapplication/qtsinglecoreapplication.cpp
+
+OBJS += \
+./3rdparty/qtsingleapplication/qtlocalpeer.o \
+./3rdparty/qtsingleapplication/qtlockedfile.o \
+./3rdparty/qtsingleapplication/qtlockedfile_unix.o \
+./3rdparty/qtsingleapplication/qtlockedfile_win.o \
+./3rdparty/qtsingleapplication/qtsingleapplication.o \
+./3rdparty/qtsingleapplication/qtsinglecoreapplication.o
+
+CPP_DEPS += \
+./3rdparty/qtsingleapplication/qtlocalpeer.d \
+./3rdparty/qtsingleapplication/qtlockedfile.d \
+./3rdparty/qtsingleapplication/qtlockedfile_unix.d \
+./3rdparty/qtsingleapplication/qtlockedfile_win.d \
+./3rdparty/qtsingleapplication/qtsingleapplication.d \
+./3rdparty/qtsingleapplication/qtsinglecoreapplication.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+3rdparty/qtsingleapplication/%.o: ../3rdparty/qtsingleapplication/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/makefile b/Debug/makefile
new file mode 100644
index 0000000..10c4677
--- /dev/null
+++ b/Debug/makefile
@@ -0,0 +1,95 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+-include ../makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include subdir.mk
+-include src/util/subdir.mk
+-include src/subdir.mk
+-include src/net/subdir.mk
+-include src/gui/subdir.mk
+-include src/core/subdir.mk
+-include build/src/util/subdir.mk
+-include build/src/net/subdir.mk
+-include build/src/subdir.mk
+-include build/src/gui/subdir.mk
+-include build/src/core/subdir.mk
+-include build/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/src/util/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/src/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/src/net/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/src/gui/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/src/core/subdir.mk
+-include build/CMakeFiles/pvsmgrtouch.dir/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/src/util/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/src/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/src/net/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/src/gui/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/src/core/subdir.mk
+-include build/CMakeFiles/pvsmgr.dir/subdir.mk
+-include build/CMakeFiles/pvsgui.dir/src/util/subdir.mk
+-include build/CMakeFiles/pvsgui.dir/src/subdir.mk
+-include build/CMakeFiles/pvsgui.dir/src/gui/subdir.mk
+-include build/CMakeFiles/pvsgui.dir/subdir.mk
+-include build/CMakeFiles/pvsgui.dir/3rdparty/qtsingleapplication/subdir.mk
+-include build/CMakeFiles/pvs.dir/src/util/subdir.mk
+-include build/CMakeFiles/pvs.dir/src/subdir.mk
+-include build/CMakeFiles/pvs.dir/src/net/subdir.mk
+-include build/CMakeFiles/pvs.dir/src/core/subdir.mk
+-include build/CMakeFiles/pvs.dir/subdir.mk
+-include build/CMakeFiles/CompilerIdCXX/subdir.mk
+-include build/CMakeFiles/CompilerIdC/subdir.mk
+-include build/3rdparty/qtsingleapplication/subdir.mk
+-include 3rdparty/qtsingleapplication/subdir.mk
+-include objects.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(strip $(C++_DEPS)),)
+-include $(C++_DEPS)
+endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
+ifneq ($(strip $(CC_DEPS)),)
+-include $(CC_DEPS)
+endif
+ifneq ($(strip $(CPP_DEPS)),)
+-include $(CPP_DEPS)
+endif
+ifneq ($(strip $(CXX_DEPS)),)
+-include $(CXX_DEPS)
+endif
+ifneq ($(strip $(C_UPPER_DEPS)),)
+-include $(C_UPPER_DEPS)
+endif
+endif
+
+-include ../makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables
+
+# All Target
+all: pvs
+
+# Tool invocations
+pvs: $(OBJS) $(USER_OBJS)
+ @echo 'Building target: $@'
+ @echo 'Invoking: GCC C++ Linker'
+ g++ -o"pvs" $(OBJS) $(USER_OBJS) $(LIBS)
+ @echo 'Finished building target: $@'
+ @echo ' '
+
+# Other Targets
+clean:
+ -$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) pvs
+ -@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include ../makefile.targets
diff --git a/Debug/objects.mk b/Debug/objects.mk
new file mode 100644
index 0000000..224ef68
--- /dev/null
+++ b/Debug/objects.mk
@@ -0,0 +1,7 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+USER_OBJS :=
+
+LIBS :=
diff --git a/Debug/sources.mk b/Debug/sources.mk
new file mode 100644
index 0000000..6404385
--- /dev/null
+++ b/Debug/sources.mk
@@ -0,0 +1,63 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+O_SRCS :=
+CPP_SRCS :=
+C_UPPER_SRCS :=
+C_SRCS :=
+S_UPPER_SRCS :=
+OBJ_SRCS :=
+ASM_SRCS :=
+CXX_SRCS :=
+C++_SRCS :=
+CC_SRCS :=
+OBJS :=
+C++_DEPS :=
+C_DEPS :=
+CC_DEPS :=
+CPP_DEPS :=
+EXECUTABLES :=
+CXX_DEPS :=
+C_UPPER_DEPS :=
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+src/util \
+src \
+src/net \
+src/gui \
+src/core \
+build/src/util \
+build/src/net \
+build/src \
+build/src/gui \
+build/src/core \
+build \
+build/CMakeFiles/pvsmgrtouch.dir/src/util \
+build/CMakeFiles/pvsmgrtouch.dir/src \
+build/CMakeFiles/pvsmgrtouch.dir/src/net \
+build/CMakeFiles/pvsmgrtouch.dir/src/gui \
+build/CMakeFiles/pvsmgrtouch.dir/src/core \
+build/CMakeFiles/pvsmgrtouch.dir \
+build/CMakeFiles/pvsmgr.dir/src/util \
+build/CMakeFiles/pvsmgr.dir/src \
+build/CMakeFiles/pvsmgr.dir/src/net \
+build/CMakeFiles/pvsmgr.dir/src/gui \
+build/CMakeFiles/pvsmgr.dir/src/core \
+build/CMakeFiles/pvsmgr.dir \
+build/CMakeFiles/pvsgui.dir/src/util \
+build/CMakeFiles/pvsgui.dir/src \
+build/CMakeFiles/pvsgui.dir/src/gui \
+build/CMakeFiles/pvsgui.dir \
+build/CMakeFiles/pvsgui.dir/3rdparty/qtsingleapplication \
+build/CMakeFiles/pvs.dir/src/util \
+build/CMakeFiles/pvs.dir/src \
+build/CMakeFiles/pvs.dir/src/net \
+build/CMakeFiles/pvs.dir/src/core \
+build/CMakeFiles/pvs.dir \
+build/CMakeFiles/CompilerIdCXX \
+build/CMakeFiles/CompilerIdC \
+build/3rdparty/qtsingleapplication \
+3rdparty/qtsingleapplication \
+
diff --git a/Debug/src/core/subdir.mk b/Debug/src/core/subdir.mk
new file mode 100644
index 0000000..ccc513d
--- /dev/null
+++ b/Debug/src/core/subdir.mk
@@ -0,0 +1,39 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../src/core/pvsChatClient.cpp \
+../src/core/pvsChatMsg.cpp \
+../src/core/pvsClient.cpp \
+../src/core/pvsConnectionManager.cpp \
+../src/core/pvsServer.cpp \
+../src/core/vncConnection.cpp
+
+OBJS += \
+./src/core/pvsChatClient.o \
+./src/core/pvsChatMsg.o \
+./src/core/pvsClient.o \
+./src/core/pvsConnectionManager.o \
+./src/core/pvsServer.o \
+./src/core/vncConnection.o
+
+CPP_DEPS += \
+./src/core/pvsChatClient.d \
+./src/core/pvsChatMsg.d \
+./src/core/pvsClient.d \
+./src/core/pvsConnectionManager.d \
+./src/core/pvsServer.d \
+./src/core/vncConnection.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+src/core/%.o: ../src/core/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/src/gui/subdir.mk b/Debug/src/gui/subdir.mk
new file mode 100644
index 0000000..7b2f649
--- /dev/null
+++ b/Debug/src/gui/subdir.mk
@@ -0,0 +1,75 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../src/gui/aboutDialog.cpp \
+../src/gui/clientChatDialog.cpp \
+../src/gui/clientConfigDialog.cpp \
+../src/gui/clientFileReceiveDialog.cpp \
+../src/gui/clientFileSendDialog.cpp \
+../src/gui/clientInfoDialog.cpp \
+../src/gui/clientVNCViewer.cpp \
+../src/gui/connectionDialog.cpp \
+../src/gui/connectionFrame.cpp \
+../src/gui/connectionList.cpp \
+../src/gui/connectionWindow.cpp \
+../src/gui/dialog.cpp \
+../src/gui/frame.cpp \
+../src/gui/mainWindow.cpp \
+../src/gui/profileDialog.cpp \
+../src/gui/projectionDialog.cpp \
+../src/gui/serverChatDialog.cpp \
+../src/gui/serverFileTransfert.cpp
+
+OBJS += \
+./src/gui/aboutDialog.o \
+./src/gui/clientChatDialog.o \
+./src/gui/clientConfigDialog.o \
+./src/gui/clientFileReceiveDialog.o \
+./src/gui/clientFileSendDialog.o \
+./src/gui/clientInfoDialog.o \
+./src/gui/clientVNCViewer.o \
+./src/gui/connectionDialog.o \
+./src/gui/connectionFrame.o \
+./src/gui/connectionList.o \
+./src/gui/connectionWindow.o \
+./src/gui/dialog.o \
+./src/gui/frame.o \
+./src/gui/mainWindow.o \
+./src/gui/profileDialog.o \
+./src/gui/projectionDialog.o \
+./src/gui/serverChatDialog.o \
+./src/gui/serverFileTransfert.o
+
+CPP_DEPS += \
+./src/gui/aboutDialog.d \
+./src/gui/clientChatDialog.d \
+./src/gui/clientConfigDialog.d \
+./src/gui/clientFileReceiveDialog.d \
+./src/gui/clientFileSendDialog.d \
+./src/gui/clientInfoDialog.d \
+./src/gui/clientVNCViewer.d \
+./src/gui/connectionDialog.d \
+./src/gui/connectionFrame.d \
+./src/gui/connectionList.d \
+./src/gui/connectionWindow.d \
+./src/gui/dialog.d \
+./src/gui/frame.d \
+./src/gui/mainWindow.d \
+./src/gui/profileDialog.d \
+./src/gui/projectionDialog.d \
+./src/gui/serverChatDialog.d \
+./src/gui/serverFileTransfert.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+src/gui/%.o: ../src/gui/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/src/net/subdir.mk b/Debug/src/net/subdir.mk
new file mode 100644
index 0000000..d39493d
--- /dev/null
+++ b/Debug/src/net/subdir.mk
@@ -0,0 +1,48 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../src/net/SslServer.cpp \
+../src/net/pvsClientConnection.cpp \
+../src/net/pvsDiscoveredServer.cpp \
+../src/net/pvsListenServer.cpp \
+../src/net/pvsLocalhostCommunicator.cpp \
+../src/net/pvsMsg.cpp \
+../src/net/pvsServerConnection.cpp \
+../src/net/pvsServiceBroadcast.cpp \
+../src/net/pvsServiceDiscovery.cpp
+
+OBJS += \
+./src/net/SslServer.o \
+./src/net/pvsClientConnection.o \
+./src/net/pvsDiscoveredServer.o \
+./src/net/pvsListenServer.o \
+./src/net/pvsLocalhostCommunicator.o \
+./src/net/pvsMsg.o \
+./src/net/pvsServerConnection.o \
+./src/net/pvsServiceBroadcast.o \
+./src/net/pvsServiceDiscovery.o
+
+CPP_DEPS += \
+./src/net/SslServer.d \
+./src/net/pvsClientConnection.d \
+./src/net/pvsDiscoveredServer.d \
+./src/net/pvsListenServer.d \
+./src/net/pvsLocalhostCommunicator.d \
+./src/net/pvsMsg.d \
+./src/net/pvsServerConnection.d \
+./src/net/pvsServiceBroadcast.d \
+./src/net/pvsServiceDiscovery.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+src/net/%.o: ../src/net/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/src/subdir.mk b/Debug/src/subdir.mk
new file mode 100644
index 0000000..3e59ad8
--- /dev/null
+++ b/Debug/src/subdir.mk
@@ -0,0 +1,36 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../src/pvs.cpp \
+../src/pvsDaemon.cpp \
+../src/pvsgui.cpp \
+../src/pvsmgr.cpp \
+../src/pvsmgrtouch.cpp
+
+OBJS += \
+./src/pvs.o \
+./src/pvsDaemon.o \
+./src/pvsgui.o \
+./src/pvsmgr.o \
+./src/pvsmgrtouch.o
+
+CPP_DEPS += \
+./src/pvs.d \
+./src/pvsDaemon.d \
+./src/pvsgui.d \
+./src/pvsmgr.d \
+./src/pvsmgrtouch.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+src/%.o: ../src/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/src/util/CertManager.d b/Debug/src/util/CertManager.d
new file mode 100644
index 0000000..647429e
--- /dev/null
+++ b/Debug/src/util/CertManager.d
@@ -0,0 +1,6 @@
+src/util/CertManager.d src/util/CertManager.o: \
+ ../src/util/CertManager.cpp ../src/util/CertManager.h ../src/util/util.h
+
+../src/util/CertManager.h:
+
+../src/util/util.h:
diff --git a/Debug/src/util/subdir.mk b/Debug/src/util/subdir.mk
new file mode 100644
index 0000000..a5c42a6
--- /dev/null
+++ b/Debug/src/util/subdir.mk
@@ -0,0 +1,51 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+CPP_SRCS += \
+../src/util/CertManager.cpp \
+../src/util/TextFile.cpp \
+../src/util/clientGUIUtils.cpp \
+../src/util/clientGUIUtils_Win32.cpp \
+../src/util/clientGUIUtils_X11.cpp \
+../src/util/consoleLogger.cpp \
+../src/util/serviceDiscoveryUtil.cpp \
+../src/util/timeUtil.cpp \
+../src/util/util.cpp \
+../src/util/vncClientThread.cpp
+
+OBJS += \
+./src/util/CertManager.o \
+./src/util/TextFile.o \
+./src/util/clientGUIUtils.o \
+./src/util/clientGUIUtils_Win32.o \
+./src/util/clientGUIUtils_X11.o \
+./src/util/consoleLogger.o \
+./src/util/serviceDiscoveryUtil.o \
+./src/util/timeUtil.o \
+./src/util/util.o \
+./src/util/vncClientThread.o
+
+CPP_DEPS += \
+./src/util/CertManager.d \
+./src/util/TextFile.d \
+./src/util/clientGUIUtils.d \
+./src/util/clientGUIUtils_Win32.d \
+./src/util/clientGUIUtils_X11.d \
+./src/util/consoleLogger.d \
+./src/util/serviceDiscoveryUtil.d \
+./src/util/timeUtil.d \
+./src/util/util.d \
+./src/util/vncClientThread.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+src/util/%.o: ../src/util/%.cpp
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C++ Compiler'
+ g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/doc/LaTeX/pvs-doc.aux b/doc/LaTeX/pvs-doc.aux
new file mode 100644
index 0000000..604ccf1
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.aux
@@ -0,0 +1,140 @@
+\relax
+\catcode`"\active
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax
+\fi
+
+\select@language{ngerman}
+\@writefile{toc}{\select@language{ngerman}}
+\@writefile{lof}{\select@language{ngerman}}
+\@writefile{lot}{\select@language{ngerman}}
+\@writefile{toc}{\contentsline {chapter}{Inhaltsverzeichnis}{I}{section*.1}}
+\@writefile{toc}{\contentsline {part}{I\hspace {1em}Idee und \IeC {\"U}berblick}{1}{part.1}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {1}Idee}{3}{chapter.1}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\newlabel{einleitung}{{1}{3}{Idee\relax }{chapter.1}{}}
+\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Student Control Panel des Edubuntu-Pakets, welches im Umfeld von Linux-Terminalservern eingesetzt werden kann.}}{3}{figure.1.1}}
+\newlabel{uscp}{{1.1}{3}{Student Control Panel des Edubuntu-Pakets, welches im Umfeld von Linux-Terminalservern eingesetzt werden kann.\label {uscp}\relax }{figure.1.1}{}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {2}Funktionen eines Software-Video-Switchs}{5}{chapter.2}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\newlabel{funktionen}{{2}{5}{Funktionen eines Software-Video-Switchs\relax }{chapter.2}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.1}W\IeC {\"u}nschenswerte Basisfunktionen}{5}{section.2.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Student Control Panel des Edubuntu-Pakets, welches im Umfeld von Linux-Terminalservern eingesetzt werden kann.}}{5}{figure.2.1}}
+\newlabel{uscp}{{2.1}{5}{Student Control Panel des Edubuntu-Pakets, welches im Umfeld von Linux-Terminalservern eingesetzt werden kann.\label {uscp}\relax }{figure.2.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {2.2}Funktionserweiterungen}{5}{section.2.2}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {3}Aufbau dieses Handbuchs}{7}{chapter.3}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\newlabel{aufbau}{{3}{7}{Aufbau dieses Handbuchs\relax }{chapter.3}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.1}Heraushebungen und Formatierungen}{7}{section.3.1}}
+\@writefile{toc}{\contentsline {part}{II\hspace {1em}Bedienungsanleitung}{9}{part.2}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {4}PVS-Steuerkonsole}{11}{chapter.4}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {4.1}Allgemein}{11}{section.4.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Die PVS-Steuerkonsole}}{11}{figure.4.1}}
+\newlabel{fig:pvsmgra}{{4.1}{11}{Die PVS-Steuerkonsole\relax }{figure.4.1}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Die Client-Liste}{12}{subsection.4.1.1}}
+\newlabel{clientliste}{{4.1.1}{12}{Die Client-Liste\relax }{subsection.4.1.1}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.2}Die VNC-Frames}{12}{subsection.4.1.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Dummy und Nicht Dummy Frames}}{13}{figure.4.2}}
+\newlabel{fig:pvsdummy}{{4.2}{13}{Dummy und Nicht Dummy Frames\relax }{figure.4.2}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.3}Tastenk\IeC {\"u}rzel f\IeC {\"u}r PVS-Server}{14}{subsection.4.1.3}}
+\newlabel{Taste}{{4.1.3}{14}{Tastenkürzel für PVS-Server\relax }{subsection.4.1.3}{}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {5}PVS-Client}{15}{chapter.5}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Toolbar des PVS-Clients}}{16}{figure.5.1}}
+\newlabel{png:toolbar}{{5.1}{16}{Toolbar des PVS-Clients\relax }{figure.5.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.1}Chat}{16}{section.5.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Chat-Dialog des PVS-Clients}}{17}{figure.5.2}}
+\newlabel{png:chat}{{5.2}{17}{Chat-Dialog des PVS-Clients\relax }{figure.5.2}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.2}Konfiguration}{17}{section.5.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Konfigurationsdialog des PVS-Clients}}{18}{figure.5.3}}
+\newlabel{png:config}{{5.3}{18}{Konfigurationsdialog des PVS-Clients\relax }{figure.5.3}{}}
+\@writefile{toc}{\contentsline {part}{III\hspace {1em}Entwicklerdokumentation}{19}{part.3}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {6}Erzeugen und Installieren der Applikation}{21}{chapter.6}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {6.1}Voraussetzungen}{21}{section.6.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.2}Kompilieren aus Quellen}{22}{section.6.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.3}Installation}{22}{section.6.3}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {7}Eingesetzte GUI-Bibliothek}{25}{chapter.7}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}Internationalisierung}{25}{section.7.1}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {8}Aufbau und Funktionsweise des PVS}{27}{chapter.8}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {8.1}Einzelne Komponenten}{27}{section.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Zuordnung von Konsole und Clients}{27}{subsection.8.1.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Absicherung und Verifikation der Identit\IeC {\"a}t}{27}{section*.4}}
+\@writefile{toc}{\contentsline {subsubsection}{Generierung von Sitzungsnamen}{28}{section*.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.2}\IeC {\"U}berblick \IeC {\"u}ber Aktivit\IeC {\"a}ten auf Clients}{29}{section.8.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.1}Projektion an Alle}{29}{subsection.8.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.2}Projektion eines Clients auf dem Beamer}{29}{subsection.8.2.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.3}Chat- und Informationskanal}{30}{subsection.8.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.3}Netzwerkkommunikation}{32}{section.8.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}PVS-Protokoll}{32}{subsection.8.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}PVS-Messages}{33}{subsection.8.3.2}}
+\newlabel{pvs-msg-liste}{{8.3.2}{34}{PVS-Messages\relax }{subsection.8.3.2}{}}
+\@writefile{lot}{\contentsline {table}{\numberline {8.1}{\ignorespaces Liste der PVS Messages}}{34}{table.8.1}}
+\newlabel{tab:messagelist}{{8.1}{34}{Liste der PVS Messages\relax }{table.8.1}{}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {9}PVS-Steuerkonsole}{35}{chapter.9}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {9.1}pvsmgr in Qt}{35}{section.9.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.2}GUI Server-Konsole}{35}{section.9.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.1}Die Architektur}{35}{subsection.9.2.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces pvsmgr-Architektur}}{36}{figure.9.1}}
+\newlabel{fig:pvsmgr}{{9.1}{36}{pvsmgr-Architektur\relax }{figure.9.1}{}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.2}{\ignorespaces Abh{\"a}ngigkeitsdiagram: MainWindow}}{37}{figure.9.2}}
+\newlabel{fig:mainwindow}{{9.2}{37}{Abh{\"a}ngigkeitsdiagram: MainWindow\relax }{figure.9.2}{}}
+\@writefile{toc}{\contentsline {subsubsection}{Clientliste-Ansicht}{38}{section*.6}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.3}{\ignorespaces Abh{\"a}ngigkeitsdiagramm der ConnectionList-Klasse}}{38}{figure.9.3}}
+\newlabel{fig:ConnectionList}{{9.3}{38}{Abh{\"a}ngigkeitsdiagramm der ConnectionList-Klasse\relax }{figure.9.3}{}}
+\@writefile{toc}{\contentsline {subsubsection}{VNC-Ansicht}{39}{section*.7}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.4}{\ignorespaces Abh{\"a}ngigkeitsdiagramm der ConnectionFrame-Klasse}}{39}{figure.9.4}}
+\newlabel{fig:Connectionframe}{{9.4}{39}{Abh{\"a}ngigkeitsdiagramm der ConnectionFrame-Klasse\relax }{figure.9.4}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.2}Client-Seite}{40}{subsection.9.2.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.3}Server-Seite}{40}{subsection.9.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.3}Verbindungsverwaltung und Projektion}{41}{section.9.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.3.1}Projektion}{41}{subsection.9.3.1}}
+\newlabel{pvs-console-projection}{{9.3.1}{41}{Projektion\relax }{subsection.9.3.1}{}}
+\@writefile{toc}{\contentsline {subsubsection}{Qualit\IeC {\"a}tsoptionen}{42}{section*.8}}
+\newlabel{pvs-console-quality}{{9.3.1}{42}{Qualitätsoptionen\relax }{section*.8}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.3.2}Remote Help}{42}{subsection.9.3.2}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {10}PVS-Client}{43}{chapter.10}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Back- und Frontend des PVS-Clients kommunizieren \IeC {\"u}ber D-Bus}}{43}{figure.10.1}}
+\newlabel{pdf:dbus}{{10.1}{43}{Back- und Frontend des PVS-Clients kommunizieren über D-Bus\relax }{figure.10.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.1}Grafische Benutzeroberfl\IeC {\"a}che}{44}{section.10.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.2}User-Interface f\IeC {\"u}r Benutzerkonfiguration}{45}{section.10.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.3}Darstellung von VNC-Datenstr\IeC {\"o}men}{45}{section.10.3}}
+\newlabel{pvsclient-datenstrom}{{10.3}{45}{Darstellung von VNC-Datenströmen\relax }{section.10.3}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.4}Chat-Interface}{46}{section.10.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.5}Datei\IeC {\"u}bertragung und Interface}{46}{section.10.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.6}VNC Server}{47}{section.10.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.6.1}Vergleich von VNC Servern}{48}{subsection.10.6.1}}
+\@writefile{toc}{\contentsline {paragraph}{Vino}{48}{section*.9}}
+\@writefile{toc}{\contentsline {paragraph}{Krfb}{48}{section*.10}}
+\@writefile{toc}{\contentsline {paragraph}{x11vnc}{49}{section*.11}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.6.2}VNC Script}{50}{subsection.10.6.2}}
+\newlabel{pvs-vnc-script}{{10.6.2}{50}{VNC Script\relax }{subsection.10.6.2}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.7}VNC Viewer}{50}{section.10.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.7.1}Tastatur und Maussteuerung}{51}{subsection.10.7.1}}
+\newlabel{pvsclient-remotehelp}{{10.7.1}{51}{Tastatur und Maussteuerung\relax }{subsection.10.7.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.8}Signalbehandlung}{52}{section.10.8}}
+\@writefile{toc}{\contentsline {part}{IV\hspace {1em}Anhang}{53}{part.4}}
+\newlabel{png:kd}{{IV}{55}{Anhang\relax }{part.4}{}}
diff --git a/doc/LaTeX/pvs-doc.idx b/doc/LaTeX/pvs-doc.idx
new file mode 100644
index 0000000..2548b25
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.idx
@@ -0,0 +1,34 @@
+\indexentry{Einleitung|hyperpage}{3}
+\indexentry{Video Switch|hyperpage}{3}
+\indexentry{Laptop|hyperpage}{3}
+\indexentry{VGA|hyperpage}{3}
+\indexentry{DVI|hyperpage}{3}
+\indexentry{Klassenraum|hyperpage}{3}
+\indexentry{Student Control Panel|hyperpage}{3}
+\indexentry{Idee|hyperpage}{3}
+\indexentry{Funktion|hyperpage}{5}
+\indexentry{Schreibweise|hyperpage}{7}
+\indexentry{Kommando|hyperpage}{7}
+\indexentry{Quelltext|hyperpage}{7}
+\indexentry{Konfiguration|hyperpage}{7}
+\indexentry{Formatierung|hyperpage}{7}
+\indexentry{Verzeichnis|hyperpage}{7}
+\indexentry{Dateiname|hyperpage}{7}
+\indexentry{Installieren|hyperpage}{21}
+\indexentry{Paket!RPM|hyperpage}{22}
+\indexentry{Paket!DPKG|hyperpage}{22}
+\indexentry{QT|hyperpage}{25}
+\indexentry{GUI|hyperpage}{25}
+\indexentry{Internationalisierung|hyperpage}{25}
+\indexentry{Aufbau|hyperpage}{27}
+\indexentry{Funktionsweise|hyperpage}{27}
+\indexentry{Konzept|hyperpage}{27}
+\indexentry{Komponenten|hyperpage}{27}
+\indexentry{Projektion|hyperpage}{29}
+\indexentry{Beamer|hyperpage}{29}
+\indexentry{Chat|hyperpage}{30}
+\indexentry{Netzwerkkommunikation|hyperpage}{32}
+\indexentry{Protokoll!PVS|hyperpage}{32}
+\indexentry{Protokoll|hyperpage}{32}
+\indexentry{Message!PVS|hyperpage}{33}
+\indexentry{Message|hyperpage}{33}
diff --git a/doc/LaTeX/pvs-doc.log b/doc/LaTeX/pvs-doc.log
new file mode 100644
index 0000000..e634d13
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.log
@@ -0,0 +1,1065 @@
+This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2010.9.4) 2 OCT 2010 17:01
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**pvs-doc.tex
+(./pvs-doc.tex
+LaTeX2e <2009/09/24>
+Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
+yphenation, loaded.
+\@indexfile=\write3
+\openout3 = `pvs-doc.idx'.
+
+Writing index file pvs-doc.idx
+(./mystyle-pdf.tex (/usr/share/texmf-texlive/tex/latex/base/book.cls
+Document Class: book 2007/10/19 v1.4h Standard LaTeX document class
+(/usr/share/texmf-texlive/tex/latex/base/bk12.clo
+File: bk12.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@chapter=\count80
+\c@section=\count81
+\c@subsection=\count82
+\c@subsubsection=\count83
+\c@paragraph=\count84
+\c@subparagraph=\count85
+\c@figure=\count86
+\c@table=\count87
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
+Package: babel 2008/07/06 v3.8l The Babel package
+
+(/usr/share/texmf-texlive/tex/generic/babel/ngermanb.ldf
+Language: ngermanb 2008/07/06 v2.6n new German support from the babel system
+
+(/usr/share/texmf-texlive/tex/generic/babel/babel.def
+File: babel.def 2008/07/06 v3.8l Babel common definitions
+\babel@savecnt=\count88
+\U@D=\dimen103
+)
+
+Package babel Warning: No hyphenation patterns were loaded for
+(babel) the language `ngerman'
+(babel) I will use the patterns loaded for \language=0 instead.
+
+\l@ngerman = a dialect from \language0
+\l@naustrian = a dialect from \language\l@ngerman
+Package babel Info: Making " an active character on input line 92.
+)) (/usr/share/texmf-texlive/tex/latex/ucs/ucs.sty
+Package: ucs 2004/10/17 UCS: Unicode input support
+
+(/usr/share/texmf-texlive/tex/latex/ucs/data/uni-global.def
+File: uni-global.def 2004/10/17 UCS: Unicode global data
+)
+\uc@secondtry=\count89
+\uc@combtoks=\toks14
+\uc@combtoksb=\toks15
+\uc@temptokena=\toks16
+)
+(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
+Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
+
+(/usr/share/texmf-texlive/tex/latex/base/t1enc.def
+File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
+LaTeX Font Info: Redeclaring font encoding T1 on input line 43.
+))
+(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
+Package: inputenc 2008/03/30 v1.1d Input encoding file
+\inpenc@prehook=\toks17
+\inpenc@posthook=\toks18
+
+(/usr/share/texmf-texlive/tex/latex/ucs/utf8x.def
+File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8
+))
+(/usr/share/texmf-texlive/tex/latex/tools/multicol.sty
+Package: multicol 2008/12/05 v1.6h multicolumn formatting (FMi)
+\c@tracingmulticols=\count90
+\mult@box=\box26
+\multicol@leftmargin=\dimen104
+\c@unbalance=\count91
+\c@collectmore=\count92
+\doublecol@number=\count93
+\multicoltolerance=\count94
+\multicolpretolerance=\count95
+\full@width=\dimen105
+\page@free=\dimen106
+\premulticols=\dimen107
+\postmulticols=\dimen108
+\multicolsep=\skip43
+\multicolbaselineskip=\skip44
+\partial@page=\box27
+\last@line=\box28
+\mult@rightbox=\box29
+\mult@grightbox=\box30
+\mult@gfirstbox=\box31
+\mult@firstbox=\box32
+\@tempa=\box33
+\@tempa=\box34
+\@tempa=\box35
+\@tempa=\box36
+\@tempa=\box37
+\@tempa=\box38
+\@tempa=\box39
+\@tempa=\box40
+\@tempa=\box41
+\@tempa=\box42
+\@tempa=\box43
+\@tempa=\box44
+\@tempa=\box45
+\@tempa=\box46
+\@tempa=\box47
+\@tempa=\box48
+\@tempa=\box49
+\c@columnbadness=\count96
+\c@finalcolumnbadness=\count97
+\last@try=\dimen109
+\multicolovershoot=\dimen110
+\multicolundershoot=\dimen111
+\mult@nat@firstbox=\box50
+\colbreak@box=\box51
+)
+(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks19
+)
+(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
+Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/etc/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2009/08/28 v1.8 graphics configuration of TeX Live
+)
+Package graphics Info: Driver file: pdftex.def on input line 91.
+
+(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2009/08/25 v0.04m Graphics/color for pdfTeX
+\Gread@gobject=\count98
+))
+\Gin@req@height=\dimen112
+\Gin@req@width=\dimen113
+)
+(/usr/share/texmf-texlive/tex/latex/base/makeidx.sty
+Package: makeidx 2000/03/29 v1.0m Standard LaTeX package
+)
+(/usr/share/texmf-texlive/tex/latex/ltxmisc/ulem.sty
+\UL@box=\box52
+\UL@hyphenbox=\box53
+\UL@skip=\skip45
+\UL@hook=\toks20
+\UL@pe=\count99
+\UL@pixel=\dimen114
+\ULC@box=\box54
+Package: ulem 2000/05/26
+\ULdepth=\dimen115
+)
+(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
+
+(/etc/texmf/tex/latex/config/color.cfg
+File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
+)
+Package xcolor Info: Driver file: pdftex.def on input line 225.
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
+Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341.
+Package xcolor Info: Model `RGB' extended on input line 1353.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
+)
+(/usr/share/texmf-texlive/tex/latex/moreverb/moreverb.sty
+Package: moreverb 2008/06/03 v2.3 `more' verbatim facilities
+
+(/usr/share/texmf-texlive/tex/latex/tools/verbatim.sty
+Package: verbatim 2003/08/22 v1.5q LaTeX2e package for verbatim enhancements
+\every@verbatim=\toks21
+\verbatim@line=\toks22
+\verbatim@in@stream=\read1
+)
+\verbatim@out=\write4
+\tab@position=\count100
+\tab@size=\count101
+\listing@line=\count102
+)
+(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty
+\fancy@headwidth=\skip46
+\f@ncyO@elh=\skip47
+\f@ncyO@erh=\skip48
+\f@ncyO@olh=\skip49
+\f@ncyO@orh=\skip50
+\f@ncyO@elf=\skip51
+\f@ncyO@erf=\skip52
+\f@ncyO@olf=\skip53
+\f@ncyO@orf=\skip54
+)
+(/usr/share/texmf-texlive/tex/latex/caption/caption2.sty
+Package: caption2 2008/07/01 v2.2c Customising captions (AS)
+
+
+Package caption2 Warning: ****************************************************
+(caption2) THIS PACKAGE IS OBSOLETE:
+(caption2) This package attempts to provide an `caption2'
+(caption2) package v2.0/2.1 author environment so that OLD
+(caption2) documents can be successfully processed. It should
+(caption2) NOT be used for NEW documents! New documents should
+(caption2) use the regular `caption' package v3.x instead.
+(caption2) ****************************************************
+
+(/usr/share/texmf-texlive/tex/latex/caption/caption3.sty
+Package: caption3 2009/10/09 v3.1k caption3 kernel (AR)
+\captionmargin=\dimen116
+\captionmargin@=\dimen117
+\captionwidth=\dimen118
+\caption@indent=\dimen119
+\caption@parindent=\dimen120
+\caption@hangindent=\dimen121
+)
+Package caption2 Info: Running in caption2 v2.0 compatibility mode on input lin
+e 209.
+\captionlinewidth=\dimen122
+\realcaptionwidth=\dimen123
+))
+(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2009/10/09 v6.79a Hypertext links for LaTeX
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in pdf mode detected.
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty
+Package: ifvtex 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO)
+Package ifvtex Info: VTeX not detected.
+)
+(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2009/01/23 v0.5 Provides ifxetex conditional
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/hycolor.sty
+Package: hycolor 2009/10/02 v1.5 Code for color options of hyperref/bookmark (H
+O)
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/xcolor-patch.sty
+Package: xcolor-patch 2009/10/02 xcolor patch
+))
+\@linkdim=\dimen124
+\Hy@linkcounter=\count103
+\Hy@pagecounter=\count104
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2009/10/09 v6.79a Hyperref: PDFDocEncoding definition (HO)
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2007/09/09 v1.2 Providing info/warning/message (HO)
+)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+)
+(/usr/share/texmf-texlive/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2009/08/13 v3.4 Keyval support for LaTeX options (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2009/07/30 v1.5 Key value parser with default handler suppor
+t (HO)
+))
+Package hyperref Info: Option `pdfpagelabels' set `true' on input line 2864.
+Package hyperref Info: Option `plainpages' set `false' on input line 2864.
+Package hyperref Info: Option `colorlinks' set `true' on input line 2864.
+Package hyperref Info: Hyper figures OFF on input line 2975.
+Package hyperref Info: Link nesting OFF on input line 2980.
+Package hyperref Info: Hyper index ON on input line 2983.
+Package hyperref Info: Plain pages OFF on input line 2990.
+Package hyperref Info: Backreferencing OFF on input line 2995.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 3191.
+(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
+\Urlmuskip=\muskip10
+Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 3428.
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/bitset.sty
+Package: bitset 2007/09/28 v1.0 Data type bit set (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/intcalc.sty
+Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO)
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/bigintcalc.sty
+Package: bigintcalc 2007/11/11 v1.1 Expandable big integer calculations (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2009/09/23 v0.6 LuaTeX support for pdfTeX utility functions
+ (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2009/04/17 v1.2 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2009/08/05 v1.0 Some LaTeX kernel commands for general use (HO
+)
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+)))
+\Fld@menulength=\count105
+\Field@Width=\dimen125
+\Fld@charsize=\dimen126
+\Field@toks=\toks23
+Package hyperref Info: Hyper figures OFF on input line 4377.
+Package hyperref Info: Link nesting OFF on input line 4382.
+Package hyperref Info: Hyper index ON on input line 4385.
+Package hyperref Info: backreferencing OFF on input line 4392.
+Package hyperref Info: Link coloring ON on input line 4395.
+Package hyperref Info: Link coloring with OCG OFF on input line 4402.
+Package hyperref Info: PDF/A mode OFF on input line 4407.
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/atbegshi.sty
+Package: atbegshi 2008/07/31 v1.9 At begin shipout hook (HO)
+)
+\Hy@abspage=\count106
+\c@Item=\count107
+\c@Hfootnote=\count108
+)
+*hyperref using driver hpdftex*
+(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2009/10/09 v6.79a Hyperref driver for pdfTeX
+\Fld@listcount=\count109
+) (./pvs-doc.aux
+
+LaTeX Warning: Label `uscp' multiply defined.
+
+)
+\openout1 = `pvs-doc.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Try loading font information for T1+cmss on input line 4.
+ (/usr/share/texmf-texlive/tex/latex/base/t1cmss.fd
+File: t1cmss.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+(/usr/share/texmf-texlive/tex/latex/ucs/ucsencs.def
+File: ucsencs.def 2003/11/29 Fixes to fontencodings LGR, T3
+)
+(/usr/share/texmf-texlive/tex/context/base/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count110
+\scratchdimen=\dimen127
+\scratchbox=\box55
+\nofMPsegments=\count111
+\nofMParguments=\count112
+\everyMPshowfont=\toks24
+\MPscratchCnt=\count113
+\MPscratchDim=\dimen128
+\MPnumerator=\count114
+\everyMPtoPDFconversion=\toks25
+)
+Package caption Info: Begin \AtBeginDocument code.
+Package caption Info: End \AtBeginDocument code.
+Package hyperref Info: Link coloring ON on input line 4.
+ (/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
+Package: nameref 2007/05/29 v2.31 Cross-referencing by name of section
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
+Package: refcount 2008/08/11 v3.1 Data extraction from references (HO)
+)
+\c@section@level=\count115
+)
+LaTeX Info: Redefining \ref on input line 4.
+LaTeX Info: Redefining \pageref on input line 4.
+ (./pvs-doc.out)
+(./pvs-doc.out)
+\@outlinefile=\write5
+\openout5 = `pvs-doc.out'.
+
+\AtBeginShipoutBox=\box56
+ (./header.tex
+<bilder/siegel-neu.jpg, id=227, 570.18372pt x 570.18372pt>
+File: bilder/siegel-neu.jpg Graphic file (type jpg)
+
+<use bilder/siegel-neu.jpg>
+(/usr/share/texmf-texlive/tex/latex/ucs/data/uni-0.def
+File: uni-0.def 2004/10/17 UCS: Unicode data U+0000..U+00FF
+) [1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./bilder/siegel-neu.jpg>]
+[2]
+
+LaTeX Font Warning: Font shape `T1/cmss/m/sc' in size <14.4> not available
+(Font) Font shape `T1/cmr/m/sc' tried instead on input line 39.
+
+[3]
+Underfull \hbox (badness 10000) in paragraph at lines 45--52
+
+ []
+
+[4])
+
+Package hyperref Warning: No destination for bookmark of \addcontentsline,
+(hyperref) destination is added on input line 7.
+
+(./pvs-doc.toc
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <12> on input line 6.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <8> on input line 6.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <6> on input line 6.
+
+
+Package Fancyhdr Warning: \headheight is too small (12.0pt):
+ Make it at least 25.40292pt.
+ We now make it that large for the rest of the document.
+ This may cause the page layout to be inconsistent, however.
+
+[1
+
+])
+\tf@toc=\write6
+\openout6 = `pvs-doc.toc'.
+
+ [2] (./zusfassung.tex [3
+
+])pdfTeX warning (ext4): destination with the same identifier (name{page.1}) ha
+s been already used, duplicate ignored
+<to be read again>
+ \relax
+l.13 \part{Idee und Ãœberblick}
+ [1
+
+]pdfTeX warning (ext4): destination with the same identifier (name{page.2}) has
+ been already used, duplicate ignored
+<to be read again>
+ \relax
+l.13 \part{Idee und Ãœberblick}
+ [2] (./intro/0000-chapter.tex
+Kapitel 1.
+<bilder/studentctlpanel.png, id=333, 866.05525pt x 523.71pt>
+File: bilder/studentctlpanel.png Graphic file (type png)
+
+<use bilder/studentctlpanel.png>pdfTeX warning (ext4): destination with the sam
+e identifier (name{page.3}) has been already used, duplicate ignored
+<to be read again>
+ \relax
+l.13 D
+ em soll ein eigener Ansatz entgegengesetzt werden, der die eingangs ge...
+[3
+
+ <./bilder/studentctlpanel.png>]
+Overfull \hbox (2.64162pt too wide) in paragraph at lines 13--14
+[]\T1/cmss/m/n/12 Dem soll ein eigen-er Ansatz ent-ge-genge-set-zt wer-den, der
+ die ein-gangs genan-nten Beschränkun-
+ []
+
+) (./intro/0100-funktionen.texpdfTeX warning (ext4): destination with the same
+identifier (name{page.4}) has been already used, duplicate ignored
+<to be read again>
+ \relax
+l.1 \chapter
+ {Funktionen eines Software-Video-Switchs} [4]
+Kapitel 2.
+File: bilder/studentctlpanel.png Graphic file (type png)
+<use bilder/studentctlpanel.png>) (./intro/0900-textaufbau.tex [5
+
+] [6
+
+]
+Kapitel 3.
+LaTeX Font Info: Try loading font information for T1+cmtt on input line 12.
+(/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd
+File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)) [7] [8
+
+] [9] [10]
+(./user/0001-chapter.tex
+Kapitel 4.
+<bilder/pvsmgrAll.jpg, id=374, 1312.905pt x 989.6975pt>
+File: bilder/pvsmgrAll.jpg Graphic file (type jpg)
+
+<use bilder/pvsmgrAll.jpg>
+Underfull \hbox (badness 10000) in paragraph at lines 17--32
+
+ []
+
+
+Underfull \vbox (badness 1052) has occurred while \output is active []
+
+ [11
+
+ <./bilder/pvsmgrAll.jpg>] <bilder/dum.jpg, id=383, 1312.905pt x 985.6825pt>
+File: bilder/dum.jpg Graphic file (type jpg)
+
+<use bilder/dum.jpg>
+Underfull \hbox (badness 10000) in paragraph at lines 34--63
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 34--63
+
+ []
+
+
+LaTeX Warning: `h' float specifier changed to `ht'.
+
+[12]
+Underfull \hbox (badness 10000) in paragraph at lines 66--69
+
+ []
+
+
+Underfull \vbox (badness 10000) has occurred while \output is active []
+
+ [13 <./bilder/dum.jpg>]
+Underfull \hbox (badness 10000) in paragraph at lines 70--71
+
+ []
+
+) (./user/0000-chapter.tex
+Underfull \hbox (badness 10000) in paragraph at lines 72--1
+
+ []
+
+[14]
+Kapitel 5.
+[15
+
+] <bilder/clientToolbar.png, id=409, 463.331pt x 22.484pt>
+File: bilder/clientToolbar.png Graphic file (type png)
+
+<use bilder/clientToolbar.png>
+LaTeX Font Info: Try loading font information for OMS+cmss on input line 20.
+
+LaTeX Font Info: No file OMScmss.fd. on input line 20.
+
+
+LaTeX Font Warning: Font shape `OMS/cmss/m/n' undefined
+(Font) using `OMS/cmsy/m/n' instead
+(Font) for symbol `textbullet' on input line 20.
+
+[16 <./bilder/clientToolbar.png>]
+<bilder/clientChatDialog.png, id=421, 403.106pt x 312.367pt>
+File: bilder/clientChatDialog.png Graphic file (type png)
+
+<use bilder/clientChatDialog.png>
+<bilder/clientConfigDialog.png, id=423, 367.774pt x 238.491pt>
+File: bilder/clientConfigDialog.png Graphic file (type png)
+
+<use bilder/clientConfigDialog.png>
+
+LaTeX Warning: `h' float specifier changed to `ht'.
+
+) [17 <./bilder/clientChatDialog.png>] [18 <./bilder/clientConfigDialog.png>]
+[19
+
+] [20] (./devel/0000-chapter.tex) (./devel/0100-build.tex
+Kapitel 6.
+
+Underfull \hbox (badness 10000) in paragraph at lines 3--4
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 5--7
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 8--10
+
+ []
+
+
+Overfull \hbox (6.42374pt too wide) in paragraph at lines 23--25
+\T1/cmss/m/n/12 Eingesetztes Buildsys-tem und der Makefile-Generator. Um dis-tr
+i-bu-tion-sspez-i-fis-che Pakete
+ []
+
+[21
+
+]
+Underfull \hbox (badness 10000) in paragraph at lines 34--35
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 36--40
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 51--53
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 54--60
+
+ []
+
+[22]
+Underfull \hbox (badness 10000) in paragraph at lines 61--62
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 63--65
+
+ []
+
+) (./devel/0200-gui-lib.tex [23] [24
+
+]
+Kapitel 7.
+[25]) (./devel/0300-pvs.tex [26]
+Kapitel 8.
+(./devel/0310-service-discovery.tex [27
+
+])
+Underfull \vbox (badness 10000) has occurred while \output is active []
+
+ [28]
+Underfull \hbox (badness 10000) in paragraph at lines 45--58
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 45--58
+
+ []
+
+[29]
+Underfull \hbox (badness 10000) in paragraph at lines 67--67
+[]\T1/cmtt/m/n/12 <Username des
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 67--67
+[]\T1/cmtt/m/n/12 <<Username des
+ []
+
+
+Overfull \hbox (7.24413pt too wide) in paragraph at lines 67--67
+\T1/cmtt/m/n/12 Absenders>:<Die
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 67--67
+\T1/cmtt/m/n/12 eigentliche
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 67--68
+[]\T1/cmtt/m/n/12 <<Vom server
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 67--68
+\T1/cmtt/m/n/12 zugewissene
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 67--68
+\T1/cmtt/m/n/12 ID des
+ []
+
+[30]
+Underfull \hbox (badness 10000) in paragraph at lines 135--143
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 144--177
+
+ []
+
+[31]
+Overfull \hbox (1.08073pt too wide) in paragraph at lines 184--189
+\T1/cmss/m/n/12 sich der Dis-patch-er für Nachricht-en vom Typ Com-mand in der
+Klasse \T1/cmtt/m/n/12 pvsServerConnection\T1/cmss/m/n/12 ,
+ []
+
+
+Overfull \hbox (11.3282pt too wide) in paragraph at lines 184--189
+\T1/cmss/m/n/12 wie fol-gt als Han-dler reg-istri-ert: \T1/cmtt/m/n/12 _pvsServ
+erConnection->addCommandHandler("*", this,
+ []
+
+[32]
+Underfull \hbox (badness 10000) in paragraph at lines 202--202
+[]\T1/cmss/m/n/12 hostname
+ []
+
+
+Underfull \hbox (badness 7558) in paragraph at lines 202--202
+\T1/cmss/m/n/12 port pass-
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 202--202
+\T1/cmss/m/n/12 word
+ []
+
+
+Underfull \hbox (badness 4378) in paragraph at lines 205--206
+[]\T1/cmss/m/n/12 Client mit Nachricht
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 210--210
+[]\T1/cmss/m/n/12 ^^RWrong
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 210--211
+[]\T1/cmss/m/n/12 Wird bei falschem
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 220--221
+[]\T1/cmss/m/n/12 Client hinzufü-gen
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 222--223
+[]\T1/cmss/m/n/12 Festgelegter Name
+ []
+
+) (./devel/0400-pvs-console.tex [33] [34]
+Kapitel 9.
+
+Underfull \hbox (badness 10000) in paragraph at lines 3--7
+
+ []
+
+<bilder/pvsmgr.jpg, id=525, 796.9775pt x 569.12625pt>
+File: bilder/pvsmgr.jpg Graphic file (type jpg)
+ <use bilder/pvsmgr.jpg>
+<bilder/mainwindow.png, id=527, 518.8986pt x 373.6359pt>
+File: bilder/mainwindow.png Graphic file (type png)
+
+<use bilder/mainwindow.png>
+Underfull \hbox (badness 10000) in paragraph at lines 21--48
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 21--48
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 21--48
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 21--48
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 21--48
+
+ []
+
+[35
+
+]
+
+LaTeX Warning: `h' float specifier changed to `ht'.
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 49--56
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 57--60
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 57--60
+
+ []
+
+[36 <./bilder/pvsmgr.jpg>]
+Underfull \hbox (badness 10000) in paragraph at lines 61--72
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 73--76
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 77--81
+
+ []
+
+[37 <./bilder/mainwindow.png (PNG copy)>]
+
+LaTeX Warning: Reference `fig:connectionlist' on page 38 undefined on input lin
+e 87.
+
+<bilder/ConnectionList.png, id=543, 583.9416pt x 354.8457pt>
+File: bilder/ConnectionList.png Graphic file (type png)
+
+<use bilder/ConnectionList.png>
+<bilder/connectionframe.png, id=544, 516.0078pt x 352.6776pt>
+File: bilder/connectionframe.png Graphic file (type png)
+
+<use bilder/connectionframe.png>
+
+LaTeX Warning: Reference `connectionframe' on page 38 undefined on input line 1
+20.
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 105--124
+
+ []
+
+
+Underfull \vbox (badness 1629) has occurred while \output is active []
+
+ [38 <./bilder/ConnectionList.png (PNG copy)>] [39 <./bilder/connectionframe.pn
+g (PNG copy)>]
+Underfull \hbox (badness 10000) in paragraph at lines 130--150
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 153--158
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 159--164
+
+ []
+
+[40]
+Overfull \hbox (9.46333pt too wide) in paragraph at lines 171--174
+\T1/cmss/m/n/12 schon in der Liste der Pro-jek-tion-sziele vorhan-den ist. Ist
+er nicht vorhan-den, wird ein Auswahldia-
+ []
+
+
+Overfull \hbox (2.76924pt too wide) in paragraph at lines 171--174
+\T1/cmtt/m/n/12 MainWindow::getWindow()->getConnectionList()->getTargetToDispla
+y(source)\T1/cmss/m/n/12 ).
+ []
+
+[41]) (./devel/0500-pvs-client.tex [42]
+Kapitel 10.
+
+Underfull \hbox (badness 10000) in paragraph at lines 2--3
+
+ []
+
+<bilder/DBus.pdf, id=573, 273.02pt x 217.613pt>
+File: bilder/DBus.pdf Graphic file (type pdf)
+ <use bilder/DBus.pdf> [43
+
+ <./bilder/DBus.pdf>] [44]
+Underfull \hbox (badness 10000) in paragraph at lines 73--74
+
+ []
+
+
+Overfull \hbox (5.7754pt too wide) in paragraph at lines 77--78
+\T1/cmss/m/n/12 über den Kon-struk-tor definiert und nach einem Aufruf von \T1/
+cmtt/m/n/12 VNCClientThread::start()
+ []
+
+[45]
+Underfull \hbox (badness 10000) in paragraph at lines 88--89
+
+ []
+
+[46]
+Underfull \hbox (badness 10000) in paragraph at lines 95--97
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 98--101
+
+ []
+
+[47]
+Underfull \hbox (badness 2285) in paragraph at lines 117--128
+\T1/cmss/m/it/12 ^^C/.gconf/desktop/gnome/remote_access/%gconf.xml \T1/cmss/m/n
+/12 kon-fig-urier-bar. Pa-ram-e-ter kön-nen
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 117--128
+\T1/cmss/m/n/12 durch \T1/cmtt/m/n/12 gconftool-2 -s -t int desktop/gnome/remot
+e_access/alternative_port
+ []
+
+
+Underfull \hbox (badness 7256) in paragraph at lines 117--128
+\T1/cmtt/m/n/12 <portnumber> \T1/cmss/m/n/12 bzw. das Ein-fü-gen von z.B. \T1/c
+mtt/m/n/12 <entry name=``alternative_port''
+ []
+
+
+Underfull \hbox (badness 3471) in paragraph at lines 117--128
+\T1/cmtt/m/n/12 mtime=``1259858032'' type= ``int'' value=``<portnumber>''/> \T1
+/cmss/m/n/12 in die entsprechende
+ []
+
+[48] [49]
+Overfull \hbox (1.44884pt too wide) in paragraph at lines 189--190
+[]\T1/cmss/m/n/12 Um einen Mehrfach-start des VNC Servers zu ver-hin-dern, wird
+ zunächst im-mer ein \T1/cmtt/m/n/12 pvs-vncsrv
+ []
+
+
+Underfull \hbox (badness 1728) in paragraph at lines 197--199
+\T1/cmss/m/n/12 die Eingaben in der Klasse \T1/cmtt/m/n/12 ClientVNCViewer \T1/
+cmss/m/n/12 abge-fan-gen und ve-r-ar-beit-et wer-den.
+ []
+
+
+Underfull \hbox (badness 1107) in paragraph at lines 197--199
+\T1/cmss/m/n/12 Dies kann durch Über-schreiben der geerbten Meth-ode \T1/cmtt/m
+/n/12 event \T1/cmss/m/n/12 er-re-icht wer-den \T1/cmtt/m/n/12 bool
+ []
+
+[50]
+Overfull \hbox (4.18437pt too wide) in paragraph at lines 211--215
+\T1/cmtt/m/n/12 Key-[]enum$[][]\T1/cmss/m/n/12 ) un-ter-schieden wer-den. Die T
+astatur- und Mau-seingaben müssen dann entsprechend
+ []
+
+
+Overfull \hbox (11.09923pt too wide) in paragraph at lines 211--215
+\T1/cmss/m/n/12 an \T1/cmtt/m/n/12 vncClientThread \T1/cmss/m/n/12 weit-ergelei
+t-et wer-den. In der Klasse vnc-Client-Thread wer-den die Eingaben
+ []
+
+[51]
+Underfull \hbox (badness 4441) in paragraph at lines 240--243
+[]\T1/cmss/m/n/12 Um Sig-nale ab-fan-gen zu kön-nen, muss nun noch das sigac-ti
+on Ob-jekt durch
+ []
+
+
+Underfull \hbox (badness 2181) in paragraph at lines 240--243
+\T1/cmtt/m/n/12 sigaction(SIGTERM, &act, 0) \T1/cmss/m/n/12 mit den entsprechen
+-den Sig-nalen (hi-er SIGTERM)
+ []
+
+) [52] [53
+
+] [54] (./appendix/0000-chapter.tex
+<bilder/Klassendiagramm.pdf, id=646, 598.235pt x 845.55902pt>
+File: bilder/Klassendiagramm.pdf Graphic file (type pdf)
+
+<use bilder/Klassendiagramm.pdf>
+
+LaTeX Warning: `h' float specifier changed to `ht'.
+
+)
+No file pvs-doc.ind.
+[55 <./bilder/Klassendiagramm.pdf>] (./pvs-doc.aux)
+
+LaTeX Font Warning: Some font shapes were not available, defaults substituted.
+
+
+LaTeX Warning: There were undefined references.
+
+
+LaTeX Warning: There were multiply-defined labels.
+
+ )
+Here is how much of TeX's memory you used:
+ 7300 strings out of 495061
+ 103737 string characters out of 1182622
+ 191400 words of memory out of 3000000
+ 10133 multiletter control sequences out of 15000+50000
+ 17588 words of font info for 39 fonts, out of 3000000 for 9000
+ 28 hyphenation exceptions out of 8191
+ 38i,14n,44p,1625b,576s stack positions out of 5000i,500n,10000p,200000b,50000s
+ </home/fabian/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecsi1200.600pk> </home/
+fabian/.texmf-var/fonts/pk/ljfour/jknappen/ec/ectt1200.600pk> </home/fabian/.te
+xmf-var/fonts/pk/ljfour/jknappen/ec/ecsx1095.600pk> </home/fabian/.texmf-var/fo
+nts/pk/ljfour/jknappen/ec/ecsx1728.600pk> </home/fabian/.texmf-var/fonts/pk/ljf
+our/jknappen/ec/ecsx1440.600pk> </home/fabian/.texmf-var/fonts/pk/ljfour/jknapp
+en/ec/ecsx1200.600pk> </home/fabian/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecss
+1200.600pk> </home/fabian/.texmf-var/fonts/pk/ljfour/jknappen/ec/eccc1440.600pk
+> </home/fabian/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecss1095.600pk> </home/f
+abian/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecss1440.600pk> </home/fabian/.tex
+mf-var/fonts/pk/ljfour/jknappen/ec/ecsi1440.600pk> </home/fabian/.texmf-var/fon
+ts/pk/ljfour/jknappen/ec/ecss1728.600pk> </home/fabian/.texmf-var/fonts/pk/ljfo
+ur/jknappen/ec/ecss2488.600pk> </home/fabian/.texmf-var/fonts/pk/ljfour/jknappe
+n/ec/ecsx2488.600pk></usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cm
+mi12.pfb></usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr12.pfb></u
+sr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texm
+f-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb>
+Output written on pvs-doc.pdf (62 pages, 2362812 bytes).
+PDF statistics:
+ 1429 PDF objects out of 1440 (max. 8388607)
+ 156 named destinations out of 1000 (max. 500000)
+ 514 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/doc/LaTeX/pvs-doc.out b/doc/LaTeX/pvs-doc.out
new file mode 100644
index 0000000..e311c72
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.out
@@ -0,0 +1,56 @@
+\BOOKMARK [0][-]{section*.1}{Inhaltsverzeichnis}{}
+\BOOKMARK [-1][-]{part.1}{I Idee und \334berblick}{}
+\BOOKMARK [0][-]{chapter.1}{Idee}{part.1}
+\BOOKMARK [0][-]{chapter.2}{Funktionen eines Software-Video-Switchs}{part.1}
+\BOOKMARK [1][-]{section.2.1}{W\374nschenswerte Basisfunktionen}{chapter.2}
+\BOOKMARK [1][-]{section.2.2}{Funktionserweiterungen}{chapter.2}
+\BOOKMARK [0][-]{chapter.3}{Aufbau dieses Handbuchs}{part.1}
+\BOOKMARK [1][-]{section.3.1}{Heraushebungen und Formatierungen}{chapter.3}
+\BOOKMARK [-1][-]{part.2}{II Bedienungsanleitung}{}
+\BOOKMARK [0][-]{chapter.4}{PVS-Steuerkonsole}{part.2}
+\BOOKMARK [1][-]{section.4.1}{Allgemein}{chapter.4}
+\BOOKMARK [2][-]{subsection.4.1.1}{Die Client-Liste}{section.4.1}
+\BOOKMARK [2][-]{subsection.4.1.2}{Die VNC-Frames}{section.4.1}
+\BOOKMARK [2][-]{subsection.4.1.3}{Tastenk\374rzel f\374r PVS-Server}{section.4.1}
+\BOOKMARK [0][-]{chapter.5}{PVS-Client}{part.2}
+\BOOKMARK [1][-]{section.5.1}{Chat}{chapter.5}
+\BOOKMARK [1][-]{section.5.2}{Konfiguration}{chapter.5}
+\BOOKMARK [-1][-]{part.3}{III Entwicklerdokumentation}{}
+\BOOKMARK [0][-]{chapter.6}{Erzeugen und Installieren der Applikation}{part.3}
+\BOOKMARK [1][-]{section.6.1}{Voraussetzungen}{chapter.6}
+\BOOKMARK [1][-]{section.6.2}{Kompilieren aus Quellen}{chapter.6}
+\BOOKMARK [1][-]{section.6.3}{Installation}{chapter.6}
+\BOOKMARK [0][-]{chapter.7}{Eingesetzte GUI-Bibliothek}{part.3}
+\BOOKMARK [1][-]{section.7.1}{Internationalisierung}{chapter.7}
+\BOOKMARK [0][-]{chapter.8}{Aufbau und Funktionsweise des PVS}{part.3}
+\BOOKMARK [1][-]{section.8.1}{Einzelne Komponenten}{chapter.8}
+\BOOKMARK [2][-]{subsection.8.1.1}{Zuordnung von Konsole und Clients}{section.8.1}
+\BOOKMARK [1][-]{section.8.2}{\334berblick \374ber Aktivit\344ten auf Clients}{chapter.8}
+\BOOKMARK [2][-]{subsection.8.2.1}{Projektion an Alle}{section.8.2}
+\BOOKMARK [2][-]{subsection.8.2.2}{Projektion eines Clients auf dem Beamer}{section.8.2}
+\BOOKMARK [2][-]{subsection.8.2.3}{Chat- und Informationskanal}{section.8.2}
+\BOOKMARK [1][-]{section.8.3}{Netzwerkkommunikation}{chapter.8}
+\BOOKMARK [2][-]{subsection.8.3.1}{PVS-Protokoll}{section.8.3}
+\BOOKMARK [2][-]{subsection.8.3.2}{PVS-Messages}{section.8.3}
+\BOOKMARK [0][-]{chapter.9}{PVS-Steuerkonsole}{part.3}
+\BOOKMARK [1][-]{section.9.1}{pvsmgr in Qt}{chapter.9}
+\BOOKMARK [1][-]{section.9.2}{GUI Server-Konsole}{chapter.9}
+\BOOKMARK [2][-]{subsection.9.2.1}{Die Architektur}{section.9.2}
+\BOOKMARK [2][-]{subsection.9.2.2}{Client-Seite}{section.9.2}
+\BOOKMARK [2][-]{subsection.9.2.3}{Server-Seite}{section.9.2}
+\BOOKMARK [1][-]{section.9.3}{Verbindungsverwaltung und Projektion}{chapter.9}
+\BOOKMARK [2][-]{subsection.9.3.1}{Projektion}{section.9.3}
+\BOOKMARK [2][-]{subsection.9.3.2}{Remote Help}{section.9.3}
+\BOOKMARK [0][-]{chapter.10}{PVS-Client}{part.3}
+\BOOKMARK [1][-]{section.10.1}{Grafische Benutzeroberfl\344che}{chapter.10}
+\BOOKMARK [1][-]{section.10.2}{User-Interface f\374r Benutzerkonfiguration}{chapter.10}
+\BOOKMARK [1][-]{section.10.3}{Darstellung von VNC-Datenstr\366men}{chapter.10}
+\BOOKMARK [1][-]{section.10.4}{Chat-Interface}{chapter.10}
+\BOOKMARK [1][-]{section.10.5}{Datei\374bertragung und Interface}{chapter.10}
+\BOOKMARK [1][-]{section.10.6}{VNC Server}{chapter.10}
+\BOOKMARK [2][-]{subsection.10.6.1}{Vergleich von VNC Servern}{section.10.6}
+\BOOKMARK [2][-]{subsection.10.6.2}{VNC Script}{section.10.6}
+\BOOKMARK [1][-]{section.10.7}{VNC Viewer}{chapter.10}
+\BOOKMARK [2][-]{subsection.10.7.1}{Tastatur und Maussteuerung}{section.10.7}
+\BOOKMARK [1][-]{section.10.8}{Signalbehandlung}{chapter.10}
+\BOOKMARK [-1][-]{part.4}{IV Anhang}{}
diff --git a/doc/LaTeX/pvs-doc.pdf b/doc/LaTeX/pvs-doc.pdf
new file mode 100644
index 0000000..2b43baf
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.pdf
Binary files differ
diff --git a/doc/LaTeX/pvs-doc.toc b/doc/LaTeX/pvs-doc.toc
new file mode 100644
index 0000000..cfaa531
--- /dev/null
+++ b/doc/LaTeX/pvs-doc.toc
@@ -0,0 +1,65 @@
+\select@language {ngerman}
+\contentsline {chapter}{Inhaltsverzeichnis}{I}{section*.1}
+\contentsline {part}{I\hspace {1em}Idee und \IeC {\"U}berblick}{1}{part.1}
+\contentsline {chapter}{\numberline {1}Idee}{3}{chapter.1}
+\contentsline {chapter}{\numberline {2}Funktionen eines Software-Video-Switchs}{5}{chapter.2}
+\contentsline {section}{\numberline {2.1}W\IeC {\"u}nschenswerte Basisfunktionen}{5}{section.2.1}
+\contentsline {section}{\numberline {2.2}Funktionserweiterungen}{5}{section.2.2}
+\contentsline {chapter}{\numberline {3}Aufbau dieses Handbuchs}{7}{chapter.3}
+\contentsline {section}{\numberline {3.1}Heraushebungen und Formatierungen}{7}{section.3.1}
+\contentsline {part}{II\hspace {1em}Bedienungsanleitung}{9}{part.2}
+\contentsline {chapter}{\numberline {4}PVS-Steuerkonsole}{11}{chapter.4}
+\contentsline {section}{\numberline {4.1}Allgemein}{11}{section.4.1}
+\contentsline {subsection}{\numberline {4.1.1}Die Client-Liste}{12}{subsection.4.1.1}
+\contentsline {subsection}{\numberline {4.1.2}Die VNC-Frames}{12}{subsection.4.1.2}
+\contentsline {subsection}{\numberline {4.1.3}Tastenk\IeC {\"u}rzel f\IeC {\"u}r PVS-Server}{14}{subsection.4.1.3}
+\contentsline {chapter}{\numberline {5}PVS-Client}{15}{chapter.5}
+\contentsline {section}{\numberline {5.1}Chat}{16}{section.5.1}
+\contentsline {section}{\numberline {5.2}Konfiguration}{17}{section.5.2}
+\contentsline {part}{III\hspace {1em}Entwicklerdokumentation}{19}{part.3}
+\contentsline {chapter}{\numberline {6}Erzeugen und Installieren der Applikation}{21}{chapter.6}
+\contentsline {section}{\numberline {6.1}Voraussetzungen}{21}{section.6.1}
+\contentsline {section}{\numberline {6.2}Kompilieren aus Quellen}{22}{section.6.2}
+\contentsline {section}{\numberline {6.3}Installation}{22}{section.6.3}
+\contentsline {chapter}{\numberline {7}Eingesetzte GUI-Bibliothek}{25}{chapter.7}
+\contentsline {section}{\numberline {7.1}Internationalisierung}{25}{section.7.1}
+\contentsline {chapter}{\numberline {8}Aufbau und Funktionsweise des PVS}{27}{chapter.8}
+\contentsline {section}{\numberline {8.1}Einzelne Komponenten}{27}{section.8.1}
+\contentsline {subsection}{\numberline {8.1.1}Zuordnung von Konsole und Clients}{27}{subsection.8.1.1}
+\contentsline {subsubsection}{Absicherung und Verifikation der Identit\IeC {\"a}t}{27}{section*.4}
+\contentsline {subsubsection}{Generierung von Sitzungsnamen}{28}{section*.5}
+\contentsline {section}{\numberline {8.2}\IeC {\"U}berblick \IeC {\"u}ber Aktivit\IeC {\"a}ten auf Clients}{29}{section.8.2}
+\contentsline {subsection}{\numberline {8.2.1}Projektion an Alle}{29}{subsection.8.2.1}
+\contentsline {subsection}{\numberline {8.2.2}Projektion eines Clients auf dem Beamer}{29}{subsection.8.2.2}
+\contentsline {subsection}{\numberline {8.2.3}Chat- und Informationskanal}{30}{subsection.8.2.3}
+\contentsline {section}{\numberline {8.3}Netzwerkkommunikation}{32}{section.8.3}
+\contentsline {subsection}{\numberline {8.3.1}PVS-Protokoll}{32}{subsection.8.3.1}
+\contentsline {subsection}{\numberline {8.3.2}PVS-Messages}{33}{subsection.8.3.2}
+\contentsline {chapter}{\numberline {9}PVS-Steuerkonsole}{35}{chapter.9}
+\contentsline {section}{\numberline {9.1}pvsmgr in Qt}{35}{section.9.1}
+\contentsline {section}{\numberline {9.2}GUI Server-Konsole}{35}{section.9.2}
+\contentsline {subsection}{\numberline {9.2.1}Die Architektur}{35}{subsection.9.2.1}
+\contentsline {subsubsection}{Clientliste-Ansicht}{38}{section*.6}
+\contentsline {subsubsection}{VNC-Ansicht}{39}{section*.7}
+\contentsline {subsection}{\numberline {9.2.2}Client-Seite}{40}{subsection.9.2.2}
+\contentsline {subsection}{\numberline {9.2.3}Server-Seite}{40}{subsection.9.2.3}
+\contentsline {section}{\numberline {9.3}Verbindungsverwaltung und Projektion}{41}{section.9.3}
+\contentsline {subsection}{\numberline {9.3.1}Projektion}{41}{subsection.9.3.1}
+\contentsline {subsubsection}{Qualit\IeC {\"a}tsoptionen}{42}{section*.8}
+\contentsline {subsection}{\numberline {9.3.2}Remote Help}{42}{subsection.9.3.2}
+\contentsline {chapter}{\numberline {10}PVS-Client}{43}{chapter.10}
+\contentsline {section}{\numberline {10.1}Grafische Benutzeroberfl\IeC {\"a}che}{44}{section.10.1}
+\contentsline {section}{\numberline {10.2}User-Interface f\IeC {\"u}r Benutzerkonfiguration}{45}{section.10.2}
+\contentsline {section}{\numberline {10.3}Darstellung von VNC-Datenstr\IeC {\"o}men}{45}{section.10.3}
+\contentsline {section}{\numberline {10.4}Chat-Interface}{46}{section.10.4}
+\contentsline {section}{\numberline {10.5}Datei\IeC {\"u}bertragung und Interface}{46}{section.10.5}
+\contentsline {section}{\numberline {10.6}VNC Server}{47}{section.10.6}
+\contentsline {subsection}{\numberline {10.6.1}Vergleich von VNC Servern}{48}{subsection.10.6.1}
+\contentsline {paragraph}{Vino}{48}{section*.9}
+\contentsline {paragraph}{Krfb}{48}{section*.10}
+\contentsline {paragraph}{x11vnc}{49}{section*.11}
+\contentsline {subsection}{\numberline {10.6.2}VNC Script}{50}{subsection.10.6.2}
+\contentsline {section}{\numberline {10.7}VNC Viewer}{50}{section.10.7}
+\contentsline {subsection}{\numberline {10.7.1}Tastatur und Maussteuerung}{51}{subsection.10.7.1}
+\contentsline {section}{\numberline {10.8}Signalbehandlung}{52}{section.10.8}
+\contentsline {part}{IV\hspace {1em}Anhang}{53}{part.4}
diff --git a/doc/LaTeX/zusfassung.log b/doc/LaTeX/zusfassung.log
new file mode 100644
index 0000000..4924af6
--- /dev/null
+++ b/doc/LaTeX/zusfassung.log
@@ -0,0 +1,333 @@
+This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2010.9.4) 2 OCT 2010 17:00
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**zusfassung.tex
+(./zusfassung.tex
+LaTeX2e <2009/09/24>
+Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
+yphenation, loaded.
+! Undefined control sequence.
+l.2 \small
+
+?
+! Undefined control sequence.
+l.3 \section
+ *{Zusammenfassung}
+?
+
+! LaTeX Error: Missing \begin{document}.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.3 \section*
+ {Zusammenfassung}
+?
+Missing character: There is no * in font nullfont!
+Missing character: There is no Z in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no f in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no g in font nullfont!
+Missing character: There is no D in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no P in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no l in font nullfont!
+Missing character: There is no V in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no S in font nullfont!
+Missing character: There is no w in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no c in font nullfont!
+Missing character: There is no h in font nullfont!
+Missing character: There is no ( in font nullfont!
+Missing character: There is no P in font nullfont!
+Missing character: There is no V in font nullfont!
+Missing character: There is no S in font nullfont!
+Missing character: There is no ) in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no A in font nullfont!
+Missing character: There is no p in font nullfont!
+Missing character: There is no p in font nullfont!
+Missing character: There is no l in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no k in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no , in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no g in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no Z in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no Z in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no g in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no O in font nullfont!
+Missing character: There is no p in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no S in font nullfont!
+Missing character: There is no L in font nullfont!
+Missing character: There is no X in font nullfont!
+Missing character: There is no - in font nullfont!
+Missing character: There is no P in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no j in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no k in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no R in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no c in font nullfont!
+Missing character: There is no h in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no z in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no U in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no v in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no à in font nullfont!
+Missing character: There is no ¤ in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no F in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no b in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no g in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no L in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no h in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no h in font nullfont!
+Missing character: There is no l in font nullfont!
+Missing character: There is no f in font nullfont!
+Missing character: There is no à in font nullfont!
+Missing character: There is no ¼ in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no K in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no u in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no k in font nullfont!
+Missing character: There is no a in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no y in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no m in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no w in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no c in font nullfont!
+Missing character: There is no k in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no l in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no w in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no . in font nullfont!
+
+Overfull \hbox (20.0pt too wide) in paragraph at lines 3--5
+[]
+ []
+
+
+! LaTeX Error: Missing \begin{document}.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.6 I
+ nzwischen liegt die Version 3 vor ...
+?
+Missing character: There is no I in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no z in font nullfont!
+Missing character: There is no w in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no c in font nullfont!
+Missing character: There is no h in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no l in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no g in font nullfont!
+Missing character: There is no t in font nullfont!
+Missing character: There is no d in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no V in font nullfont!
+Missing character: There is no e in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no s in font nullfont!
+Missing character: There is no i in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no n in font nullfont!
+Missing character: There is no 3 in font nullfont!
+Missing character: There is no v in font nullfont!
+Missing character: There is no o in font nullfont!
+Missing character: There is no r in font nullfont!
+Missing character: There is no . in font nullfont!
+Missing character: There is no . in font nullfont!
+Missing character: There is no . in font nullfont!
+
+Overfull \hbox (20.0pt too wide) in paragraph at lines 6--7
+[]
+ []
+
+
+! LaTeX Error: The font size command \normalsize is not defined:
+ there is probably something wrong with the class file.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.9 \normalsize
+
+?
+
+! LaTeX Error: The font size command \normalsize is not defined:
+ there is probably something wrong with the class file.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.10 \newpage
+
+?
+[1])
+*
+(Please type a command or say `\end')
+*
+(Please type a command or say `\end')
+*
+(Please type a command or say `\end')
+*q
+
+! LaTeX Error: Missing \begin{document}.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+<*> q
+
+? \end
+Type <return> to proceed, S to scroll future error messages,
+R to run without stopping, Q to run quietly,
+I to insert something,
+1 or ... or 9 to ignore the next 1 to 9 tokens of input,
+H for help, X to quit.
+? x
+
+Here is how much of TeX's memory you used:
+ 8 strings out of 495061
+ 296 string characters out of 1182622
+ 45108 words of memory out of 3000000
+ 3283 multiletter control sequences out of 15000+50000
+ 3640 words of font info for 14 fonts, out of 3000000 for 9000
+ 28 hyphenation exceptions out of 8191
+ 19i,4n,14p,221b,113s stack positions out of 5000i,500n,10000p,200000b,50000s
+Output written on zusfassung.pdf (1 page, 914 bytes).
+PDF statistics:
+ 6 PDF objects out of 1000 (max. 8388607)
+ 0 named destinations out of 1000 (max. 500000)
+ 1 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/icons/gearsgo.png b/icons/gearsgo.png
new file mode 100644
index 0000000..e5c3217
--- /dev/null
+++ b/icons/gearsgo.png
Binary files differ
diff --git a/icons/gearsstop.png b/icons/gearsstop.png
new file mode 100644
index 0000000..23adfbb
--- /dev/null
+++ b/icons/gearsstop.png
Binary files differ
diff --git a/pvsmgr.qrc b/pvsmgr.qrc
index 683ef89..88b62f2 100644
--- a/pvsmgr.qrc
+++ b/pvsmgr.qrc
@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/">
+ <file>icons/gearsgo.png</file>
<file>icons/gears.png</file>
<file>icons/projection.png</file>
<file>icons/reset.png</file>
diff --git a/src/core/pvsClient.cpp b/src/core/pvsClient.cpp
index 0d08b1d..f048b54 100644
--- a/src/core/pvsClient.cpp
+++ b/src/core/pvsClient.cpp
@@ -299,3 +299,23 @@ void PVSClient::vncFinished()
_vncPasswordReceived = false;
}
+QVector<QString> PVSClient::getProcessesVector()
+{
+ return processesVector;
+}
+
+void PVSClient::clearProcessesVector()
+{
+ processesVector.clear();
+}
+
+void PVSClient::processesVectorAdd(QString msg)
+{
+ if (msg.indexOf("<#>") > 0)
+ processesVector.append(msg);
+ else if (msg.indexOf("vector ready") == 0)
+ {
+ emit processVectorReady(true);
+ ConsoleLog writeError("processVectorReady(true)!");
+ }
+}
diff --git a/src/core/pvsClient.h b/src/core/pvsClient.h
index 180995a..e547e12 100644
--- a/src/core/pvsClient.h
+++ b/src/core/pvsClient.h
@@ -15,6 +15,7 @@
#include "src/net/pvsClientConnection.h"
#include "src/gui/frame.h"
#include <QtCore/QThread>
+#include <QVector>
class PVSServer;
class VNCConnection;
@@ -104,6 +105,16 @@ public:
int getClientindex() { return _clientIndex; }
int getConnectionId() { return _pvsClientConnection->getID(); }
+ QVector<QString> getProcessesVector();
+
+
+public slots:
+ void processesVectorAdd(QString msg);
+ void clearProcessesVector();
+
+signals:
+ void processVectorReady( bool );
+
private Q_SLOTS:
void vncFinished();
@@ -124,6 +135,8 @@ private:
QString _vncRwPassword;
int _clientIndex;
bool _vncAllowed, _vncRequested, _vncPasswordReceived, _vncRwPasswordReceived, _vncInitMutex, _vncProject;
+ QVector<QString> processesVector;
+
};
#endif
diff --git a/src/core/pvsConnectionManager.cpp b/src/core/pvsConnectionManager.cpp
index 8a35ca9..d0f1479 100644
--- a/src/core/pvsConnectionManager.cpp
+++ b/src/core/pvsConnectionManager.cpp
@@ -192,6 +192,9 @@ void PVSConnectionManager::onCommand(PVSMsg command)
{
QString message = command.getMessage();
QString ident = command.getIdent();
+
+ PVSClient* tmp = getClientFromConnectionId(command.getSndID());
+
if (ident.compare("VNCSRVRESULT") == 0)
{
int e = string2Int(message);
@@ -218,6 +221,45 @@ void PVSConnectionManager::onCommand(PVSMsg command)
break;
}
}
+ if (ident.compare("PROCESSES") == 0)
+ {
+ QString id = int2String(command.getSndID());
+ if (message.startsWith("START"))
+ {
+ QString msgcontent = message.remove(0,6);
+ if (msgcontent.startsWith("ERROR"))
+ {
+ ConsoleLog writeError("[Client: " + id + ", PROCESS] could not start: " +msgcontent.remove(0,6));
+ }
+ else
+ {
+ //ConsoleLog writeLine(QString("[Client: " + id + ", PROCESS] started: " +msgcontent));
+ }
+ }
+ if (message.startsWith("STOP"))
+ {
+ QString msgcontent = message.remove(0,5);
+ if (msgcontent.startsWith("ERROR"))
+ {
+ ConsoleLog writeError("[Client: " + id + ", PROCESS] could not stop: " +msgcontent.remove(0,6));
+ }
+ else
+ {
+ //ConsoleLog writeLine(QString("[Client: " + id + ", PROCESS] stopped: " +msgcontent));
+ }
+ }
+ if (message.startsWith("SHOW"))
+ {
+ QString msgcontent = message.remove(0,5);
+ if (msgcontent.startsWith("ERROR"))
+ ConsoleLog writeError("[Client: " + id + ", PROCESS] could not show processes: " +msgcontent.remove(0,6));
+ else if (msgcontent.startsWith("clear"))
+ tmp->clearProcessesVector();
+ else if (msgcontent.startsWith("finished"))
+ tmp->processesVectorAdd("vector ready");
+ else tmp->processesVectorAdd(message);
+ }
+ }
}
void PVSConnectionManager::onChat(PVSMsg chatMsg)
{
diff --git a/src/gui/connectionWindow.cpp b/src/gui/connectionWindow.cpp
index cf51051..df31562 100644
--- a/src/gui/connectionWindow.cpp
+++ b/src/gui/connectionWindow.cpp
@@ -472,6 +472,35 @@ void ConnectionWindow::messageStation(QString ident, QString message,
pvsCon->sendMessage(PVSMESSAGE, ident, message);
}
+/*
+ * to send COMMAND instead of PVSMESSaGE
+ */
+bool ConnectionWindow::commandStations(QString ident, QString message) {
+ if (std::list<QString>* messageList = MainWindow::getConnectionList()->getSelectedClients()) {
+ if (!messageList->empty()) {
+ for (std::list<QString>::iterator tmpIt = messageList->begin(); tmpIt
+ != messageList->end(); tmpIt++) {
+ PVSClient
+ * tmpConnection =
+ PVSConnectionManager::getManager()->getClientFromIp(
+ (*tmpIt).toUtf8().data());
+ // we don't want to lock the dozent machine
+ if (tmpConnection && tmpConnection->getConnectionFrame()->getFrame() &&
+ !tmpConnection->getConnectionFrame()->getFrame()->isDozent())
+ {
+ //messageStation(ident, message, tmpConnection);
+ tmpConnection->sendMessage(PVSCOMMAND, ident, message);
+ } else {
+ // scream in agony
+ }
+ }
+ }
+ delete messageList;
+ }
+ return true;
+}
+
+
bool ConnectionWindow::lockStationsWithMessage(QString message)
{
if (!hasDozent)
diff --git a/src/gui/connectionWindow.h b/src/gui/connectionWindow.h
index 81b5033..e7d0177 100644
--- a/src/gui/connectionWindow.h
+++ b/src/gui/connectionWindow.h
@@ -83,6 +83,7 @@ public:
bool lockInvertStations();
void lockInvertStation(PVSClient* pvsCon);
bool messageStations(QString ident, QString message);
+ bool commandStations(QString ident, QString message);
void messageStation(QString ident, QString message, PVSClient* pvsCon);
bool lockStationsWithMessage(QString message);
void lockStationsWithMessage(QString message, PVSClient* pvsCon);
diff --git a/src/gui/dialog.cpp b/src/gui/dialog.cpp
index 3c9b7a2..5f24009 100644
--- a/src/gui/dialog.cpp
+++ b/src/gui/dialog.cpp
@@ -30,7 +30,7 @@ Dialog::Dialog(QWidget *parent) :
connect( dui->send, SIGNAL( clicked()), this, SLOT( send()));
connect( dui->cancel, SIGNAL( clicked()), this, SLOT( NotSend()));
- connect(dui->message, SIGNAL(textChanged()), this, SLOT(textchange()));
+ connect( dui->message, SIGNAL(textChanged()), this, SLOT(textchange()));
}
Dialog::~Dialog()
diff --git a/src/gui/mainWindow.cpp b/src/gui/mainWindow.cpp
index 10c64d6..815f001 100644
--- a/src/gui/mainWindow.cpp
+++ b/src/gui/mainWindow.cpp
@@ -32,6 +32,7 @@ using namespace std;
#include <src/gui/connectionList.h>
#include <src/gui/connectionWindow.h>
#include <src/gui/profileDialog.h>
+#include <src/gui/processesDialog.h>
//#include <src/gui/dialog.h>
#include <src/core/pvsConnectionManager.h>
#include <iostream>
@@ -108,6 +109,7 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->actionUnprojection, SIGNAL(triggered()), this, SLOT(unprojecttoolbar()));
connect(ui->actionDozent, SIGNAL(triggered()), this, SLOT(setdozenttoolbar()));
connect(ui->actionShowProcesses, SIGNAL(triggered()), this, SLOT(showProcesses()));
+ connect(ui->actionStartProcess, SIGNAL(triggered()), this, SLOT(startProcess()));
// Ui specific settings
@@ -133,6 +135,8 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->actionCreate_profile, SIGNAL(triggered()), this, SLOT(createProfile()));
connect(ui->actionShowProcesses, SIGNAL(triggered()), this, SLOT(showProcesses()));
ui->actionShowProcesses->setStatusTip(tr("Show Processes of the selected Client"));
+ connect(ui->actionStartProcess, SIGNAL(triggered()), this, SLOT(startProcess()));
+ ui->actionStartProcess->setStatusTip(tr("Starts Process on the selected Client(s)"));
connect(ui->actionShow_Username, SIGNAL(triggered()), this, SLOT(showusername()));
connect(ui->actionShow_Hostname_IP, SIGNAL(triggered()), this, SLOT(showip()));
@@ -769,13 +773,50 @@ void MainWindow::showProcesses()
{
std::list<QString>* selectedClients =
MainWindow::getConnectionList()->getSelectedClients();
- if (selectedClients->size() == 1)
+ if (selectedClients->size() >= 1)
+ {
+ ProcessDialog procDialog;
+ procDialog.exec();
+
+ }
+ else
+ {
+ QString
+ message =
+ QString(
+ tr(
+ "This operation can only be performed if you have selected at least one Client!"));
+ QMessageBox::information(this, "PVS", message);
+ }
+
+}
+
+
+/* Perform some action if actionStartProcess button was pressed
+ *
+ */
+void MainWindow::startProcess()
+{
+ std::list<QString>* selectedClients =
+ MainWindow::getConnectionList()->getSelectedClients();
+ if (selectedClients->size() >= 1)
{
// do stuff
- PVSClient * pvsClient =
+ /*PVSClient * pvsClient =
PVSConnectionManager::getManager()->getClientFromIp(
- selectedClients->front().toStdString().c_str());
- pvsClient->sendMessage(PVSCOMMAND, "SHOWPROCESSES", "");
+ selectedClients->front().toStdString().c_str());*/
+
+ ProcessesStartDialog procD;
+ QString myString = NULL;
+ int result = procD.exec();
+
+ if (result == 1)
+ {
+ myString = MainWindow::getWindow()->getProcessesDialog();
+ if(!myString.isEmpty())
+ MainWindow::getConnectionWindow()->commandStations("STARTPROCESS",myString);
+ }
+
}
else
{
@@ -783,7 +824,7 @@ void MainWindow::showProcesses()
message =
QString(
tr(
- "This operation can only be performed if you have selected a Client!"));
+ "This operation can only be performed if you have selected at least one Client!"));
QMessageBox::information(this, "PVS", message);
}
}
diff --git a/src/gui/mainWindow.h b/src/gui/mainWindow.h
index 574be7e..2ab62f8 100644
--- a/src/gui/mainWindow.h
+++ b/src/gui/mainWindow.h
@@ -10,9 +10,11 @@
#include <src/gui/connectionWindow.h>
#include <src/gui/profileDialog.h>
//#include <src/gui/dialog.h>
+#include <src/gui/processesStartDialog.h>
#include <src/core/pvsClient.h>
#include <src/core/pvsConnectionManager.h>
#include "src/gui/aboutDialog.h"
+#include "src/gui/processesDialog.h"
#include "src/gui/serverChatDialog.h"
#include <src/gui/serverFileTransfert.h>
@@ -94,6 +96,9 @@ public:
void setMsgDialog(QString msgd){msgDialog = msgd;};
QString getMsgDialog(){return msgDialog;};
+ void setProcessesDialog(QString procd){procDialog = procd;};
+ QString getProcessesDialog(){return procDialog;};
+
bool isLockAllStatus()
{
return _isLockAll;
@@ -131,9 +136,10 @@ private:
ConnectionDialog* pwDiag;
ConnectionDialog* messageDiag;*/
- AboutDialog *_aboutDialog;
+ AboutDialog *_aboutDialog;
QString msgDialog;
+ QString procDialog;
bool bgimage;
bool locked, locked1;
bool force_square;
@@ -179,6 +185,7 @@ public slots:
void setdozenttoolbar();
void startChatDialog();
void showProcesses();
+ void startProcess();
private slots:
void onToggleLog(bool showtime);
diff --git a/src/gui/processWidget.cpp b/src/gui/processWidget.cpp
new file mode 100644
index 0000000..9b59b2a
--- /dev/null
+++ b/src/gui/processWidget.cpp
@@ -0,0 +1,98 @@
+/*
+# Copyright (c) 2010 - OpenSLX Project, Computer Center University of Freiburg
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# processWidget.cpp
+ Widget to start/stop processes on a client. This widget is used in
+ processesDialog.cpp as a tab in the QTabWidget
+# -----------------------------------------------------------------------------
+*/
+
+#include "processesDialog.h"
+#include "processWidget.h"
+#include "ui_processWidget.h"
+
+ProcessWidget::ProcessWidget(QWidget *parent, PVSClient *cl):
+ QWidget(parent),
+ prowui(new Ui::ProcessWidget)
+{
+ prowui->setupUi(this);
+
+ client = cl;
+
+ connect( prowui->startButton, SIGNAL( clicked()), this, SLOT( startProcess()));
+ connect( prowui->refreshButton, SIGNAL( clicked()), this, SLOT( refrProcessList()));
+ connect( prowui->stopButton, SIGNAL( clicked()), this, SLOT( stopProcess()));
+ connect( client, SIGNAL( processVectorReady(bool)), this, SLOT( refrProcessList()));
+
+ sendCommand("SHOWPROCESSES", "");
+}
+
+void ProcessWidget::startProcess()
+{
+ QMessageBox::StandardButton start = QMessageBox::question(0,
+ tr("PVS Start Process"), tr("Do you want to start the process: ") + prowui->processLineEdit->text() +
+ tr(" on User '") + client->getDesktopName() + tr("' ?"),
+ QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
+
+ if (start == QMessageBox::Ok)
+ {
+ sendCommand("STARTPROCESS", prowui->processLineEdit->text());
+ sendCommand("SHOWPROCESSES", "");
+ }
+ prowui->processLineEdit->clear();
+}
+
+void ProcessWidget::refrProcessList()
+{
+ for(int i=prowui->processTable->rowCount(); i == 0; i--)
+ {
+ prowui->processTable->removeRow(i);
+ }
+ prowui->processTable->setRowCount(0);
+ QVector<QString> processes = client->getProcessesVector();
+
+ for (int i=0; i<processes.size(); i++)
+ {
+ prowui->processTable->setRowCount(i+1);
+ QStringList processesList = processes.at(i).split(QRegExp("<#>"));
+ for (int j=0; j<processesList.size()&&j<3; j++)
+ {
+ prowui->processTable->setItem(i,j,new QTableWidgetItem(processesList.at(j),0));
+ }
+ }
+ prowui->processTable->selectRow(0);
+}
+
+void ProcessWidget::stopProcess()
+{
+ if (prowui->processTable->rowCount() > 0)
+ {
+ QMessageBox::StandardButton start = QMessageBox::question(0,
+ tr("PVS Start Process"), tr("Do you want to stop the process: ") + prowui->processTable->item(prowui->processTable->currentRow(),1)->text() +
+ tr(" on User '") + client->getDesktopName() + tr("' ?"),
+ QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
+ if (start == QMessageBox::Ok)
+ {
+ sendCommand("KILLPROCESS", prowui->processTable->item(prowui->processTable->currentRow(),0)->text());
+ sendCommand("SHOWPROCESSES", "");
+ }
+ }
+}
+
+void ProcessWidget::sendCommand(QString ident, QString message)
+{
+ client->sendMessage(PVSCOMMAND, ident, message);
+}
+
+ProcessWidget::~ProcessWidget()
+{
+ delete prowui;
+}
diff --git a/src/gui/processWidget.h b/src/gui/processWidget.h
new file mode 100644
index 0000000..7e7eb72
--- /dev/null
+++ b/src/gui/processWidget.h
@@ -0,0 +1,35 @@
+#ifndef PROCESSWIDGET_H_
+#define PROCESSWIDGET_H_
+
+#include <QDialog>
+#include <QtGui>
+#include <QVector>
+
+namespace Ui {
+ class ProcessWidget;
+}
+
+class PVSClient;
+class ProcessWidget: public QWidget
+{
+ Q_OBJECT
+
+public:
+ ProcessWidget(QWidget *parent, PVSClient *client);
+ ~ ProcessWidget();
+ QAbstractItemModel *model;
+public slots:
+ void refrProcessList();
+
+private:
+ Ui::ProcessWidget *prowui;
+ PVSClient *client;
+ QVector<QString> *processes;
+
+private slots:
+ void startProcess();
+ void stopProcess();
+ void sendCommand(QString ident, QString message);
+};
+
+#endif
diff --git a/src/gui/processesDialog.cpp b/src/gui/processesDialog.cpp
new file mode 100644
index 0000000..d2ef7dc
--- /dev/null
+++ b/src/gui/processesDialog.cpp
@@ -0,0 +1,62 @@
+/*
+# Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# processesDialog.cpp
+ Dialog where a tab with running processes for every client is shown
+# -----------------------------------------------------------------------------
+*/
+
+#include "processesDialog.h"
+#include "ui_processesDialog.h"
+#include <src/gui/processWidget.h>
+//#include <src/gui/mainWindow.h>
+
+ProcessDialog::ProcessDialog(QDialog *parent) :
+ QDialog(parent),
+ procui(new Ui::ProcessesDialog)
+{
+ procui->setupUi(this);
+
+ tWidget = new QTabWidget;
+ procui->grLayout->addWidget(tWidget);
+
+ connect( tWidget, SIGNAL( currentChanged(int)), this, SLOT( currChanged()));
+
+ std::list<PVSClient*> listAll =
+ PVSConnectionManager::getManager()->getConnections();
+ for (std::list<PVSClient*>::iterator it = listAll.begin(); it
+ != listAll.end(); it++)
+ {
+ if (*it == NULL || (*it)->getConnectionFrame() == NULL) continue;
+ if ((*it)->getConnectionFrame()->getFrame() &&
+ /*!(*it)->getConnectionFrame()->getFrame()->isDozent() &&*/
+ (*it)->getVNCConnection())
+ {tWidget->addTab(new ProcessWidget(0, *it), (*it)->getUserName());
+ tWidget->addTab(new ProcessWidget(0, *it), (*it)->getUserName());
+ tWidget->addTab(new ProcessWidget(0, *it), (*it)->getUserName());}
+ else if (!(*it)->getConnectionFrame()->getFrame())
+ ConsoleLog writeError(QString("The Frame connection from client: ").
+ append((*it)->getConnectionFrame()->getTaskbarTitle()).
+ append(QString(" is corrupted. Reconnect the client it again.")));
+ }
+}
+
+// if other Tab is activated we say our tab to refresh the processList
+void ProcessDialog::currChanged()
+{
+ ProcessWidget *temp = static_cast<ProcessWidget*>(tWidget->currentWidget());
+ temp->refrProcessList();
+}
+
+ProcessDialog::~ProcessDialog()
+{
+ delete procui;
+}
diff --git a/src/gui/processesDialog.h b/src/gui/processesDialog.h
new file mode 100644
index 0000000..9d98136
--- /dev/null
+++ b/src/gui/processesDialog.h
@@ -0,0 +1,37 @@
+#ifndef PROCESSESDIALOG_H
+#define PROCESSESDIALOG_H
+
+#include <QDialog>
+#include <QtGui>
+#include <src/gui/processWidget.h>
+#include <src/gui/mainWindow.h>
+#include <list>
+
+
+namespace Ui {
+ class ProcessesDialog;
+}
+
+class ConnectionList;
+class PVSClient;
+class PVSConnectionManager;
+class ProcessesWidget;
+class MainWindow;
+
+class ProcessDialog : public QDialog {
+ Q_OBJECT
+public:
+ ProcessDialog(QDialog *parent = 0);
+ ~ProcessDialog();
+
+
+private:
+ Ui::ProcessesDialog *procui;
+ QTabWidget *tWidget;
+ QDialogButtonBox *buttonBox;
+
+private slots:
+ void currChanged();
+};
+
+#endif // PROCESSESDIALOG_H
diff --git a/src/gui/processesStartDialog.cpp b/src/gui/processesStartDialog.cpp
new file mode 100644
index 0000000..b4c8c79
--- /dev/null
+++ b/src/gui/processesStartDialog.cpp
@@ -0,0 +1,75 @@
+/*
+# Copyright (c) 2010 - OpenSLX Project, Computer Center University of Freiburg
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# processesStartDialog.cpp
+ Dialog to get process to send to clients
+# -----------------------------------------------------------------------------
+*/
+
+#include "processesStartDialog.h"
+#include "ui_processesStartDialog.h"
+#include <src/gui/mainWindow.h>
+
+ProcessesStartDialog::ProcessesStartDialog(QWidget *parent) :
+ QDialog(parent)
+{
+ textLabel = new QLabel;
+ textLabel->setText("Process to start:");
+
+ messageEdit = new QLineEdit;
+
+ layout = new QGridLayout;
+
+ sendButton = new QPushButton(tr("Start"));
+ cancelButton = new QPushButton(tr("Cancel"));
+
+ connect( sendButton, SIGNAL( clicked()), this, SLOT( send()));
+ connect( cancelButton, SIGNAL( clicked()), this, SLOT( NotSend()));
+
+ layout->addWidget(textLabel,0,0);
+ layout->addWidget(messageEdit,1,0);
+ layout->addWidget(cancelButton,2,0);
+ layout->addWidget(sendButton,2,0);
+
+ setLayout(layout);
+ setWindowTitle(tr("PVS start Process"));
+}
+
+ProcessesStartDialog::~ProcessesStartDialog()
+{
+ //delete procstartui;
+}
+
+void ProcessesStartDialog::send()
+{
+ QString procd = messageEdit->text();
+ MainWindow::getWindow()->setProcessesDialog(procd);
+ messageEdit->clear();
+ emit accept();
+}
+
+void ProcessesStartDialog::NotSend()
+{
+ messageEdit->clear();
+ emit reject();
+}
+
+/*void ProcessesStartDialog::changeEvent(QEvent *e)
+{
+ //QDialog::changeEvent(e);
+ //switch (e->type()) {
+ //case QEvent::LanguageChange:
+ // procstartui->retranslateUi(this);
+ // break;
+ //default:
+ // break;
+ //}
+}*/
diff --git a/src/gui/processesStartDialog.h b/src/gui/processesStartDialog.h
new file mode 100644
index 0000000..61aee4f
--- /dev/null
+++ b/src/gui/processesStartDialog.h
@@ -0,0 +1,31 @@
+#ifndef PROCESSESSTARTDIALOG_H
+#define PROCESSESSTARTDIALOG_H
+
+#include <QDialog>
+#include <QtGui>
+
+
+class MainWindow;
+
+class ProcessesStartDialog : public QDialog {
+ Q_OBJECT
+public:
+ ProcessesStartDialog(QWidget *parent = 0);
+ ~ProcessesStartDialog();
+
+/*protected:
+ void changeEvent(QEvent *e);*/
+
+private:
+ QGridLayout *layout;
+ QLabel *textLabel;
+ QLineEdit *messageEdit;
+ QPushButton *sendButton;
+ QPushButton *cancelButton;
+
+private slots:
+ void send();
+ void NotSend();
+};
+
+#endif // PROCESSESSTARTDIALOG_H
diff --git a/src/gui/ui/mainwindow.ui b/src/gui/ui/mainwindow.ui
index 374177a..285d0f2 100644
--- a/src/gui/ui/mainwindow.ui
+++ b/src/gui/ui/mainwindow.ui
@@ -287,6 +287,7 @@
<addaction name="actionLock"/>
<addaction name="actionChat"/>
<addaction name="actionShowProcesses"/>
+ <addaction name="actionStartProcess"/>
</widget>
<action name="actionShow_Username">
<property name="checkable">
@@ -544,6 +545,15 @@
<string>Show Processes of the selected Client</string>
</property>
</action>
+ <action name="actionStartProcess">
+ <property name="icon">
+ <iconset resource="../../../pvsmgr.qrc">
+ <normaloff>:/icons/gearsgo.png</normaloff>:/icons/gearsgo.png</iconset>
+ </property>
+ <property name="text">
+ <string>Start Process</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
diff --git a/src/gui/ui/mainwindowtouch.ui b/src/gui/ui/mainwindowtouch.ui
index 8b76101..ae1d0cf 100644
--- a/src/gui/ui/mainwindowtouch.ui
+++ b/src/gui/ui/mainwindowtouch.ui
@@ -366,6 +366,7 @@
<addaction name="separator"/>
<addaction name="actionDozent"/>
<addaction name="actionShowProcesses"/>
+ <addaction name="actionStartProcess"/>
</widget>
<action name="actionShow_Username">
<property name="checkable">
@@ -649,6 +650,15 @@
<string>Show Processes of the selected Client</string>
</property>
</action>
+ <action name="actionStartProcess">
+ <property name="icon">
+ <iconset resource="../../../pvsmgr.qrc">
+ <normaloff>:/icons/gearsgo.png</normaloff>:/icons/gearsgo.png</iconset>
+ </property>
+ <property name="text">
+ <string>Start Process</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
diff --git a/src/gui/ui/processWidget.ui b/src/gui/ui/processWidget.ui
new file mode 100644
index 0000000..3e7f55e
--- /dev/null
+++ b/src/gui/ui/processWidget.ui
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ProcessWidget</class>
+ <widget class="QWidget" name="ProcessWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>646</width>
+ <height>504</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <widget class="QWidget" name="verticalLayoutWidget_2">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>631</width>
+ <height>481</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Prozessliste</string>
+ </property>
+ <widget class="QWidget" name="verticalLayoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>24</y>
+ <width>611</width>
+ <height>361</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTableWidget" name="processTable">
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="showDropIndicator" stdset="0">
+ <bool>false</bool>
+ </property>
+ <property name="dragDropOverwriteMode">
+ <bool>false</bool>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="gridStyle">
+ <enum>Qt::DotLine</enum>
+ </property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <property name="cornerButtonEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="rowCount">
+ <number>0</number>
+ </property>
+ <attribute name="horizontalHeaderVisible">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderCascadingSectionResizes">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderStretchLastSection">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="verticalHeaderHighlightSections">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderStretchLastSection">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderCascadingSectionResizes">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="horizontalHeaderVisible">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderHighlightSections">
+ <bool>true</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>ID</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Name</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Commandline</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="refreshButton">
+ <property name="text">
+ <string>Aktualisieren</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="stopButton">
+ <property name="text">
+ <string>Prozess beenden</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>Prozess starten</string>
+ </property>
+ <widget class="QWidget" name="horizontalLayoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>611</width>
+ <height>51</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="processLineEdit"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="startButton">
+ <property name="text">
+ <string>Prozess starten</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/ui/processesDialog.ui b/src/gui/ui/processesDialog.ui
new file mode 100644
index 0000000..4ac4859
--- /dev/null
+++ b/src/gui/ui/processesDialog.ui
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ProcessesDialog</class>
+ <widget class="QDialog" name="ProcessesDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>654</width>
+ <height>562</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Prozesse</string>
+ </property>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="geometry">
+ <rect>
+ <x>310</x>
+ <y>530</y>
+ <width>341</width>
+ <height>32</height>
+ </rect>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ <property name="centerButtons">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QWidget" name="widget" native="true">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>651</width>
+ <height>531</height>
+ </rect>
+ </property>
+ <widget class="QWidget" name="gridLayoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>651</width>
+ <height>521</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="grLayout"/>
+ </widget>
+ </widget>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ProcessesDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ProcessesDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/gui/ui/processesStartDialog.ui b/src/gui/ui/processesStartDialog.ui
new file mode 100644
index 0000000..5d8c7ee
--- /dev/null
+++ b/src/gui/ui/processesStartDialog.ui
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ProcessesStartDialog</class>
+ <widget class="QDialog" name="ProcessesStartDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>393</width>
+ <height>109</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Start Process</string>
+ </property>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
+ <y>20</y>
+ <width>351</width>
+ <height>71</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLineEdit" name="message"/>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>5</number>
+ </property>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>108</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancel">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="send">
+ <property name="text">
+ <string>Send</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/pvs.cpp b/src/pvs.cpp
index 2aaec8a..b343f29 100755
--- a/src/pvs.cpp
+++ b/src/pvs.cpp
@@ -183,15 +183,21 @@ void PVS::onCommand(PVSMsg cmdMessage)
}
if (ident.compare("SHOWPROCESSES") == 0)
{
- // do stuff to show processes
- // to test if SHOWPROCESSES command is submitted correct uncomment following lines
- // a messagebox will appear on the client
- // emit showMessage("Show Processes", "", true);
+ _pvsServerConnection->sendMessage(PVSMsg(PVSCOMMAND, "PROCESSES", "SHOW clear")); //tell the client that we want to clear his process-list
+ showProc();
return;
}
+ if (ident.compare("STARTPROCESS") == 0)
+ {
+ QProcess *proc = new QProcess( this );
+ proc->start(message); //we try to run the process with the name message
+ _pvsServerConnection->sendMessage(PVSMsg(PVSCOMMAND, "PROCESSES", "START Process "+message+": started"));
+ return;
+ }
if (ident.compare("KILLPROCESS") == 0)
{
- // do stuff to kill a process
+ QProcess *proc = new QProcess( this );
+ proc->start("kill "+message); //we try to kill the process with the given ID
return;
}
@@ -658,3 +664,70 @@ QString PVS::getConfigValue(QString key)
return _settings.value(key).toString();
}
+void PVS::showProc()
+{
+ //look at procfs
+ QDir procfs("/proc");
+ QStringList proc = procfs.entryList();
+ int uid = getuid();
+ bool write;
+
+ for (int i=0;i<proc.length();i++) //every directory in /proc is checked
+ {
+ write = false;
+ QString tmp = proc.at(i);
+ QString snd = "";
+ if (!tmp.contains(QRegExp("\\D"))) //we have to check if name is number
+ {
+ QString name = "";
+ QFile file("/proc/"+tmp+QString("/status")); //read status file
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return;
+
+ QTextStream in(&file);
+ QString line = in.readLine();
+ while (!line.isNull())
+ {
+ if (line.startsWith("Name:")) //to get the name of our process
+ {
+ name = line.remove(0,6);
+ snd.append(tmp).append(QString("<#>")).append(line).append("<#>");
+ //lets check if the process belongs to our PVS better not to show it if we dont want to crash PVS
+ } else if (line.startsWith("Gid:")) //and to check that the process is a user process
+ //we had to read name first because every file in /proc
+ //has size 0 byte
+ {
+ line.remove(0,5);
+ if (line.startsWith(QString::number(uid)))
+ write = true;
+ else break;
+
+ }
+ line = in.readLine();
+ }
+ if (write)
+ {
+ if ((name.startsWith("pvs")) || (name.startsWith("dbus")))
+ write = false;
+ }
+ if (write) //if process belongs to user (and not to PVS) we go on
+ {
+ QFile file("/proc/"+tmp+QString("/cmdline")); //and read cmdline
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return;
+
+ QTextStream in(&file);
+ QString line = in.readLine();
+ while (!line.isNull())
+ {
+ int templength = snd.length()+3;
+ snd.append(line.left(150+templength)); //but only up to a length of 150-name-id-seperators
+ break;
+ }
+ }
+ if (write) //if process belongs to user we send the line to client
+ _pvsServerConnection->sendMessage(PVSMsg(PVSCOMMAND, "PROCESSES", "SHOW "+snd));
+ }
+ }
+ _pvsServerConnection->sendMessage(PVSMsg(PVSCOMMAND, "PROCESSES", "SHOW finished")); //at the end we send that every process has been sent
+}
diff --git a/src/pvs.h b/src/pvs.h
index 1bb0747..4ba8e65 100755
--- a/src/pvs.h
+++ b/src/pvs.h
@@ -26,6 +26,9 @@
#include "src/version.h"
#include "src/util/consoleLogger.h"
#include "src/util/clientGUIUtils.h"
+#include <QFile>
+#include <QTextStream>
+#include <QDir>
class PVSServiceDiscovery;
class PVSDiscoveredServer;
@@ -135,6 +138,8 @@ private:
int stopVNCScript(); ///< stop the vnc server (via script)
static void signalHandler(int signal); //handles posix signals
+ void showProc(); //sends list of user processes to connection manager
+
PVSServerConnection* _pvsServerConnection; ///< our tcp connection object to the pvsserver
PVSServiceDiscovery *_sdClient;