diff options
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 Binary files differnew file mode 100644 index 0000000..2b43baf --- /dev/null +++ b/doc/LaTeX/pvs-doc.pdf 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 Binary files differnew file mode 100644 index 0000000..e5c3217 --- /dev/null +++ b/icons/gearsgo.png diff --git a/icons/gearsstop.png b/icons/gearsstop.png Binary files differnew file mode 100644 index 0000000..23adfbb --- /dev/null +++ b/icons/gearsstop.png @@ -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 +} @@ -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; |