Add cmake+ninja build framework. Build initial dummy application.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
master
Michele Calgaro 2 years ago
parent a30a266067
commit d833de5bbe
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -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 )

@ -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 )

@ -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@

@ -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

@ -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";

7
debian/changelog vendored

@ -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.

24
debian/control vendored

@ -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:

7
debian/copyright vendored

@ -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

5
debian/menu vendored

@ -1,5 +0,0 @@
?package(universalindentgui): \
needs="X11" \
section="Applications/Programming" \
title="UniversalIndentgui" \
command="/usr/bin/universalindentgui"

30
debian/rules vendored

@ -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

@ -0,0 +1,6 @@
# Use xz instead of gzip
compression = "xz"
compression-level = 9
# Don't run differences
diff-ignore = .*

@ -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"

@ -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}
)

@ -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;
}

Loading…
Cancel
Save