CMakeLists.txt | 44 ++- cmake/modules/FindIcotool.cmake | 42 +++ cmake/modules/FreedesktopIconsMacros.cmake | 439 +++++++++++++++++++++++++++++ cmake/modules/MacroProcessManpages.cmake | 83 ++++++ ica/CMakeLists.txt | 3 + ica/helpers/CMakeLists.txt | 3 + ica/helpers/man/italc_auth_helper.1 | 28 ++ ica/ica.1 | 70 ----- ica/man/ica.1 | 101 +++++++ ica/src/ItalcVncServer.cpp | 2 +- ima/CMakeLists.txt | 12 + ima/data/italc.desktop.in | 7 +- ima/italc.1 | 35 --- ima/man/italc.1 | 32 +++ imc/CMakeLists.txt | 12 + imc/man/imc.1 | 71 +++++ lib/resources/ru.qm | Bin 77301 -> 77313 bytes lib/resources/ru.ts | 2 +- 18 files changed, 875 insertions(+), 111 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71d86f0..0a5044f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5) PROJECT(italc) @@ -16,6 +16,12 @@ INCLUDE(CheckIncludeFiles) INCLUDE(CheckFunctionExists) INCLUDE(FindPkgConfig) INCLUDE(Qt4Hacks) +INCLUDE(GNUInstallDirs) +INCLUDE(MacroProcessManpages) +IF(UNIX) + # installing Freedesktop icons only for UNIX + INCLUDE(FreedesktopIconsMacros) +ENDIF(UNIX) SET(VERSION_MAJOR "2") SET(VERSION_MINOR "0") @@ -81,6 +87,7 @@ CHECK_INCLUDE_FILES(linux/fb.h ITALC_HAVE_LINUX_FB_H) CHECK_INCLUDE_FILES(linux/input.h ITALC_HAVE_LINUX_INPUT_H) CHECK_INCLUDE_FILES(linux/uinput.h ITALC_HAVE_LINUX_UINPUT_H) CHECK_INCLUDE_FILES(linux/videodev.h ITALC_HAVE_LINUX_VIDEODEV_H) +CHECK_INCLUDE_FILES(linux/videodev2.h ITALC_HAVE_LINUX_VIDEODEV2_H) IF(NOT ITALC_BUILD_WIN32) FIND_PACKAGE(PAM REQUIRED) @@ -221,12 +228,45 @@ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib/include ${ZLIB_I LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_BINARY_DIR}/lib) LINK_LIBRARIES(${QT_LIBRARIES} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${OPENSSL_LIBRARIES}) +IF(DEFINED CMAKE_INSTALL_DATADIR) + SET( + DESKTOP_FILES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/applications" + CACHE PATH + "Install location for .desktop files (relative to prefix)." + ) + MARK_AS_ADVANCED(DESKTOP_FILES_DIR) + INSTALL( + FILES ${CMAKE_BINARY_DIR}/ima/data/italc.desktop + DESTINATION ${DESKTOP_FILES_INSTALL_DIR} + ) +ENDIF(DEFINED CMAKE_INSTALL_DATADIR) + # make sub-directories ADD_SUBDIRECTORY(lib) ADD_SUBDIRECTORY(ica) ADD_SUBDIRECTORY(ima) ADD_SUBDIRECTORY(imc) +# doc files +LIST(APPEND italc_DOC_FILES + "${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS" + "${CMAKE_CURRENT_SOURCE_DIR}/ChangeLog" + "${CMAKE_CURRENT_SOURCE_DIR}/COPYING" + "${CMAKE_CURRENT_SOURCE_DIR}/INSTALL" + "${CMAKE_CURRENT_SOURCE_DIR}/README" + "${CMAKE_CURRENT_SOURCE_DIR}/README.LZO" + "${CMAKE_CURRENT_SOURCE_DIR}/TODO" +) + +# doc dirs +LIST(APPEND italc_DOC_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/doc" +) + +# install docs +INSTALL(FILES ${italc_DOC_FILES} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}") +INSTALL(DIRECTORY ${italc_DOC_DIRS} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}") + INSTALL() # @@ -298,6 +338,8 @@ MESSAGE("\n" "iTALC build summary\n" "--------------------\n" "* Install prefix : ${CMAKE_INSTALL_PREFIX}\n" +"* Docs dir : ${CMAKE_INSTALL_DOCDIR}\n" +"* Man pages dir : ${CMAKE_INSTALL_MANDIR}\n" "* Build type : ${CMAKE_BUILD_TYPE}\n" "* Platform : ${CMAKE_SYSTEM_PROCESSOR} (${Machine})\n" "* Builtin JavaViewer support : ${STATUS_JAVA}\n" diff --git a/cmake/modules/FindIcotool.cmake b/cmake/modules/FindIcotool.cmake new file mode 100644 index 0000000..d6566f6 --- /dev/null +++ b/cmake/modules/FindIcotool.cmake @@ -0,0 +1,42 @@ +# +# - Find icotool +# This module looks for icotool. This module defines the +# following values: +# ICOTOOL_EXECUTABLE: the full path to the icotool tool. +# ICOTOOL_FOUND: True if icotool has been found. +# + +#============================================================================= +# Copyright (c) 2012, Aleksey Avdeev +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +INCLUDE(FindCygwin) + +FIND_PROGRAM(ICOTOOL_EXECUTABLE + icotool + ${CYGWIN_INSTALL_PATH}/bin + /bin + /usr/bin + /usr/local/bin + /sbin + /usr/sbin + /usr/local/sbin +) + +# handle the QUIETLY and REQUIRED arguments and set ICOTOOL_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Icotool DEFAULT_MSG ICOTOOL_EXECUTABLE) + +MARK_AS_ADVANCED( + ICOTOOL_EXECUTABLE +) diff --git a/cmake/modules/FreedesktopIconsMacros.cmake b/cmake/modules/FreedesktopIconsMacros.cmake new file mode 100644 index 0000000..bb48f6d --- /dev/null +++ b/cmake/modules/FreedesktopIconsMacros.cmake @@ -0,0 +1,439 @@ +# +# - Define freedesktop.org standard for icons installation +# Provides icons install variables as defined freedesktop.org standards: +# http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html +# The module defines the following variables: +# CMAKE_FREEDESKTOP_ICONS_THEMENAME - icons theme name (hicolor) +# CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME - icons context name (apps) +# CMAKE_FREEDESKTOP_ICONS_SIZE - icons size (auto) +# Inclusion of this module defines the following variables: +# CMAKE_INSTALL_FREEDESKTOP_ICONS_ - destination for files of +# a given type +# CMAKE_INSTALL_FREEDESKTOP_ICONS_FULL_ - corresponding absolute path +# where is one of: +# BASE - freedesktop icons theme dir (DATAROOTDIR/icons) +# Each CMAKE_INSTALL_FREEDESKTOP_ICONS_ value may be passed to the +# DESTINATION options of install() commands for the corresponding file type. +# If the includer does not define a value the above-shown default will be used +# and the value will appear in the cache for editing by the user. +# Each CMAKE_INSTALL_FREEDESKTOP_ICONS_FULL_ value contains an absolute +# path constructed # from the corresponding destination by prepending +# (if necessary) the value of CMAKE_INSTALL_PREFIX. +# This module also defines a macro: +# FREEDESKTOP_INSTALL_ICONFILE(<_install_FILENAME> <_origin_FILE> <_icon_size> <_icon_context> <_icon_theme>) +# FREEDESKTOP_INSTALL_ICONS(<_install_BASENAME>|<_install_FILENAME> <_origin_FILES> [auto|<_icon_sizes> [default|<_icon_context> [default|<_icon_theme>]]]) +# +################################################################### +# +# Copyright (c) 2012, Aleksey Avdeev +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# * Neither the name of the cmake-modules nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +# Default names +# +IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_THEMENAME) + SET(CMAKE_FREEDESKTOP_ICONS_THEMENAME "hicolor" CACHE STRING "icons theme name (hicolor)") +ENDIF() + +IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME) + SET(CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME "apps" CACHE STRING "icons context name (apps)") +ENDIF() + +IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_SIZE) + SET(CMAKE_FREEDESKTOP_ICONS_SIZE "auto" CACHE STRING "icons size (auto)") +ENDIF() + +MARK_AS_ADVANCED( + CMAKE_FREEDESKTOP_ICONS_THEMENAME + CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME + CMAKE_FREEDESKTOP_ICONS_SIZE +) + +INCLUDE(GNUInstallDirs) + +#----------------------------------------------------------------------------- +# Values whose defaults are relative to DATAROOTDIR. Store empty values in +# the cache and store the defaults in local variables if the cache values are +# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. + +IF(NOT CMAKE_INSTALL_FREEDESKTOP_ICONSDIR) + SET(CMAKE_INSTALL_FREEDESKTOP_ICONSDIR "" CACHE PATH "freedesktop icons theme dir (DATAROOTDIR/icons)") + SET(CMAKE_INSTALL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_DATAROOTDIR}/icons") +ENDIF() + +MARK_AS_ADVANCED( + CMAKE_INSTALL_FREEDESKTOP_ICONSDIR +) + +#----------------------------------------------------------------------------- + +# Result directories +# +IF(NOT IS_ABSOLUTE ${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR}) + SET(CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR}") +ELSE() + SET(CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR}") +ENDIF() + +IF(NOT DEFINED ImageMagick_identify_FOUND) + FIND_PACKAGE(ImageMagick COMPONENTS identify) +ENDIF(NOT DEFINED ImageMagick_identify_FOUND) + +IF(NOT DEFINED ICOTOOL_FOUND) + FIND_PACKAGE(Icotool) +ENDIF(NOT DEFINED ICOTOOL_FOUND) + +MACRO(FREEDESKTOP_INSTALL_ICONFILE _install_FILENAME _origin_FILE _icon_size _icon_context _icon_theme) + SET( + FREEDESKTOP_INSTALL_ICONFILE_usage + "FREEDESKTOP_INSTALL_ICONFILE(<_install_FILENAME> <_origin_FILE> <_icon_size> <_icon_context> <_icon_theme>)" + ) + + # MESSAGE(STATUS "icon: ${_origin_FILE} theme: ${_icon_theme} size: ${_icon_size} context: ${_icon_context} name: ${_install_FILENAME}") + INSTALL( + FILES ${_origin_FILE} + DESTINATION "${CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR}/${_icon_theme}/${_icon_size}/${_icon_context}/" + RENAME ${_install_FILENAME} + ) + +ENDMACRO(FREEDESKTOP_INSTALL_ICONFILE) + +# +# FREEDESKTOP_INSTALL_ICONS(install_file origin_files [auto| [default| [default|]]]) +# +# The processing parameters install_file: +# no extension - the extension of the installed files will coincide +# with the extension of the original +# (except for .ico - are extracted .png) +# is an extension - set only icons of corresponding type +# +# The processing parameters origin_files: +# .ico - for any given size (see parameter icon_sizes) +# are extracted from the file icon with +# the maximum number of bits per pixel and are +# installed as a .png file +# .svg, .svgz, .png or .xpm - the files are installed without any changes +# +# The processing parameters icon_sizes +# (CMAKE_FREEDESKTOP_ICONS_SIZE by default): +# containing the value of auto - automatically creates directories +# actual size by appropriate icons +# no containing the value of auto - depending on file type icons: +# scalable (.svg or .svgz): +# icon_sizes contains the value scalable - will be placed +# only in the scalable directory +# icon_sizes does not contain the value scalable - will be placed +# in all the directories and related to the size +# specified in the list +# bitmap (.png or .xpm): +# icon_sizes contains only one value different from the scalable - +# all raster will place the file in the directory +# specified by appropriate size, without checking +# the actual size of the icons. +# icon_sizes contains multiple values, different from the scalable - +# all raster will place the file in the directory +# by appropriate to their actual size and specified +# in the list +# +MACRO(FREEDESKTOP_INSTALL_ICONS _install_NAME _origin_FILES) + SET( + FREEDESKTOP_INSTALL_ICONS_usage + "FREEDESKTOP_INSTALL_ICONS(<_install_BASENAME>|<_install_FILENAME> <_origin_FILES> [auto|<_icon_sizes> [default|<_icon_context> [default|<_icon_theme>]]])" + ) + + # regex seting + SET( + _icon_install_ext_regex + "^\\.(svgz?|png|xpm)$" + ) + SET( + _icon_origin_ext_regex + "^\\.(svgz?|png|xpm|ico)$" + ) + + GET_FILENAME_COMPONENT(_icon_basename ${_install_NAME} NAME_WE) + GET_FILENAME_COMPONENT(_icon_extension ${_install_NAME} EXT) + IF(_icon_extension) + STRING(TOLOWER ${_icon_extension} _icon_extension) + IF(NOT _icon_extension MATCHES "${_icon_install_ext_regex}") + MESSAGE(FATAL_ERROR "Installable icon file should have the extension .svg, .svgz, .png or .xpm, not ${_icon_extension}") + ENDIF(NOT _icon_extension MATCHES "${_icon_install_ext_regex}") + ELSE(_icon_extension) + SET(_icon_extension "") + ENDIF(_icon_extension) + + SET(_icon_sizes ${ARGV2}) + IF(NOT _icon_sizes) + SET(_icon_sizes ${CMAKE_FREEDESKTOP_ICONS_SIZE}) + ENDIF(NOT _icon_sizes) + LIST(REMOVE_DUPLICATES _icon_sizes) + LIST(FIND _icon_sizes "auto" _size_index) + IF(_size_index EQUAL -1) + # no auto in _icon_sizes + SET(_icon_size_auto FALSE) + ELSE(_size_index EQUAL -1) + # yes auto in _icon_sizes + SET(_icon_size_auto TRUE) + LIST(REMOVE_AT _icon_sizes ${_size_index}) + FOREACH(_current_size ${_icon_sizes}) + SET(_icon_${_current_size}_build_files) + ENDFOREACH(_current_size ${_icon_sizes}) + ENDIF(_size_index EQUAL -1) + SET(_pixmap_size_default FALSE) + IF(NOT _icon_size_auto) + SET(_icon_sizes_pixmap ${_icon_sizes}) + LIST(REMOVE_ITEM _icon_sizes_pixmap "scalable") + LIST(LENGTH _icon_sizes_pixmap _sizes_pixmap_count) + IF(_sizes_pixmap_count EQUAL 1) + SET(_pixmap_size_default ${_icon_sizes_pixmap}) + ENDIF(_sizes_pixmap_count EQUAL 1) + ENDIF(NOT _icon_size_auto) + + SET(_icon_context ${ARGV3}) + IF(NOT _icon_context OR "${_icon_context}" STREQUAL "default") + SET(_icon_context ${CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME}) + ENDIF(NOT _icon_context OR "${_icon_context}" STREQUAL "default") + + SET(_icon_theme ${ARGV4}) + IF(NOT _icon_theme OR "${_icon_theme}" STREQUAL "default") + SET(_icon_theme ${CMAKE_FREEDESKTOP_ICONS_THEMENAME}) + ENDIF(NOT _icon_theme OR "${_icon_theme}" STREQUAL "default") + + # preinstall icons + FOREACH(_current_file ${_origin_FILES}) + GET_FILENAME_COMPONENT(_current_extension ${_current_file} EXT) + IF(_current_extension) + STRING(TOLOWER ${_current_extension} _current_extension) + IF(NOT _current_extension MATCHES "${_icon_origin_ext_regex}") + MESSAGE(FATAL_ERROR "File ${_current_file} not processed: Use icon with the extension .svg, .svgz, .png, .xpm or .ico") + ENDIF(NOT _current_extension MATCHES "${_icon_origin_ext_regex}") + ELSE(_current_extension) + MESSAGE(FATAL_ERROR "File ${_current_file} not processed: The expansion is absent") + ENDIF(_current_extension) + + # set _current_build_patch + GET_FILENAME_COMPONENT(_current_patch ${_current_file} PATH) + IF("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}") + SET(_current_build_patch "${_current_patch}") + ELSEIF("${_current_patch}" STRLESS "") + SET(_current_build_patch "${CMAKE_CURRENT_BINARY_DIR}") + ELSEIF(NOT IS_ABSOLUTE "${_current_patch}") + SET(_current_build_patch "${CMAKE_CURRENT_BINARY_DIR}/${_current_patch}") + ELSE("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}") + STRING( + REGEX REPLACE + "^${CMAKE_CURRENT_SOURCE_DIR}((/.*)?)$" + "${CMAKE_CURRENT_BINARY_DIR}\\1" + _current_build_patch + "${_current_patch}" + ) + ENDIF("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}") + + IF(_current_extension MATCHES "\\.svgz?$") + SET(_current_size "scalable") + LIST(FIND _icon_sizes ${_current_size} _size_index) + IF(_size_index EQUAL -1) + # no scalable in _icon_sizes + IF(_icon_size_auto) + LIST(APPEND _icon_sizes ${_current_size}) + SET(_icon_${_current_size}_build_files ${_current_file}) + ELSE(_icon_size_auto) + # add _current_file to all _icon_sizes + FOREACH(_current_size ${_icon_sizes}) + LIST(APPEND _icon_${_current_size}_build_files ${_current_file}) + ENDFOREACH(_current_size ${_icon_sizes}) + ENDIF(_icon_size_auto) + ELSE(_size_index EQUAL -1) + # scalable in _icon_sizes + LIST(APPEND _icon_${_current_size}_build_files ${_current_file}) + ENDIF(_size_index EQUAL -1) + ELSEIF("${_current_extension}" STREQUAL ".ico") + # ico -> png + + IF(NOT ICOTOOL_FOUND) + MESSAGE(FATAL_ERROR "File ico processing is not possible: the icotool program was not found") + ENDIF(NOT ICOTOOL_FOUND) + + SET(_icon_ico_sizes) + + # select indexs for transformation ico to png + # (create _icon__index vars) + EXECUTE_PROCESS( + COMMAND "${ICOTOOL_EXECUTABLE}" --list ${_current_file} + OUTPUT_VARIABLE _icon_icotool_out + ERROR_VARIABLE _icon_icotool_err + ) + STRING( + REGEX MATCHALL + "[^\r\n]+" + _ico_icotool_list + "${_icon_icotool_out}" + ) + FOREACH(_current_string ${_ico_icotool_list}) + IF(_current_string AND _current_string MATCHES "(^|[ \t])--icon([ \t]|$)") + IF(_current_string MATCHES "(^|[ \t])--index=([0-9]+)([ \t]|$)") + SET(_current_index ${CMAKE_MATCH_2}) + IF(_current_string MATCHES "(^|[ \t])--width=([0-9]+)([ \t]|$)") + SET(_current_width ${CMAKE_MATCH_2}) + IF(_current_string MATCHES "(^|[ \t])--height=([0-9]+)([ \t]|$)") + SET(_current_height ${CMAKE_MATCH_2}) + IF(_current_string MATCHES "(^|[ \t])--bit-depth=([0-9]+)([ \t]|$)") + SET(_current_bit_depth ${CMAKE_MATCH_2}) + SET(_current_size "${_current_width}x${_current_height}") + LIST(FIND _icon_sizes ${_current_size} _current_size_index) + IF(_icon_size_auto OR NOT _current_size_index EQUAL -1) + IF(_current_size_index EQUAL -1) + LIST(APPEND _icon_sizes ${_current_size}) + SET(_icon_${_current_size}_build_files) + ENDIF(_current_size_index EQUAL -1) + LIST(FIND _icon_ico_sizes ${_current_size} _current_size_index) + IF(_current_size_index EQUAL -1) + LIST(APPEND _icon_ico_sizes ${_current_size}) + SET(_icon_${_current_size}_bit_depth) + ENDIF(_current_size_index EQUAL -1) + IF((NOT DEFINED _icon_${_current_size}_bit_depth) OR _current_bit_depth GREATER _icon_${_current_size}_bit_depth) + SET(_icon_${_current_size}_bit_depth ${_current_bit_depth}) + SET(_icon_${_current_size}_index ${_current_index}) + ENDIF((NOT DEFINED _icon_${_current_size}_bit_depth) OR _current_bit_depth GREATER _icon_${_current_size}_bit_depth) + ENDIF(_icon_size_auto OR NOT _current_size_index EQUAL -1) + ENDIF(_current_string MATCHES "(^|[ \t])--bit-depth=([0-9]+)([ \t]|$)") + ENDIF(_current_string MATCHES "(^|[ \t])--height=([0-9]+)([ \t]|$)") + ENDIF(_current_string MATCHES "(^|[ \t])--width=([0-9]+)([ \t]|$)") + ENDIF(_current_string MATCHES "(^|[ \t])--index=([0-9]+)([ \t]|$)") + ENDIF(_current_string AND _current_string MATCHES "(^|[ \t])--icon([ \t]|$)") + ENDFOREACH(_current_string) + + IF(DEFINED _icon_ico_sizes) + # create _current_build_patch + IF(NOT EXISTS "${_current_build_patch}") + FILE(MAKE_DIRECTORY "${_current_build_patch}") + ENDIF(NOT EXISTS "${_current_build_patch}") + + # png generate + FOREACH(_current_size ${_icon_ico_sizes}) + SET( + _current_build_filename + "${_icon_basename}_${_icon_${_current_size}_index}_${_current_size}x${_icon_${_current_size}_bit_depth}.png" + ) + SET( + _current_target + "icon.icotopng.${_current_build_filename}" + ) + SET( + _current_build_file + "${_current_build_patch}/${_current_build_filename}" + ) + LIST( + APPEND + _icon_${_current_size}_build_files + "${_current_build_file}" + ) + ADD_CUSTOM_TARGET( + "${_current_target}" + ALL + ) + ADD_CUSTOM_COMMAND( + TARGET "${_current_target}" + COMMAND ${ICOTOOL_EXECUTABLE} + ARGS -x --icon -i ${_icon_${_current_size}_index} -o ${_current_build_file} ${_current_file} + DEPENDS ${_current_file} + VERBATIM + ) + ENDFOREACH(_current_size) + ENDIF(DEFINED _icon_ico_sizes) + ELSE(_current_extension MATCHES "\\.svgz?$") + IF(_pixmap_size_default) + SET(_current_size ${_pixmap_size_default}) + ELSE(_pixmap_size_default) + IF(NOT ImageMagick_identify_FOUND) + MESSAGE(FATAL_ERROR "Automatic determination of the size of icons is impossible: the identify program was not found") + ENDIF(NOT ImageMagick_identify_FOUND) + # get _current_size + EXECUTE_PROCESS( + COMMAND "${ImageMagick_identify_EXECUTABLE}" -verbose ${_current_file} + OUTPUT_VARIABLE _icon_identify_out + ) + STRING( + REGEX REPLACE + "^.*[\r\n][ \t]*[Gg][Ee][Oo][Mm][Ee][Tt][Rr][Yy]:[ \t]+([0-9]+x[0-9]+)([^0-9].*)?[ \t]*[\r\n].*$" + "\\1" + _current_size + "${_icon_identify_out}" + ) + IF((NOT _current_size) OR "${_current_size}" STREQUAL "${_icon_identify_out}") + MESSAGE(FATAL_ERROR "Automatic determination of the size of icon ${_current_file} is impossible: the ${ImageMagick_identify_EXECUTABLE} program does not the size allocated") + ENDIF((NOT _current_size) OR "${_current_size}" STREQUAL "${_icon_identify_out}") + ENDIF(_pixmap_size_default) + + LIST(FIND _icon_sizes ${_current_size} _size_index) + IF(_size_index EQUAL -1) + # no scalable in _icon_sizes + IF(_icon_size_auto) + LIST(APPEND _icon_sizes ${_current_size}) + SET(_icon_${_current_size}_build_files ${_current_file}) + ELSE(_icon_size_auto) + MESSAGE(FATAL_ERROR "Create a directory for the icon size ${_current_size} prohibited (this size is missing in the list)") + ENDIF(_icon_size_auto) + ELSE(_size_index EQUAL -1) + LIST(APPEND _icon_${_current_size}_build_files ${_current_file}) + ENDIF(_size_index EQUAL -1) + ENDIF(_current_extension MATCHES "\\.svgz?$") + ENDFOREACH(_current_file) + + # install icons + FOREACH(_current_size ${_icon_sizes}) + FOREACH(_current_file ${_icon_${_current_size}_build_files}) + GET_FILENAME_COMPONENT(_current_extension ${_current_file} EXT) + IF(_current_extension) + STRING(TOLOWER ${_current_extension} _current_extension) + IF(NOT _current_extension MATCHES "${_icon_install_ext_regex}") + MESSAGE(FATAL_ERROR "File ${_current_file} not processed: Use icon with the extension .svg, .svgz, .png or .xpm") + ENDIF(NOT _current_extension MATCHES "${_icon_install_ext_regex}") + ELSE(_current_extension) + MESSAGE(FATAL_ERROR "File ${_current_file} not processed: The expansion is absent") + ENDIF(_current_extension) + + IF(_icon_extension AND (NOT "${_current_extension}" STREQUAL "${_icon_extension}")) + MESSAGE(FATAL_ERROR "Target (${_install_NAME}) and source (${_current_file}) files have a different extension") + ENDIF(_icon_extension AND (NOT "${_current_extension}" STREQUAL "${_icon_extension}")) + + SET( + _install_filename + "${_icon_basename}${_current_extension}" + ) + + # MESSAGE(STATUS "icon: ${_current_file} theme: ${_icon_theme} size: ${_current_size} context: ${_icon_context} name: ${_install_filename}") + FREEDESKTOP_INSTALL_ICONFILE(${_install_filename} ${_current_file} ${_current_size} ${_icon_context} ${_icon_theme}) + ENDFOREACH(_current_file) + ENDFOREACH(_current_size) + +ENDMACRO(FREEDESKTOP_INSTALL_ICONS) diff --git a/cmake/modules/MacroProcessManpages.cmake b/cmake/modules/MacroProcessManpages.cmake new file mode 100644 index 0000000..5530c04 --- /dev/null +++ b/cmake/modules/MacroProcessManpages.cmake @@ -0,0 +1,83 @@ +# +# - MACRO_INSTALL_MANPAGES +# Find manpages in the given directory and install them +# structure: +# +# man/file.1 +# man/es/file.5 +# man/de/file.1 +# +################################################################### +# +# Copyright (c) 2006, Andreas Schneider +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +################################################################### +# +# Copyright (c) Andreas Schneider +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# * Neither the name of the cmake-modules nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +INCLUDE(GNUInstallDirs) + +MACRO(MACRO_INSTALL_MANPAGES _mandirs) + FOREACH(_current_mandir ${_mandirs}) + FILE(GLOB_RECURSE _manpages "${_current_mandir}/*.[1-9]") + + IF (_manpages) + FOREACH(_man ${_manpages}) + FILE(RELATIVE_PATH _lang ${_current_mandir} ${_man}) + GET_FILENAME_COMPONENT(_lang ${_lang} PATH) + GET_FILENAME_COMPONENT(_manext ${_man} EXT) + STRING(REGEX MATCH "[1-9]" _manext ${_manext}) + INSTALL(FILES ${_man} DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/${_lang}/man${_manext}) + #MESSAGE("DEBUG: install ${_man} to ${CMAKE_INSTALL_FULL_MANDIR}/${_lang}/man${_manext}") + ENDFOREACH(_man ${_manpages}) + ENDIF (_manpages) + ENDFOREACH(_current_mandir) +ENDMACRO(MACRO_INSTALL_MANPAGES) + +# vim:et ts=2 sw=2 comments=\:\# diff --git a/ica/CMakeLists.txt b/ica/CMakeLists.txt index 9bcdbac..eb7d32a 100644 --- a/ica/CMakeLists.txt +++ b/ica/CMakeLists.txt @@ -179,6 +179,9 @@ TARGET_LINK_LIBRARIES(ica ItalcCore) ADD_DEPENDENCIES(ica JavaViewer) +# install man pages for ica +MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man) + INSTALL(TARGETS ica RUNTIME DESTINATION bin) IF(ITALC_BUILD_WIN32) diff --git a/ica/helpers/CMakeLists.txt b/ica/helpers/CMakeLists.txt index 6fc4a7c..25c5966 100644 --- a/ica/helpers/CMakeLists.txt +++ b/ica/helpers/CMakeLists.txt @@ -2,3 +2,6 @@ LINK_LIBRARIES(${PAM_LIBRARY}) INCLUDE_DIRECTORIES(${PAM_INCLUDE_DIR}) ADD_EXECUTABLE(italc_auth_helper ${CMAKE_CURRENT_SOURCE_DIR}/ItalcAuthHelper.cpp) INSTALL(TARGETS italc_auth_helper RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE SETUID GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +# install man pages for italc_auth_helper +MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man) diff --git a/ica/helpers/man/italc_auth_helper.1 b/ica/helpers/man/italc_auth_helper.1 new file mode 100644 index 0000000..dff6c81 --- /dev/null +++ b/ica/helpers/man/italc_auth_helper.1 @@ -0,0 +1,28 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH ITALC 8 "May 18, 2012" +.SH NAME +italc_auth_helper \- iTALC PAM Authentication Helper +.SH SYNOPSIS +.B italc_auth_helper +.SH DESCRIPTION +.B italc_auth_helper +is a PAM-su authentication helper for the iTALC service (called \fBica\fP). +.PP +.I NOTE: +.B italc_auth_helper +has to be installed setuid root and must be available in your system's environment $PATH. +. +.SH OPTIONS +No options present. +.PP +.SH SEE ALSO +.IR ica (1), italc (1), imc (1) +.PP +.IR http://italc.sf.net +.SH AUTHOR +iTALC has been written by Tobias Doerffel. See AUTHORS for details. +.PP +This manual page has been written by Mike Gabriel. It was originally written for the Debian project (but may be used by others). diff --git a/ica/ica.1 b/ica/ica.1 deleted file mode 100644 index 301b5fe..0000000 --- a/ica/ica.1 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.TH ICA 1 "April 30, 2007" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -ica \- iTALC Client Application -.SH SYNOPSIS -.B ica -.RB "[options]" -.br -.B ica -.RI "[options] [command]" -.SH DESCRIPTION -.PP -.\" TeX users may be more comfortable with the \fB\fP and -.\" \fI\fP escape sequences to invode bold face and italics, -.\" respectively. -.B ICA -is the software which needs to run on clients in order to access them using iTALC master application. It provides a VNC-server and a service-daemon which is neccessary for taking control over the client. - -.SH OPTIONS -.IP "\fB\-role\fP \fIrole\fP -.IP -Set role under which ICA should run where \fIrole\fP has to be "teacher", "admin", "supporter" or "other". This is mainly used in combination with the \fB-createkeypair\fP option. -.IP "\fB\-ivsport\fP \fIport\fP -.IP -Set port at which the iTALC-VNC-server should listen. Default: 11100 -. -.IP "\fB\-isdport\fP \fIport\fP -.IP -Set port at which the iTALC-service-daemon should listen. Default: 11200 -. -.IP \fB-noshm\fR -.IP -Do not use the MIT-SHM extension for the polling. -Remote displays can be polled this way: be careful this -can use large amounts of network bandwidth. This is -also of use if the local machine has a limited number -of shm segments and \fB-onetile\fR is not sufficient. -.PP -\fB-onetile\fR -.IP -Do not use the new copy_tiles() framebuffer mechanism, -just use 1 shm tile for polling. Limits shm segments -used to 3. -. -.IP "\fB\-createkeypair\fP \fI[private-key-file] [public-key-file]\fP -.IP -Create a new key pair for authentication between master and client. Until specified with \fB-role\fP the key-pair will be created for role "other". The keys either will be saved under given file-names or the default ones according to the selected role (/etc/italc/keys/private//key and /etc/italc/keys/public//key). -.SH SEE ALSO -.IR italc (1), -.IR http://italc.sf.net/ - -.SH AUTHOR -iTALC was written by Tobias Doerffel. See AUTHORS for details. -.PP -This manual page was written by Tobias Doerffel , for the Debian project (but may be used by others). diff --git a/ica/man/ica.1 b/ica/man/ica.1 new file mode 100644 index 0000000..ec911fb --- /dev/null +++ b/ica/man/ica.1 @@ -0,0 +1,101 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH ICA 1 "May 18, 2012" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +ica \- iTALC Client Application +.SH SYNOPSIS +.B ica +.RB "[options]" +.br +.B ica +.RI "[options] [command]" +.SH DESCRIPTION +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +.B ICA +is the software which needs to run on clients in order to access them using iTALC master application. It provides a VNC-server and a service-daemon which is neccessary for taking control over the client. + +.SH iTALC OPTIONS +.IP "\fB\-role\fP \fIrole\fP +.IP +Set role under which ICA should run where \fIrole\fP has to be "teacher", "admin", "supporter" or "other". +.IP "\fB\-port\fP \fIport\fP +.IP +Set port at which the iTALC-VNC-server should listen. Default: 11100 +.PP +The \fB\-createkeypair\fP option has been moved to the iTALC Management Console \fBimc\fP since iTALC 2.0.0. + +.SH X11VNC OPTIONS +.IP \fB-noshm\fR +.IP +Do not use the MIT-SHM extension for the polling. +Remote displays can be polled this way: be careful this +can use large amounts of network bandwidth. This is +also of use if the local machine has a limited number +of shm segments and \fB-onetile\fR is not sufficient. +.PP +\fB-onetile\fR +.IP +Do not use the new copy_tiles() framebuffer mechanism, +just use 1 shm tile for polling. Limits shm segments +used to 3. +.PP +\fB-nosel\fR +.IP + Do not manage exchange of X selection/cutbuffer between VNC viewers and the X server at all. +.PP +\fB-nosetclipboard\fR +.IP +Do not set the CLIPBOARD selection for changes received from VNC clients. +.PP +\fB-solid\fR \fI[color]\fR +.IP +To improve performance, when VNC clients are connected try to change the desktop background to a solid color. The [color] is optional: the +default color is "cyan4". For a different one specify the X color (rgb.txt name, e.g. "darkblue" or numerical "#RRGGBB"). +.IP +Currently this option only works on GNOME, KDE3, CDE, XFCE, and classic X (i.e. with the background image on the root window). The "gconftool-2", +"dcop" and "xfconf-query" external commands are run for GNOME, KDE, and XFCE respectively. +(There is no color selection for XFCE.) Other desktops won't work, (send us the corresponding commands if you find them). +.IP + +.PP +\fB-xrandr\fR \fI[mode]\fR +.IP +If the display supports the XRANDR (X Resize, Rotate and Reflection) extension, and you expect XRANDR events to occur to the display while +x11vnc is running, this options indicates x11vnc should try to respond to them (as opposed to simply crashing by assuming the old screen +size). See the xrandr(1) manpage and run ´xrandr -q' for more info. [mode] is optional and described below. +.IP +Since watching for XRANDR events and trapping errors increases polling overhead, only use this option if XRANDR changes are expected. For +example on a rotatable screen PDA or laptop, or using a XRANDR-aware Desktop where you resize often. It is best to be viewing with a +vncviewer that supports the NewFBSize encoding, since it knows how to react to screen size changes. Otherwise, LibVNCServer tries to do so +something reasonable for viewers that cannot do this (portions of the screen may be clipped, unused, etc). +.IP +"mode" defaults to "resize", which means create a new, resized, framebuffer and hope all viewers can cope with the change. "newfbsize" +means first disconnect all viewers that do not support the NewFBSize VNC encoding, and then resize the framebuffer. "exit" means disconnect +all viewer clients, and then terminate x11vnc. +.PP +.SH SEE ALSO +.IR italc (1), imc (1), italc_auth_helper (1) +.PP +.IR http://italc.sf.net/ + +.SH AUTHOR +iTALC has been written by Tobias Doerffel. See AUTHORS for details. +.PP +This manual page has been written by Tobias Doerffel and updated by Mike Gabriel. It was originally written for the Debian project (but may be used by others). diff --git a/ica/src/ItalcVncServer.cpp b/ica/src/ItalcVncServer.cpp index c63608a..7d6af28 100644 --- a/ica/src/ItalcVncServer.cpp +++ b/ica/src/ItalcVncServer.cpp @@ -251,7 +251,7 @@ static void runX11vnc( QStringList cmdline, int port, bool plainVnc ) // workaround for x11vnc when running in an NX session foreach( const QString &s, QProcess::systemEnvironment() ) { - if( s.startsWith( "NXSESSIONID=" ) ) + if( s.startsWith( "NXSESSIONID=" ) || s.startsWith( "X2GO_SESSION=" ) ) { cmdline << "-noxdamage"; } diff --git a/ima/CMakeLists.txt b/ima/CMakeLists.txt index 06f9b73..0ddad55 100644 --- a/ima/CMakeLists.txt +++ b/ima/CMakeLists.txt @@ -22,8 +22,20 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src) ADD_EXECUTABLE(italc ${italc_UIC_out} ${italc_SOURCES} ${italc_INCLUDES} ${italc_MOC_out} ${italc_RCC_out} ${WINRC}) TARGET_LINK_LIBRARIES(italc ItalcCore) +# install man pages for ima +MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man) + INSTALL(TARGETS italc RUNTIME DESTINATION bin) +IF(UNIX) + # installing Freedesktop icons only for UNIX + IF(ICOTOOL_FOUND) + FREEDESKTOP_INSTALL_ICONS(italc ${CMAKE_CURRENT_SOURCE_DIR}/data/italc.ico) + ELSE(ICOTOOL_FOUND) + FREEDESKTOP_INSTALL_ICONS(italc ${CMAKE_CURRENT_SOURCE_DIR}/data/italc.png) + ENDIF(ICOTOOL_FOUND) +ENDIF(UNIX) + IF(ITALC_BUILD_WIN32) SET_TARGET_PROPERTIES(italc PROPERTIES LINK_FLAGS -mwindows) ENDIF(ITALC_BUILD_WIN32) diff --git a/ima/data/italc.desktop.in b/ima/data/italc.desktop.in index 4906d70..4a16b41 100644 --- a/ima/data/italc.desktop.in +++ b/ima/data/italc.desktop.in @@ -3,9 +3,10 @@ Encoding=UTF-8 Name=iTALC GenericName=View and remote-control clients GenericName[de]=Clients überwachen und fernsteuern +GenericName[ru]=Управление рабочими столами учеников Comment=Intelligent Teaching And Learning with Computers -Icon=@prefix@/share/pixmaps/italc.png -Exec=@prefix@/bin/italc +Icon=italc +Exec=@CMAKE_INSTALL_PREFIX@/bin/italc Type=Application Terminal=false -Categories=Qt;KDE;Education;X-KDE-Edu-Teaching; +Categories=Qt;KDE;Education;X-KDE-Edu-Teaching;RemoteAccess; diff --git a/ima/italc.1 b/ima/italc.1 deleted file mode 100644 index 4c2133b..0000000 --- a/ima/italc.1 +++ /dev/null @@ -1,35 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.TH ITALC 1 "February 1, 2008" -.SH NAME -italc \- iTALC Master Application -.SH SYNOPSIS -.B italc -.SH DESCRIPTION -.B iTALC -is the actual software to control iTALC-clients. Using it's GUI you can remote-control, lock, shutdown/reboot computers as well as show a demo, send text-messages to users and much more. -. -.SH OPTIONS -.IP "\fB\-rctrl\fP \fIhost:[port]\fP -.IP -Directly remote-control the specified host. You can omit port if the server is running at the default-port (11100). -. -.IP "\fB\-isdport\fP \fIport\fP -.IP -Set port to which iTALC should connect in order to contact the local iTALC-service-daemon. Default: 11200 -. -.IP "\fB\-isdhost\fP \fIip\fP -.IP -Set the host to which iTALC should connect in order to contact the local iTALC-service-daemon. Default: localhost -. -.PP -.SH SEE ALSO -.IR ica (1), -.IR http://italc.sf.net -.SH AUTHOR -iTALC was written by Tobias Doerffel. See AUTHORS for details. -.PP -This manual page was written by Steffen Joeris -and Tobias Doerffel , for the Debian project (but may be used by others). diff --git a/ima/man/italc.1 b/ima/man/italc.1 new file mode 100644 index 0000000..229c347 --- /dev/null +++ b/ima/man/italc.1 @@ -0,0 +1,32 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH ITALC 1 "May 18, 2012" +.SH NAME +italc \- iTALC Master Application +.SH SYNOPSIS +.B italc +.SH DESCRIPTION +.B iTALC +is the actual software to control iTALC-clients. Using it's GUI you can remote-control, lock, shutdown/reboot computers as well as show a demo, send text-messages to users and much more. +. +.SH OPTIONS +.IP "\fB\-rctrl\fP \fIhost:[port]\fP +.IP +Directly remote-control the specified host. You can omit port if the server is running at the default-port (11100). +. +.IP "\fB\-screen\fP \fI\fP +.IP +Place the remote control window on another screen if running on a multi-headed workstation. +. +.PP +.SH SEE ALSO +.IR ica (1), imc (1), italc_auth_helper(1) +.PP +.IR http://italc.sf.net +.SH AUTHOR +iTALC has been written by Tobias Doerffel. See AUTHORS for details. +.PP +This manual page has been written by Steffen Joeris +and Tobias Doerffel and updated by Mike Gabriel. It was originally written for the Debian project (but may be used by others). diff --git a/imc/CMakeLists.txt b/imc/CMakeLists.txt index d088587..c335ef0 100644 --- a/imc/CMakeLists.txt +++ b/imc/CMakeLists.txt @@ -23,8 +23,20 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src) ADD_EXECUTABLE(imc ${imc_UIC_out} ${imc_SOURCES} ${imc_INCLUDES} ${imc_MOC_out} ${imc_RCC_out} ${WINRC}) TARGET_LINK_LIBRARIES(imc ItalcCore) +# install man pages for imc +MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man) + INSTALL(TARGETS imc RUNTIME DESTINATION bin) +IF(UNIX) + # installing Freedesktop icons only for UNIX + IF(ICOTOOL_FOUND) + FREEDESKTOP_INSTALL_ICONS(imc ${CMAKE_CURRENT_SOURCE_DIR}/Resources/imc.ico) + ELSE(ICOTOOL_FOUND) + FREEDESKTOP_INSTALL_ICONS(imc ${CMAKE_CURRENT_SOURCE_DIR}/Resources/imc.png) + ENDIF(ICOTOOL_FOUND) +ENDIF(UNIX) + IF(ITALC_BUILD_WIN32) SET_TARGET_PROPERTIES(imc PROPERTIES LINK_FLAGS -mwindows) ENDIF(ITALC_BUILD_WIN32) diff --git a/imc/man/imc.1 b/imc/man/imc.1 new file mode 100644 index 0000000..a44acc1 --- /dev/null +++ b/imc/man/imc.1 @@ -0,0 +1,71 @@ +.TH imc 1 "Date: 2011/16/12 10:00:00" "imc" +.SH NAME +imc \- is the iTALC management console to setup iTALC. +.SH SYNOPSIS +\fBimc\fP [\fIoptions\fP] +.SH OVERVIEW + +imc\[rg], is a X11 program to modify the various settings used by italc-client and italc-master. + +imc is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems. + +The functionality of imc is typically utilized from X11 but also from the command line. + +In the paragraphs below, find a short description for each command-line option.If you are just getting acquianted with imc, start the program without any options. +.TP +.B -ListConfig -l + +The current configuration with all keys and values will be listed. This will give an output like + ... + Logging/LogLevel=1 + Network/CoreServerPort=11100 + Network/DemoServerPort=11400 + ... + +.TP +.B -SetConfigValue -s + +The value of configuration property can be changed with this option. +Examples: + imc -SetConfigValue Logging/LogFileDirectory C:\temp + imc -s Logging/LogLevel=4 + +.TP +.B -ApplySettings -a + +You can apply the settings previously saved in a settings file using this command. +Examples: + imc -ApplySettings MyCustomSettings.xml + +.TP +.B -ImportPublicKey -i + +You can import a public key file which has been exported during the installation +of the iTALC master computer using this command or its abbreviation. + +You can omit the the second parameter which specifies the public key file if it +is located in the directory from which you launch IMC. IMC will automatically +search for a *.key.txt file. If it finds exactly one, it'll import this one. +Examples: + imc -ImportPublicKey MyPublicKey.key.txt + imc -i + +.TP +.B -createkeypair + +creates a new key pair for the default role (teacher) with the specified "path" as base dir. If "path" is omitted +the path is taken from the settings file. This is used in conjunction with role. If role is omitted the default +role is "teacher". + +.TP +.B -role [supporter|teacher|admin] + +in connection with "createkeypair" creates a key pair for the specified role. + +.PP +For more information about the imc, point your browser to file:///usr/share/doc/packages/imc or http://italc.sourceforge.net/. +.SH SEE ALSO +ica(1), italc(1) + +.SH COPYRIGHT +\fBCopyright (C) 2004-2011 Tobias Doerffel. Additional copyrights and licenses apply to this software, see http://italc.sourceforge.net\fP diff --git a/lib/resources/ru.qm b/lib/resources/ru.qm index 0405f76..66d01c9 100644 --- a/lib/resources/ru.qm +++ b/lib/resources/ru.qm @@ -1,7 +1,7 @@ -9`aŹmǏ$g 5!$!S'S;>hˎiyJOT38~ʘEf-kҷ(X.^>p5%OC(Y$x5^}/=}U=b[é^xbPRq#A]@}_M,!k*vYF*}@ X7yvT e^>PY3f'n`-3~92C^t6o~]6A~{TTZhT]aYtS83bW?kY)1ŧ4obUgRd<{q?=?? Jn!`Se/Sxg^#rn<tfޒy ,[7b*7 - >ǵ @=^ogjjnd =Fq^-E-c/cq9v$NGӎ71Kg -D!7#d@## 6# |$);)P)l6v:xrE9faչ]þmHfUȰȰ!ʰ6[tjNTrD.ED. Pls8Un -3 >Oʥ[2Kb_iPvd~^>cnIFoÍ'@IX֚c׃z#j4'N5MQicFy0yңyyu}7} <V7u+sNN!M 7D   ,">. =OO ?OO ?OO- O1> ]CY la r X ^- >b n  +9`aŹmǏ$g 5!$!S'S;>hˎiyJOT38~ʘEf-kҷ(X.^>p5%OC(Y$x5^}/=}U=b[é^xbPRq#A]@}kM,!k*vYF*}@ X7yvT e^>PY3f'n`-3~92C^t6o~]6A~{TTZhT]aYtS83bW?kY)1ŧ4obUgRd<{q?=?? Jn!`Se/Sxg^#rnHtfޒy  ,g7b*7 + >ǵ @=^ogjjnd IFq^-E-c/cq9v$NGӎ71Kg +D!C#d@## 6# $);)P)l6v:xrE9faչ]þmHfUȰȰ!ʰ6[tjNTrD.ED. Pls8Un +3 >Oʥ[2Kb_iPvd~^>cnIFoÍ'@IX֚c׃z#j4'N5MQicFy0yңy'yu}7} <V7u+sNN!M 7D   ,">. =OO ?OO ?OO9 O1> ]CY la r X ^- >n n  j f< 1 PЧ @~V C$ C /C 9~ >; z j^e @@ -27,7 +27,7 @@ s(V 1" 8|R v -vq +v} &^N ێ @@ -35,9 +35,9 @@ s(V Nb ss, U[ -N!  !/" "JC/ :D jT | e  34!8 {sl  4 E L !s (5"T 4( 4P CZS C̯ C J[ b d-b p٩Ƹ + # -r ?S =4  -W 5!  T - U ʧ˭ ʧ ʧ ~ ֖ . ^E <K  "a "l ^8 Tn )7 )S< : A: Ql \{l o(t q2 l e !~~ z  o׹ '2:T 7> <' ƞZ <t eC yhLCcR-  .0B:~ht=1hgr]dx1[b3)1Cc#. =O0'd^kv~yI4 7$nu+^\ǪpW>&ni" ?@>3@0<<5About AboutDialog" ?@>3@0<<5 iTALC About iTALC AboutDialog 2B>@KAuthors AboutDialogn5@52>4 =0 40==K9 O7K: 5I5 =5 >ACI5AB2;5=. +N!  !/" "JC/ :D jT | e  34!8 {sl  4 E L !s (5"T 4( 4\ CZS C̯ C Jg b d-b p٩Ƹ + # -r ?S =4  +W 5!  T + U ʧ˭ ʧ ʧ ~% ֖ . ^E <K  "a "l ^8 Tn )7 )S< : A: Ql \{l o(t q2 l e !~~ z  o׹ '2:T 7> <' ƞZ <t eC yhLCcR-  .0B:~ht=1hgr]dx1[b3)1Cc#. =O0'd^kv~yI4 7$nu+^\ǪpW>&ni"% ?@>3@0<<5About AboutDialog" ?@>3@0<<5 iTALC About iTALC AboutDialog 2B>@KAuthors AboutDialogn5@52>4 =0 40==K9 O7K: 5I5 =5 >ACI5AB2;5=. A;8 K 65;05B5 4>1028BL ?5@52>4 ?@>3@0<<K iTALC =0 =>2K9 O7K: 8;8 C;CGH8BL C65 ACI5AB2CNI89, ?>60;C9AB0, A2O68B5AL A @07@01>BG8:0<8 iTALC!Current language not translated yet (or native English). @@ -256,7 +256,7 @@ p, li { white-space: pre-wrap; } Connected.RemoteControlWidgetToolBar!>548=5=85 A %1 Connecting %1RemoteControlWidgetToolBar0 25AL M:@0= FullscreenRemoteControlWidgetToolBar,01;>:8@>20BL ABC45=B0 Lock studentRemoteControlWidgetToolBar KE>4QuitRemoteControlWidgetToolBar(#40;5==>5 C?@02;5=85Remote controlRemoteControlWidgetToolBar!=8<>: M:@0=0SnapshotRemoteControlWidgetToolBar. 071;>:8@>20BL ABC45=B0Unlock studentRemoteControlWidgetToolBar">;L:> >17>@ View onlyRemoteControlWidgetToolBar  >:=5WindowRemoteControlWidgetToolBar -><5=DomainRemoteLogonDialog 0@>;LPasswordRemoteLogonDialog#40;5==K9 2E>4 Remote logonRemoteLogonDialogFA?>;L7C9B5 ?@82545==K5 =865 ?>;O 4;O 22>40 8<5=8 ?>;L7>20B5;O, ?0@>;O 8 =5>1O70B5;L=>3> =0720=8O 4><5=0. -B0 8=D>@<0F8O 1C45B 8A?>;L7>20=0 4;O 2E>40 2 A8AB5<C(K).Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).RemoteLogonDialog <O ?>;L7>20B5;OUsernameRemoteLogonDialog>60;C9AB0, 22548B5 :><0=4K 4;O 8E 2K?>;=5=8O =0 2K1@0==KE :;85=BA:8E :><?LNB5@0E. K <>65B5 70?8A0BL =5A:>;L:> :><0=4, ?> >4=>9 2 AB@>:5.gPlease enter the commands to run on the selected client(s). You can separate multiple commands by line.RunCommandsDialog"K?>;=8BL :><0=4K Run commandsRunCommandsDialog5 2>7<>6=> A45;0BL A=8<>:, B0: :0: 48@5:B>@8O %1 =5 ACI5AB2C5B 8 =5 <>65B 1KBL A>740=0.PCould not take a snapshot as directory %1 doesn't exist and couldn't be created.Snapshot!=8<>: M:@0=0SnapshotSnapshotK <>65B5 ;53:> C?@02;OBL A=8<:0<8, 8A?>;L7CO MBC @01>GCN >1;0ABL.:Simply manage the snapshots you made using this workspace. SnapshotList!=8<:8 M:@0=0 Snapshots SnapshotList|<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +><5=DomainRemoteLogonDialog 0@>;LPasswordRemoteLogonDialog#40;5==K9 2E>4 Remote logonRemoteLogonDialogFA?>;L7C9B5 ?@82545==K5 =865 ?>;O 4;O 22>40 8<5=8 ?>;L7>20B5;O, ?0@>;O 8 =5>1O70B5;L=>3> =0720=8O 4><5=0. -B0 8=D>@<0F8O 1C45B 8A?>;L7>20=0 4;O 2E>40 2 A8AB5<C(K).Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).RemoteLogonDialog <O ?>;L7>20B5;OUsernameRemoteLogonDialog>60;C9AB0, 22548B5 :><0=4K 4;O 8E 2K?>;=5=8O =0 2K1@0==KE :;85=BA:8E :><?LNB5@0E. K <>65B5 70?8A0BL =5A:>;L:> :><0=4, ?> >4=>9 2 AB@>:5.gPlease enter the commands to run on the selected client(s). You can separate multiple commands by line.RunCommandsDialog"K?>;=8BL :><0=4K Run commandsRunCommandsDialog52>7<>6=> A45;0BL A=8<>: M:@0=0, B0: :0: 48@5:B>@8O %1 =5 ACI5AB2C5B 8 =5 <>65B 1KBL A>740=0.PCould not take a snapshot as directory %1 doesn't exist and couldn't be created.Snapshot!=8<>: M:@0=0SnapshotSnapshotK <>65B5 ;53:> C?@02;OBL A=8<:0<8, 8A?>;L7CO MBC @01>GCN >1;0ABL.:Simply manage the snapshots you made using this workspace. SnapshotList!=8<:8 M:@0=0 Snapshots SnapshotList|<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">45AL ?5@5G8A;5=K 2A5 A45;0==K5 20<8 A=8<:8. K <>65B5 45;0BL A=8<:8, 2K1@02 A>>B25BAB2CNICN 70?8AL 2 :>=B5:AB=>< <5=N >:=0 :;85=B0. -B8<8 A=8<:0<8 <>6=> C?@02;OBL A ?><>ILN @0A?>;>65==KE =865 :=>?>:.</p></body></html>5