diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-07-16 16:20:24 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-07-16 16:20:24 +0900 |
commit | d833de5bbe40d780fe02dc95d1c981a4b1007108 (patch) | |
tree | f9984fb88d2b8527be0ecfb9154ab7b83d809579 | |
parent | a30a266067d9d952edc91305bef757557c03717e (diff) | |
download | universal-indent-gui-tqt-d833de5bbe40d780fe02dc95d1c981a4b1007108.tar.gz universal-indent-gui-tqt-d833de5bbe40d780fe02dc95d1c981a4b1007108.zip |
Add cmake+ninja build framework. Build initial dummy application.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
-rw-r--r-- | CMakeLists.txt | 81 | ||||
-rw-r--r-- | ConfigureChecks.cmake | 25 | ||||
-rw-r--r-- | config.h.cmake | 8 | ||||
-rw-r--r-- | debian/cdbs/debian-tde.mk | 246 | ||||
-rw-r--r-- | debian/cdbs/versions.pl | 19 | ||||
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | debian/control | 24 | ||||
-rw-r--r-- | debian/copyright | 7 | ||||
-rw-r--r-- | debian/menu | 5 | ||||
-rwxr-xr-x | debian/rules | 30 | ||||
-rw-r--r-- | debian/source/options | 6 | ||||
-rw-r--r-- | debian/universal-indent-gui-tqt.menu | 5 | ||||
-rw-r--r-- | src/CMakeLists.txt | 35 | ||||
-rwxr-xr-x | src/main.cpp | 384 |
14 files changed, 597 insertions, 285 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..75375e2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,81 @@ +############################################ +# # +# Improvements and feedbacks are welcome # +# # +# This file is released under GPL >= 3 # +# # +############################################ + + +cmake_minimum_required( VERSION 3.1 ) + + +#### general package setup + +project( universal-indent-gui-tqt ) + + +#### include essential cmake modules + +include( FindPkgConfig ) +include( CheckFunctionExists ) +include( CheckSymbolExists ) +include( CheckIncludeFile ) +include( CheckLibraryExists ) +include( CheckCSourceCompiles ) +include( CheckCXXSourceCompiles ) + + +#### include our cmake modules + +include( TDEMacros ) + + +##### set version number ######################## + +tde_set_project_version( ) + + +##### setup install paths + +include( TDESetupPaths ) +tde_setup_paths( ) + + +##### optional stuff + +option( WITH_ALL_OPTIONS "Enable all optional support" OFF ) +option( WITH_GCC_VISIBILITY "Enable fvisibility and fvisibility-inlines-hidden" ${WITH_ALL_OPTIONS} ) + + +##### user requested modules + +option( BUILD_ALL "Build all" ON ) +#option( BUILD_TRANSLATIONS "Build translations" ${BUILD_ALL} ) + + +##### configure checks + +include( ConfigureChecks.cmake ) + + +###### global compiler settings + +add_definitions( -DHAVE_CONFIG_H ) + +set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) +set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) +set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" ) + + +##### directories + +add_subdirectory( src ) + + +##### other data ################################ + + +##### write configure files + +configure_file( config.h.cmake config.h @ONLY ) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake new file mode 100644 index 0000000..031be3c --- /dev/null +++ b/ConfigureChecks.cmake @@ -0,0 +1,25 @@ +########################################### +# # +# Improvements and feedback are welcome # +# # +# This file is released under GPL >= 3 # +# # +########################################### + + +# required stuff +find_package( TQt ) + +tde_setup_architecture_flags( ) + +include(TestBigEndian) +test_big_endian(WORDS_BIGENDIAN) + +tde_setup_largefiles( ) + + +##### check for gcc visibility support + +if( WITH_GCC_VISIBILITY ) + tde_setup_gcc_visibility( ) +endif( WITH_GCC_VISIBILITY ) diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..61ede3a --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,8 @@ +#define VERSION "@VERSION@" + +// Defined if you have fvisibility and fvisibility-inlines-hidden support. +#cmakedefine __KDE_HAVE_GCC_VISIBILITY 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#cmakedefine WORDS_BIGENDIAN @WORDS_BIGENDIAN@ diff --git a/debian/cdbs/debian-tde.mk b/debian/cdbs/debian-tde.mk new file mode 100644 index 0000000..f36e352 --- /dev/null +++ b/debian/cdbs/debian-tde.mk @@ -0,0 +1,246 @@ +# -*- mode: makefile; coding: utf-8 -*- +# Copyright © 2003 Christopher L Cheney <ccheney@debian.org> +# Copyright © 2019 TDE Team +# Description: A class for TDE packages; sets TDE environment variables, etc +# +# 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, 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., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. + +ifndef _cdbs_bootstrap +_cdbs_scripts_path ?= /usr/lib/cdbs +_cdbs_rules_path ?= /usr/share/cdbs/1/rules +_cdbs_class_path ?= /usr/share/cdbs/1/class +endif + +ifndef _cdbs_class_debian-qt-kde +_cdbs_class_debian-qt-kde := 1 + +# for dh_icons +CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), debhelper (>= 5.0.7ubuntu4) + +# Note: This _must_ be included before autotools.mk, or it won't work. +common-configure-arch common-configure-indep:: debian/stamp-cvs-make +debian/stamp-cvs-make: +ifndef _cdbs_class_cmake + cp -Rp /usr/share/aclocal/libtool.m4 admin/libtool.m4.in +ifneq "$(wildcard /usr/share/libtool/config/ltmain.sh)" "" + cp -Rp /usr/share/libtool/config/ltmain.sh admin/ltmain.sh +endif +ifneq "$(wildcard /usr/share/libtool/build-aux/ltmain.sh)" "" + cp -Rp /usr/share/libtool/build-aux/ltmain.sh admin/ltmain.sh +endif + $(MAKE) -C $(DEB_SRCDIR) -f admin/Makefile.common dist; +endif + touch debian/stamp-cvs-make + +include $(_cdbs_rules_path)/buildcore.mk$(_cdbs_makefile_suffix) + +ifdef _cdbs_tarball_dir +DEB_BUILDDIR = $(_cdbs_tarball_dir)/obj-$(DEB_BUILD_GNU_TYPE) +else +DEB_BUILDDIR = obj-$(DEB_BUILD_GNU_TYPE) +endif + +ifndef _cdbs_class_cmake +include $(_cdbs_class_path)/autotools.mk$(_cdbs_makefile_suffix) +endif + +ifdef _cdbs_class_cmake +ifneq "$(wildcard /usr/bin/ninja)" "" +MAKE = ninja -v +DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR) +DEB_MAKE_INSTALL_TARGET = install +DEB_CMAKE_NORMAL_ARGS += -GNinja +endif +endif + +ifndef _cdbs_rules_patchsys_quilt +DEB_PATCHDIRS := debian/patches/common debian/patches +endif + +export kde_cgidir = \$${libdir}/cgi-bin +export kde_confdir = \$${sysconfdir}/trinity +export kde_htmldir = \$${datadir}/doc/tde/HTML + +DEB_KDE_ENABLE_FINAL := yes +DEB_INSTALL_DOCS_ALL := + +DEB_DH_MAKESHLIBS_ARGS_ALL := -V +DEB_SHLIBDEPS_INCLUDE = $(foreach p,$(PACKAGES_WITH_LIBS),debian/$(p)/usr/lib) + +DEB_AC_AUX_DIR = $(DEB_SRCDIR)/admin +DEB_CONFIGURE_INCLUDEDIR = "\$${prefix}/include" +DEB_COMPRESS_EXCLUDE = .dcl .docbook -license .tag .sty .el + +# The default gzip compressor has been changed in dpkg >= 1.17.0. +deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \ + sed -e "s|.*version ||" -e "s| .*||" | \ + xargs -r dpkg --compare-versions 1.17.0 lt \ + && echo xz || echo gzip) +ifeq ($(deb_default_compress),gzip) +DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \ + && echo xz || echo bzip2) +endif + +ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + cdbs_treat_me_gently_arches := arm m68k alpha ppc64 armel armeb + ifeq (,$(filter $(DEB_HOST_ARCH_CPU),$(cdbs_treat_me_gently_arches))) + cdbs_kde_enable_final = $(if $(DEB_KDE_ENABLE_FINAL),--enable-final,) + else + cdbs_kde_enable_final = + endif +endif + +ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) + cdbs_kde_enable_final = + cdbs_kde_enable_debug = --enable-debug=yes +else + cdbs_kde_enable_debug = --disable-debug +endif + +ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS))) + cdbs_kde_enable_debug = --enable-debug=full +endif + +DEB_BUILD_PARALLEL ?= true + +cdbs_configure_flags += \ + --with-qt-dir=/usr/share/qt3 \ + --disable-rpath \ + --with-xinerama \ + $(cdbs_kde_enable_final) \ + $(cdbs_kde_enable_debug) + + +# This is a convenience target for calling manually. +# It's not part of the build process. +buildprep: clean apply-patches +ifndef _cdbs_class_cmake + $(MAKE) -f admin/Makefile.common dist +endif + debian/rules clean + +.tdepkginfo: + echo "# TDE package information" >.tdepkginfo + dpkg-parsechangelog | sed -n "s|^Source: |Name: |p" >>.tdepkginfo + dpkg-parsechangelog | sed -n "s|^Version: |Version: |p" >>.tdepkginfo + date +"DateTime: %m/%d/%Y %H:%M" -u -d "$$(dpkg-parsechangelog | sed -n 's|^Date: ||p')" >>.tdepkginfo + +post-patches:: .tdepkginfo + +common-build-arch:: debian/stamp-man-pages +debian/stamp-man-pages: + if ! test -d debian/man/out; then mkdir -p debian/man/out; fi + for f in $$(find debian/man -name '*.sgml'); do \ + docbook-to-man $$f > debian/man/out/`basename $$f .sgml`.1; \ + done + for f in $$(find debian/man -name '*.man'); do \ + soelim -I debian/man $$f \ + > debian/man/out/`basename $$f .man`.`head -n1 $$f | awk '{print $$NF}'`; \ + done + touch debian/stamp-man-pages + +common-binary-indep:: + ( set -e; \ + tmpf=`mktemp debian/versions.XXXXXX`; \ + perl debian/cdbs/versions.pl >$$tmpf; \ + for p in $(DEB_INDEP_PACKAGES); do \ + cat $$tmpf >>debian/$$p.substvars; \ + done; \ + rm -f $$tmpf ) + +common-binary-arch:: + ( set -e; \ + tmpf=`mktemp debian/versions.XXXXXX`; \ + perl debian/cdbs/versions.pl >$$tmpf; \ + for p in $(DEB_ARCH_PACKAGES); do \ + cat $$tmpf >>debian/$$p.substvars; \ + done; \ + rm -f $$tmpf ) + # update multi-arch path in install files + ls -d debian/* | \ + grep -E "(install|links)$$" | \ + while read a; do \ + [ -d $$a ] || [ -f $$a.arch ] || \ + ! grep -q "\$$(DEB_HOST_MULTIARCH)" $$a || \ + sed -i.arch "s|\$$(DEB_HOST_MULTIARCH)|$(DEB_HOST_MULTIARCH)|g" $$a; \ + done + +clean:: + rm -rf debian/man/out + -rmdir debian/man + rm -f debian/stamp-man-pages + rm -rf debian/shlibs-check + # revert multi-arch path in install files + ls -d debian/* | \ + grep -E "(install|links)$$" | \ + while read a; do \ + [ ! -f $$a.arch ] || \ + mv $$a.arch $$a; \ + done + +$(patsubst %,binary-install/%,$(DEB_PACKAGES)) :: binary-install/%: + if test -x /usr/bin/dh_icons; then dh_icons -p$(cdbs_curpkg) $(DEB_DH_ICONCACHE_ARGS); fi + if test -x /usr/bin/dh_desktop; then dh_desktop -p$(cdbs_curpkg) $(DEB_DH_DESKTOP_ARGS); fi + if test -e debian/$(cdbs_curpkg).lintian; then \ + install -p -D -m644 debian/$(cdbs_curpkg).lintian \ + debian/$(cdbs_curpkg)/usr/share/lintian/overrides/$(cdbs_curpkg); \ + fi + if test -e debian/$(cdbs_curpkg).presubj; then \ + install -p -D -m644 debian/$(cdbs_curpkg).presubj \ + debian/$(cdbs_curpkg)/usr/share/bug/$(cdbs_curpkg)/presubj; \ + fi + +binary-install/$(DEB_SOURCE_PACKAGE)-doc-html:: + set -e; \ + for doc in `cd $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en; find . -name index.docbook`; do \ + pkg=$${doc%/index.docbook}; pkg=$${pkg#./}; \ + echo Building $$pkg HTML docs...; \ + mkdir -p $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \ + cd $(CURDIR)/debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \ + /opt/trinity/bin/meinproc $(DEB_DESTDIR)/opt/trinity/share/doc/tde/HTML/en/$$pkg/index.docbook; \ + done + for pkg in $(DOC_HTML_PRUNE) ; do \ + rm -rf debian/$(DEB_SOURCE_PACKAGE)-doc-html/opt/trinity/share/doc/tde/HTML/en/$$pkg; \ + done + +common-build-indep:: debian/stamp-kde-apidox +debian/stamp-kde-apidox: + $(if $(DEB_KDE_APIDOX),+$(DEB_MAKE_INVOKE) apidox) + touch $@ + +common-install-indep:: common-install-kde-apidox +common-install-kde-apidox:: + $(if $(DEB_KDE_APIDOX),+DESTDIR=$(DEB_DESTDIR) $(DEB_MAKE_INVOKE) install-apidox) + +cleanbuilddir:: + -$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf $(DEB_BUILDDIR)) + +clean:: +ifndef _cdbs_class_cmake + if test -n "$(DEB_KDE_CVS_MAKE)" && test -d $(DEB_SRCDIR); then \ + cd $(DEB_SRCDIR); \ + find . -name Makefile.in -print | \ + xargs --no-run-if-empty rm -f; \ + rm -f Makefile.am acinclude.m4 aclocal.m4 config.h.in \ + configure configure.files configure.in stamp-h.in \ + subdirs; \ + fi +endif + rm -f .tdepkginfo + rm -f debian/stamp-kde-apidox + rm -f debian/stamp-cvs-make + +endif diff --git a/debian/cdbs/versions.pl b/debian/cdbs/versions.pl new file mode 100644 index 0000000..1b110f7 --- /dev/null +++ b/debian/cdbs/versions.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +my $version = `dpkg-parsechangelog | awk '/^Version/ {print \$2}'`; +my ($version3, $version3_next); +my ($version2, $version2_next); + +($version3 = $version) =~ s/^(([^.]+\.){2}[^.+~-]+)[.+~-]?[^-]*-[^-]+$/$1/; +($version2 = $version3) =~ s/\.[^.]+$//; + +($version3_next = $version3) =~ s/(?<=\.)(\d+)[a-z]?$/($1+1)/e; +($version2_next = $version2) =~ s/(?<=\.)(\d+)$/($1+1)/e; + +print "TDE-Version3=$version3\n"; +print "TDE-Version2=$version2\n"; +print "TDE-Next-Version3=$version3_next\n"; +print "TDE-Next-Version2=$version2_next\n"; diff --git a/debian/changelog b/debian/changelog index 3be2799..c665103 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +universal-indent-gui-tqt (1.2.0-2) unstable; urgency=medium + + * Port to TQt3 and package renaming + * Initial release for TQt3 + + -- Michele Calgaro <michele.calgaro@yahoo.it> Mon, 16 Jul 2022 16:06:00 +0900 + universalindentgui (1.2.0-1.1) unstable; urgency=medium * Non-maintainer upload. diff --git a/debian/control b/debian/control index 95f6a35..006820f 100644 --- a/debian/control +++ b/debian/control @@ -1,24 +1,16 @@ -Source: universalindentgui +Source: universal-indent-gui-tqt Section: devel Priority: optional -Maintainer: Thomas Schweitzer <thomas-schweitzer@arcor.de> -Uploaders: Fathi Boudra <fabo@debian.org> -Build-Depends: debhelper (>= 9), libqscintilla2-qt4-dev, libqt4-dev +Maintainer: TDE Debian Team <team-debian@trinitydesktop.org> +XSBC-Original-Maintainer: Thomas Schweitzer <thomas-schweitzer@arcor.de> +XSBC-Original-Uploaders: Fathi Boudra <fabo@debian.org> +Build-Depends: cdbs, debhelper (>= 9~), quilt, cmake-trinity, ninja-build, libtqtinterface-dev, libtqscintilla-dev Standards-Version: 3.9.3 -Homepage: http://universalindent.sourceforge.net -Package: universalindentgui +Package: universal-indent-gui-tqt Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: astyle, - bcpp, - csstidy, - hindent, - indent, - perltidy, - tidy, - uncrustify, - xmlindent +Depends: ${shlibs:Depends} +Suggests: astyle, bcpp, csstidy, hindent, indent, perltidy, tidy, uncrustify, xmlindent Description: GUI frontend for several code beautifiers UniversalIndentGui is a GUI fontend for several code beautifiers, currently supporting: diff --git a/debian/copyright b/debian/copyright index eaf269d..4ca6304 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,4 +1,9 @@ -This package was debianized by: +This code was ported to TQt3 and packaged for Debian by: + Michele Calgaro <michele.calgaro@yahoo.it> +and is based on the code downloaded from Debian Snapshot Archive at: + https://snapshot.debian.org/package/universalindentgui/1.2.0-1.1 + +The original package was debianized by: Fathi Boudra <fabo@debian.org> on Wed, 29 Apr 2009 10:50:58 +0200 diff --git a/debian/menu b/debian/menu deleted file mode 100644 index d787c08..0000000 --- a/debian/menu +++ /dev/null @@ -1,5 +0,0 @@ -?package(universalindentgui): \ - needs="X11" \ - section="Applications/Programming" \ - title="UniversalIndentgui" \ - command="/usr/bin/universalindentgui" diff --git a/debian/rules b/debian/rules index 9c45c12..8a65140 100755 --- a/debian/rules +++ b/debian/rules @@ -1,19 +1,15 @@ #!/usr/bin/make -f -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -%: - dh $@ --parallel --buildsystem=qmake_qt4 - -override_dh_auto_install: - dh_auto_install - - # Remove shellindent - rm -f debian/universalindentgui/usr/share/universalindentgui/indenters/example.sh - rm -f debian/universalindentgui/usr/share/universalindentgui/indenters/shellindent.awk - rm -f debian/universalindentgui/usr/share/universalindentgui/indenters/uigui_shellindent.ini - - # Fix lintian warnings/errors - find debian/universalindentgui/usr/share/universalindentgui -type f -exec chmod a-x '{}' \; - find debian/universalindentgui/usr/share/universalindentgui -type f -name '*.rb' | xargs chmod a+x +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/cmake.mk +include debian/cdbs/debian-tde.mk + +DEB_CMAKE_EXTRA_FLAGS := \ + -DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCONFIG_INSTALL_DIR="/etc/universal-indent-gui-tqt" \ + -DXDG_MENU_INSTALL_DIR="/etc/xdg/menus" \ + -DCMAKE_VERBOSE_MAKEFILE="ON" \ + -DBUILD_ALL="ON" \ + -DCMAKE_SKIP_RPATH="OFF" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..72f1f54 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,6 @@ +# Use xz instead of gzip +compression = "xz" +compression-level = 9 + +# Don't run differences +diff-ignore = .* diff --git a/debian/universal-indent-gui-tqt.menu b/debian/universal-indent-gui-tqt.menu new file mode 100644 index 0000000..17418bf --- /dev/null +++ b/debian/universal-indent-gui-tqt.menu @@ -0,0 +1,5 @@ +?package(universal-indent-gui-tqt): \ + needs="X11" \ + section="Applications/Programming" \ + title="Universal Indent Gui TQt" \ + command="/usr/bin/universal-indent-gui-tqt" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..3f338fa --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,35 @@ +################################################# +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +include_directories( + ${TQT_INCLUDE_DIRS} + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/src + ${CMAKE_SOURCE_DIR}/src +) + +link_directories( + ${TQT_LIBRARY_DIRS} +) + + +##### other data ################################ + + +##### tdeio_appinfo (module) ####################### + +set( target universal-indent-gui-tqt ) + +set( ${target}_SRCS + main.cpp +) + +tde_add_executable( ${target} AUTOMOC + SOURCES ${${target}_SRCS} + DESTINATION ${BIN_INSTALL_DIR} +) diff --git a/src/main.cpp b/src/main.cpp index 5a1204d..1b6285a 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,105 +17,28 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "MainWindow.h" - -#include "UiGuiIndentServer.h" -#include "debugging/TSLogger.h" -#include "UiGuiIniFileParser.h" -#include "UiGuiSettings.h" -#include "UiGuiVersion.h" -#include "UiGuiSystemInfo.h" -#include "IndentHandler.h" -#include "SettingsPaths.h" - -#include <tntqapplication.h> -#include <tntqtextcodec.h> -#include <tqdebug.h> - -#include <string> -#include <iostream> -#include <algorithm> -#include <tclap/CmdLine.h> - -#ifdef _MSC_VER - -#include <windows.h> -#include <direct.h> -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> -#include <io.h> -#include <iostream> -#include <fstream> - -/** - \brief Calling this function tries to attach to the console of the parent process and - redirect all inputs and outputs from and to this console. - - The redirected streams are stdout, stdin, stderr, cout, wcout, cin, wcin, wcerr, cerr, wclog and clog. - - Code based on info from http://dslweb.nwnexus.com/~ast/dload/guicon.htm. - */ -bool attachToConsole(/*enum ATTACH_ONLY|TRY_ATTACH_ELSE_CREATE|CREATE_NEW*/) -{ - int hConHandle; - long lStdHandle; - CONSOLE_SCREEN_BUFFER_INFO coninfo; - FILE *fp; - - // Trying to attach to the console of the parent process. - BOOL successful = AttachConsole(ATTACH_PARENT_PROCESS); - // In case that the parent process has no console return false and do no input/output redirection. - if ( !successful ) - return false; - - // Set the screen buffer to be big enough to let us scroll text - GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); - // Set maximum console lines. - coninfo.dwSize.Y = 500; - SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); - - // Redirect unbuffered STDOUT to the console. - lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if ( hConHandle != -1 ) { - fp = _fdopen( hConHandle, "w" ); - *stdout = *fp; - setvbuf( stdout, NULL, _IONBF, 0 ); - } - - // Redirect unbuffered STDIN to the console. - lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if ( hConHandle != -1 ) { - fp = _fdopen( hConHandle, "r" ); - *stdin = *fp; - setvbuf( stdin, NULL, _IONBF, 0 ); - } - - // Redirect unbuffered STDERR to the console. - lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if ( hConHandle != -1 ) { - fp = _fdopen( hConHandle, "w" ); - *stderr = *fp; - setvbuf( stderr, NULL, _IONBF, 0 ); - } - - // Make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to console as well. - std::ios::sync_with_stdio(); - - return true; -} -#else -bool attachToConsole() -{ - return false; -} - -#endif - -using namespace tschweitzer::debugging; +// -- #include "MainWindow.h" +// -- +// -- #include "UiGuiIndentServer.h" +// -- #include "debugging/TSLogger.h" +// -- #include "UiGuiIniFileParser.h" +// -- #include "UiGuiSettings.h" +// -- #include "UiGuiVersion.h" +// -- #include "UiGuiSystemInfo.h" +// -- #include "IndentHandler.h" +// -- #include "SettingsPaths.h" +// -- +// -- #include <tntqapplication.h> +// -- #include <tntqtextcodec.h> +// -- #include <tqdebug.h> + +// -- #include <string> +// -- #include <iostream> +// -- #include <algorithm> +// -- #include <tclap/CmdLine.h> + + +// -- using namespace tschweitzer::debugging; /*! /brief Entry point to UniversalIndentGUI application. @@ -128,152 +51,121 @@ using namespace tschweitzer::debugging; If -p and -s are set, -p will be used. -v --verbose needs a following parameter defining the verbose level as a number from 0 to 3. */ -int main(int argc, char *argv[]) { - TQString file2OpenOnStart = ""; - int verboseLevel = 1; - bool startAsPlugin = false; - bool startAsServer = false; - bool tclapExitExceptionThrown = false; - int returnValue = 0; - - bool attachedToConsole = false; - attachedToConsole = attachToConsole(); - -#ifdef __APPLE__ - // Filter out -psn_0_118813 and similar parameters. - std::vector<char*> argList; - for ( int i = 0; i < argc; i++ ) { - TQString argString(argv[i]); - - if ( argString.startsWith("-psn_") == false ) { - argList.push_back(argv[i]); - } - else { -// std::cerr << std::endl << "The parameter "<< i << " is an invalid finder parameter. Parameter was " << argv[i] << std::endl; - } - } - for ( size_t i = 0; i < argList.size(); i++ ) { - argv[i] = argList.at(i); - } - argc = argList.size(); -#endif - - // Wrap everything in a try block. Do this every time, - // because exceptions will be thrown for problems. - try { - // Define the command line object. - TCLAP::CmdLine cmd("If -p and -s are set, -p will be used.\nGiving no parameters starts full gui without server.", ' ', "UiGUI version " PROGRAM_VERSION_STRING " " PROGRAM_REVISION); - cmd.setExceptionHandling(false); - - // Define a value argument and add it to the command line. - TCLAP::UnlabeledValueArg<std::string> filenameArg("file", "Opens the by filename defined file on start" , false, "", "filename"); - cmd.add( filenameArg ); - - // Define a switch and add it to the command line. - TCLAP::SwitchArg pluginSwitch("p", "plugin", "Run as plugin. Server will be started with a simplified gui", false); - cmd.add( pluginSwitch ); - - // Define a switch and add it to the command line. - TCLAP::SwitchArg serverSwitch("s", "server", "Run as server only without gui", false); - cmd.add( serverSwitch ); - - // Define a value argument and add it to the command line. - TCLAP::ValueArg<int> verboselevelArg("v", "verbose", "Sets how many info is written to the log. 0 means with debug info, 3 means critical messages only" , false, 1, "int"); - cmd.add( verboselevelArg ); - - // Parse the args. - cmd.parse( argc, argv ); - - // Get the value parsed by each arg. - file2OpenOnStart = filenameArg.getValue().c_str(); - startAsPlugin = pluginSwitch.getValue(); - startAsServer = serverSwitch.getValue(); - verboseLevel = verboselevelArg.getValue(); - } - catch (TCLAP::ArgException &e) { // catch arg exceptions - std::cerr << std::endl << "error: " << e.error() << ". " << e.argId() << std::endl; - returnValue = 1; - } - catch (TCLAP::ExitException &e) { // catch exit exceptions - tclapExitExceptionThrown = true; - returnValue = e.getExitStatus(); - } - catch (...) { // catch any exceptions - std::cerr << std::endl << "There was an error! Maybe faulty command line arguments set. See --help." << std::endl; - returnValue = 1; - } - - if ( returnValue != 0 || tclapExitExceptionThrown ) { -#ifdef _MSC_VER - if ( attachedToConsole ) { - // Workaround for skipped command line prompt: Get the current working directory and print it to console. - char* buffer; - if( (buffer = _getcwd( NULL, 0 )) != NULL ) { - std::cerr << std::endl << buffer << ">"; - free(buffer); - } - // Release the connection to the parents console. - FreeConsole(); - } -#endif - return returnValue; - } - - TQApplication app(argc, argv); - UiGuiIndentServer server; - MainWindow *mainWindow = NULL; - IndentHandler *indentHandler = NULL; - - // Init and install the logger function. - // Setting UTF-8 as default 8-Bit encoding to ensure that tqDebug does no false string conversion. - TQTextCodec::setCodecForCStrings( TQTextCodec::codecForName("UTF-8") ); - TQTextCodec::setCodecForLocale( TQTextCodec::codecForName("UTF-8") ); - // Force creation of an TSLogger instance here, to avoid recursion with SettingsPaths init function. -#ifdef _DEBUG - TSLogger::getInstance(0); -#else - TSLogger::getInstance(verboseLevel); -#endif - qInstallMsgHandler( TSLogger::messageHandler ); - TSLogger::messageHandler( TSLoggerInfoMsg, TQString("Starting UiGUI Version %1 %2").arg(PROGRAM_VERSION_STRING).arg(PROGRAM_REVISION).toAscii() ); - TSLogger::messageHandler( TSLoggerInfoMsg, TQString("Running on %1").arg(UiGuiSystemInfo::getOperatingSystem()).toAscii() ); - - // Set default values for all by UniversalIndentGUI used settings objects. - TQCoreApplication::setOrganizationName("UniversalIndentGUI"); - TQCoreApplication::setOrganizationDomain("universalindent.sf.net"); - TQCoreApplication::setApplicationName("UniversalIndentGUI"); - - // Start normal with full gui and without server. - if ( !startAsPlugin && !startAsServer ) { - mainWindow = new MainWindow(file2OpenOnStart); - mainWindow->show(); - } - // Start as plugin with server. - else if ( startAsPlugin ) { - server.startServer(); - indentHandler = new IndentHandler(0); - indentHandler->show(); - } - // Start as server only without any gui. - else if ( startAsServer ) { - server.startServer(); - } - - try { - returnValue = app.exec(); - } - catch (std::exception &ex) { - qCritical() << __LINE__ << " " << __FUNCTION__ << ": Something went terribly wrong:" << ex.what(); - } - - if ( startAsPlugin || startAsServer ) - server.stopServer(); - - delete indentHandler; - delete mainWindow; - - SettingsPaths::cleanAndRemoveTempDir(); - TSLogger::deleteInstance(); +int main(int argc, char *argv[]) +{ + return 0; +// -- TQString file2OpenOnStart = ""; +// -- int verboseLevel = 1; +// -- bool startAsPlugin = false; +// -- bool startAsServer = false; +// -- bool tclapExitExceptionThrown = false; +// -- int returnValue = 0; +// -- +// -- // Wrap everything in a try block. Do this every time, +// -- // because exceptions will be thrown for problems. +// -- try { +// -- // Define the command line object. +// -- TCLAP::CmdLine cmd("If -p and -s are set, -p will be used.\nGiving no parameters starts full gui without server.", ' ', "UiGUI version " PROGRAM_VERSION_STRING " " PROGRAM_REVISION); +// -- cmd.setExceptionHandling(false); +// -- +// -- // Define a value argument and add it to the command line. +// -- TCLAP::UnlabeledValueArg<std::string> filenameArg("file", "Opens the by filename defined file on start" , false, "", "filename"); +// -- cmd.add( filenameArg ); +// -- +// -- // Define a switch and add it to the command line. +// -- TCLAP::SwitchArg pluginSwitch("p", "plugin", "Run as plugin. Server will be started with a simplified gui", false); +// -- cmd.add( pluginSwitch ); +// -- +// -- // Define a switch and add it to the command line. +// -- TCLAP::SwitchArg serverSwitch("s", "server", "Run as server only without gui", false); +// -- cmd.add( serverSwitch ); +// -- +// -- // Define a value argument and add it to the command line. +// -- TCLAP::ValueArg<int> verboselevelArg("v", "verbose", "Sets how many info is written to the log. 0 means with debug info, 3 means critical messages only" , false, 1, "int"); +// -- cmd.add( verboselevelArg ); +// -- +// -- // Parse the args. +// -- cmd.parse( argc, argv ); +// -- +// -- // Get the value parsed by each arg. +// -- file2OpenOnStart = filenameArg.getValue().c_str(); +// -- startAsPlugin = pluginSwitch.getValue(); +// -- startAsServer = serverSwitch.getValue(); +// -- verboseLevel = verboselevelArg.getValue(); +// -- } +// -- catch (TCLAP::ArgException &e) { // catch arg exceptions +// -- std::cerr << std::endl << "error: " << e.error() << ". " << e.argId() << std::endl; +// -- returnValue = 1; +// -- } +// -- catch (TCLAP::ExitException &e) { // catch exit exceptions +// -- tclapExitExceptionThrown = true; +// -- returnValue = e.getExitStatus(); +// -- } +// -- catch (...) { // catch any exceptions +// -- std::cerr << std::endl << "There was an error! Maybe faulty command line arguments set. See --help." << std::endl; +// -- returnValue = 1; +// -- } +// -- +// -- if ( returnValue != 0 || tclapExitExceptionThrown ) { +// -- return returnValue; +// -- } +// -- +// -- TQApplication app(argc, argv); +// -- UiGuiIndentServer server; +// -- MainWindow *mainWindow = NULL; +// -- IndentHandler *indentHandler = NULL; +// -- +// -- // Init and install the logger function. +// -- // Setting UTF-8 as default 8-Bit encoding to ensure that tqDebug does no false string conversion. +// -- TQTextCodec::setCodecForCStrings( TQTextCodec::codecForName("UTF-8") ); +// -- TQTextCodec::setCodecForLocale( TQTextCodec::codecForName("UTF-8") ); +// -- // Force creation of an TSLogger instance here, to avoid recursion with SettingsPaths init function. +// -- #ifdef _DEBUG +// -- TSLogger::getInstance(0); +// -- #else +// -- TSLogger::getInstance(verboseLevel); +// -- #endif +// -- qInstallMsgHandler( TSLogger::messageHandler ); +// -- TSLogger::messageHandler( TSLoggerInfoMsg, TQString("Starting UiGUI Version %1 %2").arg(PROGRAM_VERSION_STRING).arg(PROGRAM_REVISION).toAscii() ); +// -- TSLogger::messageHandler( TSLoggerInfoMsg, TQString("Running on %1").arg(UiGuiSystemInfo::getOperatingSystem()).toAscii() ); +// -- +// -- // Set default values for all by UniversalIndentGUI used settings objects. +// -- TQCoreApplication::setOrganizationName("UniversalIndentGUI"); +// -- TQCoreApplication::setOrganizationDomain("universalindent.sf.net"); +// -- TQCoreApplication::setApplicationName("UniversalIndentGUI"); +// -- +// -- // Start normal with full gui and without server. +// -- if ( !startAsPlugin && !startAsServer ) { +// -- mainWindow = new MainWindow(file2OpenOnStart); +// -- mainWindow->show(); +// -- } +// -- // Start as plugin with server. +// -- else if ( startAsPlugin ) { +// -- server.startServer(); +// -- indentHandler = new IndentHandler(0); +// -- indentHandler->show(); +// -- } +// -- // Start as server only without any gui. +// -- else if ( startAsServer ) { +// -- server.startServer(); +// -- } +// -- +// -- try { +// -- returnValue = app.exec(); +// -- } +// -- catch (std::exception &ex) { +// -- qCritical() << __LINE__ << " " << __FUNCTION__ << ": Something went terribly wrong:" << ex.what(); +// -- } +// -- +// -- if ( startAsPlugin || startAsServer ) +// -- server.stopServer(); +// -- +// -- delete indentHandler; +// -- delete mainWindow; +// -- +// -- SettingsPaths::cleanAndRemoveTempDir(); +// -- TSLogger::deleteInstance(); +// -- +// -- return returnValue; - return returnValue; } |