summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2013-04-05 16:39:24 +0100
committerMichael Meeks <michael.meeks@suse.com>2013-04-08 10:13:27 +0100
commit164027e48899faaee284242eaca04b8aa5545319 (patch)
tree790df1a7a57297d3554c57f7130b7a478257e559 /svx
parent153c9de417768846cf1ab6873c52e2d4643ae6cf (diff)
gengal: re-base on original tool.
new wrapper based on unopkg.sh. work re-based on original SUSE implementation. Change-Id: I90e48476b7edb6be0b8f9e63b328f4b85658ac1c
Diffstat (limited to 'svx')
-rw-r--r--svx/source/gengal/gengal.cxx236
-rw-r--r--svx/source/gengal/gengal.sh97
2 files changed, 333 insertions, 0 deletions
diff --git a/svx/source/gengal/gengal.cxx b/svx/source/gengal/gengal.cxx
new file mode 100644
index 000000000000..5bbfeab4d6b5
--- /dev/null
+++ b/svx/source/gengal/gengal.cxx
@@ -0,0 +1,236 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+
+#include <list>
+
+#include <unotools/streamwrap.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/registry/XSimpleRegistry.hpp>
+#include <com/sun/star/ucb/UniversalContentBroker.hpp>
+
+#include <tools/urlobj.hxx>
+#include <vcl/vclmain.hxx>
+
+#include <osl/file.hxx>
+#include <osl/process.h>
+#include <rtl/bootstrap.hxx>
+#include <vcl/svapp.hxx>
+
+#include <svx/galtheme.hxx>
+#include <svx/gallery1.hxx>
+
+using namespace ::com::sun::star;
+
+typedef ::std::list<OUString> FileNameList;
+
+class GalApp : public Application
+{
+public:
+ virtual int Main();
+
+protected:
+ uno::Reference<lang::XMultiServiceFactory> xMSF;
+ void Init();
+};
+
+Gallery* createGallery( const OUString& rURL )
+{
+ return new Gallery( rURL );
+}
+
+void disposeGallery( Gallery* pGallery )
+{
+ delete pGallery;
+}
+
+static void createTheme( OUString aThemeName, OUString aGalleryURL,
+ OUString aDestDir, sal_uInt32 nNumFrom,
+ FileNameList &rFiles )
+{
+ Gallery* pGallery;
+
+ pGallery = createGallery( aGalleryURL );
+ if (!pGallery ) {
+ fprintf( stderr, "Could't create '%s'\n",
+ OUStringToOString( aGalleryURL, RTL_TEXTENCODING_UTF8 ).getStr() );
+ exit( 1 );
+ }
+ fprintf( stderr, "Work on gallery '%s'\n",
+ OUStringToOString( aGalleryURL, RTL_TEXTENCODING_UTF8 ).getStr() );
+
+ fprintf( stderr, "Existing themes: %d\n",
+ pGallery->GetThemeCount() );
+
+ GalleryTheme *pGalTheme;
+ if( !pGallery->HasTheme( aThemeName) ) {
+ if( !pGallery->CreateTheme( aThemeName, nNumFrom ) ) {
+ fprintf( stderr, "Failed to create theme\n" );
+ exit( 1 );
+ }
+ }
+
+ fprintf( stderr, "Existing themes: %d\n",
+ pGallery->GetThemeCount() );
+
+ SfxListener aListener;
+
+ if ( !( pGalTheme = pGallery->AcquireTheme( aThemeName, aListener ) ) ) {
+ fprintf( stderr, "Failed to acquire theme\n" );
+ exit( 1 );
+ }
+
+ fprintf( stderr, "Using DestDir: %s\n",
+ OUStringToOString( aDestDir, RTL_TEXTENCODING_UTF8 ).getStr() );
+ pGalTheme->SetDestDir(String(aDestDir));
+
+ FileNameList::const_iterator aIter;
+
+ for( aIter = rFiles.begin(); aIter != rFiles.end(); ++aIter )
+ {
+// Should/could use:
+// if ( ! pGalTheme->InsertFileOrDirURL( aURL ) ) {
+// Requires a load more components ...
+
+ Graphic aGraphic;
+
+ if ( ! pGalTheme->InsertURL( *aIter ) )
+ fprintf( stderr, "Failed to import '%s'\n",
+ OUStringToOString( *aIter, RTL_TEXTENCODING_UTF8 ).getStr() );
+ else
+ fprintf( stderr, "Imported file '%s' (%d)\n",
+ OUStringToOString( *aIter, RTL_TEXTENCODING_UTF8 ).getStr(),
+ pGalTheme->GetObjectCount() );
+ }
+
+ pGallery->ReleaseTheme( pGalTheme, aListener );
+
+ disposeGallery( pGallery );
+}
+
+static int PrintHelp()
+{
+ fprintf( stdout, "Utility to generate LibreOffice gallery files\n\n" );
+
+ fprintf( stdout, "using: gengal --name <name> --path <dir> [ --destdir <path> ]\n");
+ fprintf( stdout, " [ --number-from <num> ] [ files ... ]\n\n" );
+
+ fprintf( stdout, "options:\n");
+ fprintf( stdout, " --name <theme>\t\tdefines the user visible name of the created or updated theme.\n");
+ fprintf( stdout, " --path <dir>\t\tdefines directory where the gallery files are created\n");
+ fprintf( stdout, "\t\t\tor updated.\n");
+ fprintf( stdout, " --destdir <dir>\tdefines a path prefix to be removed from the paths\n");
+ fprintf( stdout, "\t\t\tstored in the gallery files. It is useful to create\n");
+ fprintf( stdout, "\t\t\tRPM packages using the BuildRoot feature.\n");
+ fprintf( stdout, " --number-from <num>\tdefines minimal number for the newly created gallery\n");
+ fprintf( stdout, "\t\t\ttheme files.\n");
+ fprintf( stdout, " files\t\t\tlists files to be added to the gallery. Absolute paths\n");
+ fprintf( stdout, "\t\t\tare required.\n");
+
+ return EXIT_SUCCESS;
+}
+
+static OUString Smartify( const OUString &rPath )
+{
+ INetURLObject aURL;
+ aURL.SetSmartURL( rPath );
+ return aURL.GetMainURL( INetURLObject::NO_DECODE );
+}
+
+void GalApp::Init()
+{
+ if( getenv( "OOO_INSTALL_PREFIX" ) == NULL ) {
+ OUString fileName = GetAppFileName();
+ int lastSlash = fileName.lastIndexOf( '/' );
+#ifdef WNT
+ // Don't know which directory separators GetAppFileName() returns on Windows.
+ // Be safe and take into consideration they might be backslashes.
+ if( fileName.lastIndexOf( '\\' ) > lastSlash )
+ lastSlash = fileName.lastIndexOf( '\\' );
+#endif
+ OUString baseBinDir = fileName.copy( 0, lastSlash );
+ OUString installPrefix = baseBinDir + OUString::createFromAscii( "/../.." );
+ OUString assignment = OUString( "OOO_INSTALL_PREFIX=" ) + installPrefix;
+
+ OUString envVar( "OOO_INSTALL_PREFIX");
+ osl_setEnvironment(envVar.pData, installPrefix.pData);
+ }
+ OSL_TRACE( "OOO_INSTALL_PREFIX=%s", getenv( "OOO_INSTALL_PREFIX" ) );
+
+ uno::Reference<uno::XComponentContext> xComponentContext
+ = ::cppu::defaultBootstrap_InitialComponentContext();
+ xMSF = uno::Reference<lang::XMultiServiceFactory>
+ ( xComponentContext->getServiceManager(), uno::UNO_QUERY );
+ if( !xMSF.is() )
+ {
+ fprintf( stderr, "Failed to bootstrap\n" );
+ exit( 1 );
+ }
+ ::comphelper::setProcessServiceFactory( xMSF );
+
+ // For backwards compatibility, in case some code still uses plain
+ // createInstance w/o args directly to obtain an instance:
+ com::sun::star::ucb::UniversalContentBroker::create(xComponentContext);
+}
+
+int GalApp::Main()
+{
+ OUString aPath, aDestDir;
+ OUString aName( "Default name" );
+ sal_uInt32 nNumFrom = 0;
+ FileNameList aFiles;
+
+ for( sal_uInt32 i = 0; i < GetCommandLineParamCount(); i++ )
+ {
+ OUString aParam = GetCommandLineParam( i );
+
+ if ( aParam.startsWith( "-env:" ) )
+ continue;
+ else if ( aParam == "--help" || aParam == "-h" )
+ return PrintHelp();
+ else if ( aParam == "--name" )
+ aName = GetCommandLineParam( ++i );
+ else if ( aParam == "--path" )
+ aPath = Smartify( GetCommandLineParam( ++i ) );
+ else if ( aParam == "--destdir" )
+ aDestDir = GetCommandLineParam( ++i );
+ else if ( aParam == "--number-from" )
+ nNumFrom = GetCommandLineParam( ++i ).ToInt32();
+ else
+ aFiles.push_back( Smartify( aParam ) );
+ }
+
+ if( aFiles.size() < 1 )
+ return PrintHelp();
+
+ createTheme( aName, aPath, aDestDir, nNumFrom, aFiles );
+
+ // Without this we get extraordinary crashes from the
+ // drawinglayer VirtualDevice cache when importing svg
+ uno::Reference< lang::XComponent >(
+ comphelper::getProcessComponentContext(),
+ uno::UNO_QUERY_THROW )-> dispose();
+ ::comphelper::setProcessServiceFactory( NULL );
+
+ return EXIT_SUCCESS;
+}
+
+void vclmain::createApplication()
+{
+ static GalApp aGalApp;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/gengal/gengal.sh b/svx/source/gengal/gengal.sh
new file mode 100644
index 000000000000..0ac61cf819ee
--- /dev/null
+++ b/svx/source/gengal/gengal.sh
@@ -0,0 +1,97 @@
+#!/bin/sh
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+
+# enable file locking
+SAL_ENABLE_FILE_LOCKING=1
+export SAL_ENABLE_FILE_LOCKING
+
+# resolve installation directory
+sd_cwd=`pwd`
+sd_res=$0
+while [ -h "$sd_res" ] ; do
+ cd "`dirname "$sd_res"`"
+ sd_basename=`basename "$sd_res"`
+ sd_res=`ls -l "$sd_basename" | sed "s/.*$sd_basename -> //g"`
+done
+cd "`dirname "$sd_res"`"
+sd_prog=`pwd`
+cd "$sd_cwd"
+
+# this is a temporary hack until we can live with the default search paths
+case "`uname -s`" in
+NetBSD|OpenBSD|FreeBSD|DragonFly)
+ sd_prog1="$sd_prog"
+ sd_prog2="$sd_prog/../ure-link/lib"
+ LD_LIBRARY_PATH=$sd_prog1:$sd_prog2${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+ JAVA_HOME=$(javaPathHelper -h libreoffice-java 2> /dev/null)
+ export LD_LIBRARY_PATH
+ if [ -n "${JAVA_HOME}" ]; then
+ export JAVA_HOME
+ fi
+ ;;
+AIX)
+ sd_prog1="$sd_prog"
+ sd_prog2="$sd_prog/../ure-link/lib"
+ LIBPATH=$sd_prog1:$sd_prog2${LIBPATH:+:${LIBPATH}}
+ export LIBPATH
+ ;;
+esac
+
+#collect all bootstrap variables specified on the command line
+#so that they can be passed as arguments to javaldx later on
+for arg in $@
+do
+ case "$arg" in
+ -env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";;
+ -v) VERBOSE=true;;
+ --verbose) VERBOSE=true;;
+ esac
+done
+
+# extend the ld_library_path for java: javaldx checks the sofficerc for us
+if [ -x "$sd_prog/../ure-link/bin/javaldx" ] ; then
+ my_path=`"$sd_prog/../ure-link/bin/javaldx" $BOOTSTRAPVARS \
+ "-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"`
+ if [ -n "$my_path" ] ; then
+ sd_platform=`uname -s`
+ case $sd_platform in
+ AIX)
+ LIBPATH=$my_path${LIBPATH:+:$LIBPATH}
+ export LIBPATH
+ ;;
+ *)
+ LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+ export LD_LIBRARY_PATH
+ ;;
+ esac
+ fi
+fi
+
+unset XENVIRONMENT
+
+# uncomment line below to disable anti aliasing of fonts
+# SAL_ANTIALIAS_DISABLE=true; export SAL_ANTIALIAS_DISABLE
+
+# uncomment line below if you encounter problems starting soffice on your system
+# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
+
+# execute binary
+exec "$sd_prog/gengal.bin" "$@" \
+ "-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
+