summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--automation/source/testtool/objtest.cxx3
-rwxr-xr-xbin/lo-commit-stat77
-rw-r--r--comphelper/source/officeinstdir/officeinstallationdirectories.cxx18
-rwxr-xr-xconfigure.in44
-rw-r--r--default_images/sw/res/page-bottom-shadow-mask.pngbin181 -> 0 bytes
-rw-r--r--default_images/sw/res/page-bottomright-shadow-mask.pngbin208 -> 0 bytes
-rw-r--r--default_images/sw/res/page-right-shadow-mask.pngbin180 -> 0 bytes
-rw-r--r--default_images/sw/res/page-shadow-mask.pngbin0 -> 446 bytes
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/Resource.h0
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/makefile.mk0
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/rcfooter.txt0
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/rcheader.txt0
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/rctmpl.txt0
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/setup.cpp8
-rw-r--r--[-rwxr-xr-x]desktop/win32/source/setup/setup.ulf0
-rw-r--r--distro-configs/LibreOfficeLinux.conf3
-rw-r--r--distro-configs/LibreOfficeMacOSX.conf3
-rw-r--r--distro-configs/LibreOfficeWin32.conf3
-rw-r--r--distro-configs/LibreOfficeWin64.conf3
-rw-r--r--distro-configs/OxygenOfficeLinux.conf2
-rw-r--r--distro-configs/OxygenOfficeWin32.conf2
-rw-r--r--editeng/source/editeng/impedit3.cxx17
-rw-r--r--extensions/source/plugin/inc/plugin/unx/plugcon.hxx2
-rw-r--r--filter/source/config/tools/merge/FCFGMerge.cfg125
-rw-r--r--filter/source/graphicfilter/eps/eps.cxx12
-rw-r--r--filter/source/msfilter/msdffimp.cxx15
-rw-r--r--filter/source/msfilter/svdfppt.cxx23
-rw-r--r--framework/source/lomenubar/FrameHelper.cxx162
-rw-r--r--framework/source/lomenubar/FrameHelper.hxx51
-rw-r--r--framework/source/lomenubar/HACKING99
-rw-r--r--framework/source/lomenubar/Jobs.xcu34
-rw-r--r--framework/source/lomenubar/MenuItemStatusListener.cxx4
-rw-r--r--framework/source/lomenubar/MenuItemStatusListener.hxx2
-rw-r--r--framework/source/lomenubar/README15
-rw-r--r--i18nutil/source/utility/unicode.cxx5
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmpbin7106 -> 0 bytes
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmpbin52242 -> 0 bytes
-rw-r--r--instsetoo_native/util/makefile.mk24
-rw-r--r--instsetoo_native/util/openoffice.lst26
-rw-r--r--libwpd/libwpd.corruptedprefix.patch107
-rw-r--r--libwpd/libwpd.gcc460.patch11
-rw-r--r--libwpd/libwpd.warnings.patch32
-rw-r--r--libwpd/makefile.mk7
-rw-r--r--libwps/libwps-0.1.1.diff93
-rw-r--r--libwps/libwps-0.2.0.patch11
-rw-r--r--libwps/libwps-0.2.1-warnings.patch60
-rw-r--r--libwps/libwps-0.2.1.patch28
-rw-r--r--libwps/makefile.mk6
-rw-r--r--np_sdk/mozsrc/npapi.h3
-rw-r--r--ooo.lst.in4
-rw-r--r--oox/prj/build.lst2
-rwxr-xr-xpost_download.in2
-rw-r--r--sal/osl/unx/diagnose.c5
-rw-r--r--sc/Library_sc.mk1
-rw-r--r--sc/inc/document.hxx6
-rw-r--r--sc/inc/dpcachetable.hxx20
-rw-r--r--sc/inc/dpobject.hxx75
-rw-r--r--sc/inc/dpoutput.hxx10
-rw-r--r--sc/inc/dpsdbtab.hxx7
-rw-r--r--sc/inc/dpshttab.hxx4
-rw-r--r--sc/inc/dptabdat.hxx3
-rw-r--r--sc/inc/dptablecache.hxx46
-rw-r--r--sc/qa/unit/ucalc.cxx496
-rw-r--r--sc/source/core/data/dpcachetable.cxx72
-rw-r--r--sc/source/core/data/dpobject.cxx192
-rw-r--r--sc/source/core/data/dpoutput.cxx208
-rw-r--r--sc/source/core/data/dpsdbtab.cxx116
-rw-r--r--sc/source/core/data/dpshttab.cxx18
-rw-r--r--sc/source/core/data/dptablecache.cxx95
-rw-r--r--sc/source/core/data/scdpoutputimpl.cxx184
-rw-r--r--sc/source/core/data/scdpoutputimpl.hxx79
-rw-r--r--sc/source/filter/excel/excimp8.cxx64
-rw-r--r--sc/source/filter/excel/excrecds.cxx23
-rw-r--r--sc/source/filter/excel/xeformula.cxx8
-rw-r--r--sc/source/filter/excel/xename.cxx85
-rw-r--r--sc/source/filter/excel/xepivot.cxx2
-rw-r--r--sc/source/filter/excel/xiname.cxx2
-rw-r--r--sc/source/filter/excel/xipivot.cxx8
-rw-r--r--sc/source/filter/excel/xltools.cxx7
-rw-r--r--sc/source/filter/inc/excimp8.hxx15
-rw-r--r--sc/source/filter/inc/xltools.hxx5
-rw-r--r--sc/source/filter/xml/XMLExportDataPilot.cxx12
-rw-r--r--sc/source/filter/xml/xmlcelli.cxx2
-rw-r--r--sc/source/ui/attrdlg/scabstdlg.cxx3
-rw-r--r--sc/source/ui/cctrl/dpcontrol.cxx1
-rw-r--r--sc/source/ui/dbgui/dapidata.cxx2
-rw-r--r--sc/source/ui/docshell/docfunc.cxx15
-rw-r--r--sc/source/ui/docshell/impex.cxx2
-rw-r--r--sc/source/ui/vba/vbaworksheet.cxx55
-rw-r--r--sc/source/ui/vba/vbaworksheet.hxx2
-rw-r--r--sc/source/ui/view/dbfunc3.cxx42
-rw-r--r--scp2/source/writer/module_writer.scp1
-rw-r--r--sd/source/filter/eppt/epptso.cxx2
-rw-r--r--sd/source/filter/eppt/pptx-text.cxx8
-rw-r--r--sd/source/filter/ppt/propread.cxx9
-rw-r--r--sd/source/filter/sdfilter.cxx3
-rw-r--r--sd/source/ui/dlg/paragr.cxx14
-rw-r--r--sd/source/ui/dlg/sdabstdlg.cxx3
-rw-r--r--sd/source/ui/inc/paragr.hxx2
-rw-r--r--sd/source/ui/slideshow/slideshowviewimpl.cxx12
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx149
-rwxr-xr-xset_soenv.in24
-rw-r--r--setup_native/source/mac/ooo/DS_Storebin12556 -> 12292 bytes
-rw-r--r--setup_native/source/mac/ooo/DS_Store_Langpackbin12292 -> 12292 bytes
-rw-r--r--setup_native/source/packinfo/spellchecker_selection.txt148
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrar.cxx48
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx36
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx14
-rw-r--r--setup_native/source/win32/nsis/brobanner.bmpbin18150 -> 0 bytes
-rw-r--r--setup_native/source/win32/nsis/brobanner.svg667
-rw-r--r--setup_native/source/win32/nsis/brobitmap.bmpbin52242 -> 0 bytes
-rw-r--r--setup_native/source/win32/nsis/brobitmap.svg1011
-rw-r--r--setup_native/source/win32/nsis/brosdkbanner.bmpbin18150 -> 0 bytes
-rw-r--r--setup_native/source/win32/nsis/downloadtemplate.nsi20
-rw-r--r--sfx2/inc/sfx2/objsh.hxx3
-rw-r--r--sfx2/source/doc/doctemplates.cxx35
-rw-r--r--sfx2/source/doc/objstor.cxx24
-rwxr-xr-xsolenv/bin/ooinstall6
-rw-r--r--solenv/gbuild/CppunitTest.mk2
-rwxr-xr-xsolenv/gbuild/platform/openbsd.mk2
-rw-r--r--solenv/inc/langlist.mk37
-rw-r--r--solenv/inc/minor.mk4
-rw-r--r--solenv/inc/postset.mk107
-rw-r--r--solenv/inc/settings.mk16
-rw-r--r--svtools/inc/svtools/fileview.hxx4
-rw-r--r--svtools/source/contnr/fileview.cxx24
-rw-r--r--svtools/source/contnr/templwin.cxx12
-rw-r--r--svtools/source/control/tabbar.cxx1
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.cxx31
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.hxx3
-rw-r--r--svtools/source/filter.vcl/wmf/winwmf.cxx1
-rw-r--r--svx/AllLangResTarget_svx.mk2
-rw-r--r--svx/Package_inc.mk1
-rw-r--r--svx/source/svdraw/svdedxv.cxx3
-rwxr-xr-xsvx/util/svxcore.component8
-rw-r--r--sw/inc/rcid.hrc2
-rw-r--r--sw/source/core/doc/poolfmt.cxx2
-rw-r--r--sw/source/core/inc/frmtool.hxx2
-rw-r--r--sw/source/core/inc/pagefrm.hrc6
-rw-r--r--sw/source/core/inc/pagefrm.hxx46
-rw-r--r--sw/source/core/layout/layact.cxx83
-rw-r--r--sw/source/core/layout/pagechg.cxx5
-rw-r--r--sw/source/core/layout/pagefrm.src14
-rw-r--r--sw/source/core/layout/paintfrm.cxx219
-rw-r--r--sw/source/core/view/pagepreviewlayout.cxx3
-rw-r--r--sw/source/core/view/viewimp.cxx6
-rw-r--r--sw/source/core/view/viewsh.cxx32
-rw-r--r--sw/source/filter/basflt/fltini.cxx8
-rw-r--r--sw/source/ui/dialog/swabstdlg.cxx3
-rw-r--r--unoxml/source/dom/node.cxx3
-rw-r--r--vcl/inc/vcl/cursor.hxx10
-rw-r--r--vcl/source/gdi/outdevnative.cxx9
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx4
-rw-r--r--vcl/source/window/abstdlg.cxx3
-rw-r--r--vcl/source/window/cursor.cxx40
-rw-r--r--vcl/source/window/window.cxx4
-rw-r--r--wizards/source/importwizard/FilesModul.xba1
157 files changed, 2643 insertions, 3499 deletions
diff --git a/automation/source/testtool/objtest.cxx b/automation/source/testtool/objtest.cxx
index e08dd7c5faeb..63d8291b2310 100644
--- a/automation/source/testtool/objtest.cxx
+++ b/automation/source/testtool/objtest.cxx
@@ -2695,7 +2695,8 @@ void TestToolObj::DebugFindNoErrors( sal_Bool bDebugFindNoErrors )
SbxVariable* TestToolObj::Find( const String& aStr, SbxClassType aType)
{
- if ( BasicRuntimeAccess::IsRunInit() ) // wegen Find im "Global" Befehl des Basic
+ if ( BasicRuntimeAccess::IsRunInit()
+ || ( aStr == String( RTL_CONSTASCII_USTRINGPARAM( "ThisComponent" ) ) ) ) // wegen Find im "Global" Befehl des Basic
return NULL;
SbxVariableRef Old = SbxObject::Find(aStr, aType );
diff --git a/bin/lo-commit-stat b/bin/lo-commit-stat
index 51029fff25cd..8c53ec96fc85 100755
--- a/bin/lo-commit-stat
+++ b/bin/lo-commit-stat
@@ -67,9 +67,9 @@ sub standardize_summary($)
return $line;
}
-sub load_git_log($$$$)
+sub load_git_log($$$$$)
{
- my ($pdata, $repo_dir, $piece, $git_command) = @_;
+ my ($pdata, $repo_dir, $piece, $branch_name, $git_command) = @_;
my $cmd = "cd $repo_dir; $git_command";
my $commit_id;
@@ -77,6 +77,13 @@ sub load_git_log($$$$)
print STDERR "Analyzing log from the git repo: $piece...\n";
+ my $repo_branch_name = get_branch_name($repo_dir);
+ if ( $branch_name ne $repo_branch_name ) {
+ die "Error: mismatch of branches:\n" .
+ " main repo is on the branch: $branch_name\n" .
+ " $piece repo is on the branch: $repo_branch_name\n";
+ }
+
open (GIT, "$cmd 2>&1|") || die "Can't run $cmd: $!";
%{$pdata->{$piece}} = ();
@@ -144,9 +151,9 @@ sub get_repo_name($)
die "Error: can't find repo name in \"$$repo_dir/.git/config\"\n";
}
-sub load_data($$$$)
+sub load_data($$$$$)
{
- my ($pdata, $top_dir, $piece, $git_command) = @_;
+ my ($pdata, $top_dir, $piece, $branch_name, $git_command) = @_;
if (defined $piece) {
my $piece_dir;
@@ -155,11 +162,11 @@ sub load_data($$$$)
} else {
$piece_dir = "$top_dir/clone/$piece";
}
- load_git_log($pdata, $piece_dir, $piece, $git_command);
+ load_git_log($pdata, $piece_dir, $piece, $branch_name, $git_command);
} else {
- load_git_log($pdata, $top_dir, $main_repo, $git_command);
+ load_git_log($pdata, $top_dir, $main_repo, $branch_name, $git_command);
foreach my $piece (@pieces) {
- load_git_log($pdata, "$top_dir/clone/$piece", $piece, $git_command);
+ load_git_log($pdata, "$top_dir/clone/$piece", $piece, $branch_name, $git_command);
}
}
}
@@ -171,8 +178,6 @@ sub get_branch_name($)
my $branch;
my $cmd = "cd $top_dir && git branch";
- print STDERR "Analyzing git branch: ";
-
open (GIT, "$cmd 2>&1|") || die "Can't run $cmd: $!";
while (my $line = <GIT>) {
@@ -184,19 +189,16 @@ sub get_branch_name($)
}
close GIT;
-
- die "Error: did not detect git branch name\n" unless defined ($branch);
-
- print STDERR "$branch\n";
+
+ die "Error: did not detect git branch name in $top_dir\n" unless defined ($branch);
return $branch;
}
-sub open_log_file($$$)
+sub open_log_file($$$$)
{
- my ($log_prefix, $log_suffix, $top_dir) = @_;
+ my ($log_prefix, $log_suffix, $top_dir, $branch_name) = @_;
- my $branch_name = get_branch_name($top_dir);
my $logfilename = "$log_prefix-$branch_name-$log_suffix.log";
if (-f $logfilename) {
@@ -214,12 +216,12 @@ sub open_log_file($$$)
return $log;
}
-sub print_summary_in_stat($$$$$$$$)
+sub print_summary_in_stat($$$$$$$$$)
{
- my ($summary, $pprint_filters, $ppiece_title, $pflags, $pbugs, $pauthors, $prefix, $log) = @_;
+ my ($summary, $pprint_filters, $print_mode, $ppiece_title, $pflags, $pbugs, $pauthors, $prefix, $log) = @_;
return if ( $summary eq "" );
-
+
# do we want to print this summary at all?
my $print;
if (%{$pprint_filters}) {
@@ -232,7 +234,7 @@ sub print_summary_in_stat($$$$$$$$)
return unless (defined $print);
# print piece title if not done yet
- if (defined ${$ppiece_title}) {
+ if ( defined ${$ppiece_title} && $print_mode ne "bugnumbers" ) {
printf $log "${$ppiece_title}\n";
${$ppiece_title} = undef;
}
@@ -240,7 +242,11 @@ sub print_summary_in_stat($$$$$$$$)
# finally print the summary line
my $bugs = "";
if ( %{$pbugs} ) {
- $bugs = " (" . join (", ", keys %{$pbugs}) . ")";
+ if ( $print_mode eq "bugnumbers" ) {
+ $bugs = join ("\n", keys %{$pbugs}) . "\n";
+ } else {
+ $bugs = " (" . join (", ", keys %{$pbugs}) . ")";
+ }
}
my $authors = "";
@@ -248,12 +254,16 @@ sub print_summary_in_stat($$$$$$$$)
$authors = " [" . join (", ", keys %{$pauthors}) . "]";
}
- printf $log $prefix . $summary . $bugs . $authors . "\n";
+ if ( $print_mode eq "bugnumbers" ) {
+ printf $log $bugs;
+ } else {
+ printf $log $prefix . $summary . $bugs . $authors . "\n";
+ }
}
-sub print_stat($$$)
+sub print_stat($$$$)
{
- my ($pdata, $pprint_filters, $log) = @_;
+ my ($pdata, $pprint_filters, $print_mode, $log) = @_;
foreach my $piece ( sort { $a cmp $b } keys %{$pdata}) {
# check if this piece has any entries at all
@@ -266,7 +276,7 @@ sub print_stat($$$)
foreach my $id ( sort { $pdata->{$piece}{$a}{'summary'} cmp $pdata->{$piece}{$b}{'summary'} } keys %{$pdata->{$piece}}) {
my $summary = $pdata->{$piece}{$id}{'summary'};
if ($summary ne $old_summary) {
- print_summary_in_stat($old_summary, $pprint_filters, \$piece_title, \%flags, \%bugs, \%authors, " + ", $log);
+ print_summary_in_stat($old_summary, $pprint_filters, $print_mode, \$piece_title, \%flags, \%bugs, \%authors, " + ", $log);
$old_summary = $summary;
%authors = ();
%bugs = ();
@@ -286,7 +296,7 @@ sub print_stat($$$)
$flags{$flag} = 1;
}
}
- print_summary_in_stat($old_summary, $pprint_filters, \$piece_title, \%flags, \%bugs, \%authors, " + ", $log);
+ print_summary_in_stat($old_summary, $pprint_filters, $print_mode, \$piece_title, \%flags, \%bugs, \%authors, " + ", $log);
}
}
}
@@ -308,6 +318,7 @@ sub usage()
" commit-log-<branch>-<log-name-suffix>.log; the branch name\n" .
" is detected automatically\n" .
" --bugs print just bug fixes\n" .
+ " --bug-numbers print just fixed bug numbers\n" .
" --rev-list use \"git rev-list\" instead of \"git log\"; useful to check\n" .
" differences between branches\n" .
" topdir directory with the libreoffice/bootstrap clone; the piece repos\n" .
@@ -333,9 +344,11 @@ my $log_prefix = "commit-log";
my $log_suffix;
my $log;
my $git_command = "git log";
+my $branch_name;
my @git_args;
my %data;
my %print_filters = ();
+my $print_mode = "normal";
foreach my $arg (@ARGV) {
if ($arg eq '--help') {
@@ -350,6 +363,10 @@ foreach my $arg (@ARGV) {
} elsif ($arg eq '--bugs') {
$print_filters{'bug'} = 1;
$log_prefix = "bugfixes"
+ } elsif ($arg eq '--bug-numbers') {
+ $print_filters{'bug'} = 1;
+ $log_prefix = "bugnumbers";
+ $print_mode = "bugnumbers";
} elsif ($arg eq '--rev-list') {
$git_command = "git rev-list --pretty=medium"
} else {
@@ -369,8 +386,10 @@ $git_command .= " " . join ' ', @git_args if (@git_args);
(defined $log_suffix) || die "Error: define log suffix using --log-suffix=<string>\n";
-load_data(\%data, $top_dir,$piece, $git_command);
+$branch_name = get_branch_name($top_dir);
+
+load_data(\%data, $top_dir, $piece, $branch_name, $git_command);
-$log = open_log_file($log_prefix, $log_suffix, $top_dir);
-print_stat(\%data, \%print_filters, $log);
+$log = open_log_file($log_prefix, $log_suffix, $top_dir, $branch_name);
+print_stat(\%data, \%print_filters, $print_mode, $log);
close $log;
diff --git a/comphelper/source/officeinstdir/officeinstallationdirectories.cxx b/comphelper/source/officeinstdir/officeinstallationdirectories.cxx
index de636191b1aa..caff6185defb 100644
--- a/comphelper/source/officeinstdir/officeinstallationdirectories.cxx
+++ b/comphelper/source/officeinstdir/officeinstallationdirectories.cxx
@@ -162,9 +162,9 @@ OfficeInstallationDirectories::makeRelocatableURL( const rtl::OUString& URL )
if ( nIndex != -1 )
{
return rtl::OUString(
- URL.replaceAt( nIndex,
- m_pOfficeBrandDir->getLength(),
- m_aOfficeBrandDirMacro ) );
+ aCanonicalURL.replaceAt( nIndex,
+ m_pOfficeBrandDir->getLength(),
+ m_aOfficeBrandDirMacro ) );
}
else
{
@@ -172,9 +172,9 @@ OfficeInstallationDirectories::makeRelocatableURL( const rtl::OUString& URL )
if ( nIndex != -1 )
{
return rtl::OUString(
- URL.replaceAt( nIndex,
- m_pOfficeBaseDir->getLength(),
- m_aOfficeBaseDirMacro ) );
+ aCanonicalURL.replaceAt( nIndex,
+ m_pOfficeBaseDir->getLength(),
+ m_aOfficeBaseDirMacro ) );
}
else
{
@@ -182,9 +182,9 @@ OfficeInstallationDirectories::makeRelocatableURL( const rtl::OUString& URL )
if ( nIndex != -1 )
{
return rtl::OUString(
- URL.replaceAt( nIndex,
- m_pUserDir->getLength(),
- m_aUserDirMacro ) );
+ aCanonicalURL.replaceAt( nIndex,
+ m_pUserDir->getLength(),
+ m_aUserDirMacro ) );
}
}
}
diff --git a/configure.in b/configure.in
index 8624333bf2e2..895d43be5451 100755
--- a/configure.in
+++ b/configure.in
@@ -1,7 +1,7 @@
dnl configure.in serves as input for the GNU autoconf package
dnl in order to create a configure script.
-AC_INIT([LibreOffice], [3.3],,, [http://documentfoundation.org/])
+AC_INIT([LibreOffice], [3.4],,, [http://documentfoundation.org/])
AC_PREREQ(2.50)
echo "$@" >config.parms
@@ -472,6 +472,11 @@ AC_ARG_ENABLE(extra-font,
[Add extra font content.]),
,)
+AC_ARG_ENABLE(lomenubar,
+ AS_HELP_STRING([--enable-lomenubar],
+ [Enable global menu support.]),
+,)
+
dnl ===================================================================
dnl Optional Packages (--with/without-)
dnl ===================================================================
@@ -1176,15 +1181,6 @@ AC_ARG_WITH(lang,
],
,)
-AC_ARG_WITH(poor-help-localizations,
- AS_HELP_STRING([--with-poor-help-localizations],
- [Use this option to specify which languages have unusable help localizations.
- Separate multiple languages with space.])
- [
- Usage: --with-poor-help-localizations="af be"
- ],
-,)
-
AC_ARG_WITH(intro-bitmap,
[ --with-intro-bitmap Prefer the specified intro bitmap over the
the default one.
@@ -1212,7 +1208,7 @@ AC_ARG_WITH(install-dirname,
[Specify the directory name of the core LibO install dir. The final
installation path is defined by <libdir>/<install-dirname>.
The default value is "libreoffice" and the default installation
- patch is /usr/lib/libreoffice.
+ path is /usr/lib/libreoffice.
FIXME: It affects only the installation by "make install" and not the
generated installation sets.])
@@ -7449,6 +7445,19 @@ AC_SUBST(WITH_EXTRA_FONT)
AC_SUBST(OOOP_FONTS_PACK)
dnl ===================================================================
+dnl Test whether to build global menu support
+dnl ===================================================================
+AC_MSG_CHECKING([whether to build global menu support])
+if test "z$enable_lomenubar" = "z" -o "z$enable_lomenubar" = "zno" ; then
+ AC_MSG_RESULT([no])
+ ENABLE_LOMENUBAR="FALSE"
+else
+ AC_MSG_RESULT([yes])
+ ENABLE_LOMENUBAR="TRUE"
+fi
+AC_SUBST(ENABLE_LOMENUBAR)
+
+dnl ===================================================================
dnl Test whether to enable ActiveX embedding
dnl ===================================================================
if test "$_os" = "WINNT"; then
@@ -7758,14 +7767,14 @@ dnl ===================================================================
GIT_REPO_NAMES="artwork base calc components extensions extras filters help impress libs-core libs-extern libs-extern-sys libs-gui postprocess sdk testing ure writer"
AC_MSG_CHECKING([which languages to be built])
# get list of all languages
-# generate shell variable from completelangiso= from solenv/inc/postset.mk
+# generate shell variable from completelangiso= from solenv/inc/langlist.mk
# the sed command does the following:
# + if a line ends with a backslash, append the next line to it
# + adds " on the beginning of the value (after =)
# + adds " at the end of the value
# + removes en-US; we want to put it on the beginning
# + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
-[eval $(sed -e :a -e '/\\$/N; s/\\\n//; ta' -n -e 's/=/="/;s/\([^\\]\)$/\1"/;s/en-US//;/^completelangiso/p' solenv/inc/postset.mk)]
+[eval $(sed -e :a -e '/\\$/N; s/\\\n//; ta' -n -e 's/=/="/;s/\([^\\]\)$/\1"/;s/en-US//;/^completelangiso/p' solenv/inc/langlist.mk)]
ALL_LANGS="en-US $completelangiso"
# check the configured localizations
WITH_LANG="$with_lang"
@@ -7788,15 +7797,6 @@ AC_SUBST(ALL_LANGS)
AC_SUBST(WITH_LANG)
AC_SUBST(GIT_REPO_NAMES)
-AC_MSG_CHECKING([which languages have poor help localizations])
-WITH_POOR_HELP_LOCALIZATIONS="$with_poor_help_localizations"
-if test -z "$WITH_POOR_HELP_LOCALIZATIONS"; then
- AC_MSG_RESULT([none])
-else
- AC_MSG_RESULT([$WITH_POOR_HELP_LOCALIZATIONS])
-fi
-AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
-
AC_MSG_CHECKING([for another 'intro' bitmap])
INTRO_BITMAP=
if test -z "$with_intro_bitmap" -o "$with_intro_bitmap" = "no" ; then
diff --git a/default_images/sw/res/page-bottom-shadow-mask.png b/default_images/sw/res/page-bottom-shadow-mask.png
deleted file mode 100644
index fd19f034bb0f..000000000000
--- a/default_images/sw/res/page-bottom-shadow-mask.png
+++ /dev/null
Binary files differ
diff --git a/default_images/sw/res/page-bottomright-shadow-mask.png b/default_images/sw/res/page-bottomright-shadow-mask.png
deleted file mode 100644
index 94f32290092a..000000000000
--- a/default_images/sw/res/page-bottomright-shadow-mask.png
+++ /dev/null
Binary files differ
diff --git a/default_images/sw/res/page-right-shadow-mask.png b/default_images/sw/res/page-right-shadow-mask.png
deleted file mode 100644
index 784e00f37afc..000000000000
--- a/default_images/sw/res/page-right-shadow-mask.png
+++ /dev/null
Binary files differ
diff --git a/default_images/sw/res/page-shadow-mask.png b/default_images/sw/res/page-shadow-mask.png
new file mode 100644
index 000000000000..5ffb7d934f09
--- /dev/null
+++ b/default_images/sw/res/page-shadow-mask.png
Binary files differ
diff --git a/desktop/win32/source/setup/Resource.h b/desktop/win32/source/setup/Resource.h
index 600056d0a8ee..600056d0a8ee 100755..100644
--- a/desktop/win32/source/setup/Resource.h
+++ b/desktop/win32/source/setup/Resource.h
diff --git a/desktop/win32/source/setup/makefile.mk b/desktop/win32/source/setup/makefile.mk
index f0c6e0e955fd..f0c6e0e955fd 100755..100644
--- a/desktop/win32/source/setup/makefile.mk
+++ b/desktop/win32/source/setup/makefile.mk
diff --git a/desktop/win32/source/setup/rcfooter.txt b/desktop/win32/source/setup/rcfooter.txt
index 3237729437f5..3237729437f5 100755..100644
--- a/desktop/win32/source/setup/rcfooter.txt
+++ b/desktop/win32/source/setup/rcfooter.txt
diff --git a/desktop/win32/source/setup/rcheader.txt b/desktop/win32/source/setup/rcheader.txt
index 9a59ad7f6477..9a59ad7f6477 100755..100644
--- a/desktop/win32/source/setup/rcheader.txt
+++ b/desktop/win32/source/setup/rcheader.txt
diff --git a/desktop/win32/source/setup/rctmpl.txt b/desktop/win32/source/setup/rctmpl.txt
index 59f454f70c16..59f454f70c16 100755..100644
--- a/desktop/win32/source/setup/rctmpl.txt
+++ b/desktop/win32/source/setup/rctmpl.txt
diff --git a/desktop/win32/source/setup/setup.cpp b/desktop/win32/source/setup/setup.cpp
index 35335f9c5435..52746837646c 100755..100644
--- a/desktop/win32/source/setup/setup.cpp
+++ b/desktop/win32/source/setup/setup.cpp
@@ -87,8 +87,8 @@
#define RUNTIME_X64_NAME TEXT( "redist\\vcredist_x64.exe" )
#define RUNTIME_X86_NAME TEXT( "redist\\vcredist_x86.exe" )
-#define PRODUCTCODE_X86 TEXT( "{E503B4BF-F7BB-3D5F-8BC8-F694B1CFF942}" )
-#define PRODUCTCODE_X64 TEXT( "{350AA351-21FA-3270-8B7A-835434E766AD}" )
+#define PRODUCTCODE_X86 TEXT( "{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}" )
+#define PRODUCTCODE_X64 TEXT( "{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}" )
#define MSIAPI_DllGetVersion "DllGetVersion"
#define ADVAPI32API_CheckTokenMembership "CheckTokenMembership"
@@ -835,10 +835,10 @@ boolean SetupAppX::LaunchInstaller( LPCTSTR pParam )
PROCESS_INFORMATION aPI;
Log( TEXT( " Will install using <%s>\r\n" ), sMsiPath );
- Log( TEXT( " Prameters are: %s\r\n" ), pParam );
+ Log( TEXT( " Parameters are: %s\r\n" ), pParam );
OutputDebugStringFormat( TEXT( " Will install using <%s>\r\n" ), sMsiPath );
- OutputDebugStringFormat( TEXT( " Prameters are: %s\r\n" ), pParam );
+ OutputDebugStringFormat( TEXT( " Parameters are: %s\r\n" ), pParam );
ZeroMemory( (void*)&aPI, sizeof( PROCESS_INFORMATION ) );
ZeroMemory( (void*)&aSUI, sizeof( STARTUPINFO ) );
diff --git a/desktop/win32/source/setup/setup.ulf b/desktop/win32/source/setup/setup.ulf
index 85d43f43aa55..85d43f43aa55 100755..100644
--- a/desktop/win32/source/setup/setup.ulf
+++ b/desktop/win32/source/setup/setup.ulf
diff --git a/distro-configs/LibreOfficeLinux.conf b/distro-configs/LibreOfficeLinux.conf
index 4a5960795ef5..3a0ba885b044 100644
--- a/distro-configs/LibreOfficeLinux.conf
+++ b/distro-configs/LibreOfficeLinux.conf
@@ -35,6 +35,9 @@
--enable-ext-presenter-minimizer
--enable-ext-presenter-console
--enable-ext-pdfimport
+--enable-ext-scripting-beanshell
+--enable-ext-scripting-javascript
+--enable-ext-scripting-python
--enable-epm
--enable-cairo
--enable-binfilter
diff --git a/distro-configs/LibreOfficeMacOSX.conf b/distro-configs/LibreOfficeMacOSX.conf
index 207a715eee10..28f49fa3838c 100644
--- a/distro-configs/LibreOfficeMacOSX.conf
+++ b/distro-configs/LibreOfficeMacOSX.conf
@@ -9,4 +9,7 @@
--enable-ext-pdfimport
--enable-ext-wiki-publisher
--enable-ext-report-builder
+--enable-ext-scripting-beanshell
+--enable-ext-scripting-javascript
+--enable-ext-scripting-python
--with-extension-integration
diff --git a/distro-configs/LibreOfficeWin32.conf b/distro-configs/LibreOfficeWin32.conf
index 050bb7caa088..257ce7097d9a 100644
--- a/distro-configs/LibreOfficeWin32.conf
+++ b/distro-configs/LibreOfficeWin32.conf
@@ -7,3 +7,6 @@
--with-java-target-version=1.5
--disable-xrender-link
--disable-activex-component
+--enable-ext-scripting-beanshell
+--enable-ext-scripting-javascript
+--enable-ext-scripting-python
diff --git a/distro-configs/LibreOfficeWin64.conf b/distro-configs/LibreOfficeWin64.conf
index 1a9ce954f2ab..889237f03326 100644
--- a/distro-configs/LibreOfficeWin64.conf
+++ b/distro-configs/LibreOfficeWin64.conf
@@ -4,3 +4,6 @@
--enable-cl-x64
--disable-xrender-link
--disable-activex-component
+--enable-ext-scripting-beanshell
+--enable-ext-scripting-javascript
+--enable-ext-scripting-python
diff --git a/distro-configs/OxygenOfficeLinux.conf b/distro-configs/OxygenOfficeLinux.conf
index f63faba2d506..d2050eb0009d 100644
--- a/distro-configs/OxygenOfficeLinux.conf
+++ b/distro-configs/OxygenOfficeLinux.conf
@@ -21,7 +21,7 @@
--enable-extra-template
--enable-extra-sample
--enable-extra-font
---with-lang=en-US hu de fr it tr ka fi pl nl pt-BR es ja zh-CN sv cs-CZ ko sl
+--with-lang=en-US hu de fr it tr ka fi pl nl pt-BR es ja zh-CN sv cs ko sl
--enable-opengl
--enable-dbus
--enable-gnome-vfs
diff --git a/distro-configs/OxygenOfficeWin32.conf b/distro-configs/OxygenOfficeWin32.conf
index 9f2429713eee..45927e0dd351 100644
--- a/distro-configs/OxygenOfficeWin32.conf
+++ b/distro-configs/OxygenOfficeWin32.conf
@@ -10,7 +10,7 @@
--enable-extra-template
--enable-extra-sample
--enable-extra-font
---with-lang=hu de fr it tr ka fi pl nl pt-BR es ja zh-CN sv cs-CZ ko sl
+--with-lang=hu de fr it tr ka fi pl nl pt-BR es ja zh-CN sv cs ko sl
--with-extension-integration
--enable-ext-wiki-publisher
--enable-ext-report-builder
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index f6af728d0e66..1a4052799b6e 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -934,7 +934,7 @@ sal_Bool ImpEditEngine::CreateLines( sal_uInt16 nPara, sal_uInt32 nStartPosY )
long nCurPos = nTmpWidth+nStartX;
// consider scaling
if ( aStatus.DoStretch() && ( nStretchX != 100 ) )
- nCurPos = nCurPos*100/nStretchX;
+ nCurPos = nCurPos*100/std::max(static_cast<sal_Int32>(nStretchX), static_cast<sal_Int32>(1));
short nAllSpaceBeforeText = static_cast< short >(rLRItem.GetTxtLeft()/* + rLRItem.GetTxtLeft()*/ + nSpaceBeforeAndMinLabelWidth);
aCurrentTab.aTabStop = pNode->GetContentAttribs().FindTabStop( nCurPos - nAllSpaceBeforeText /*rLRItem.GetTxtLeft()*/, aEditDoc.GetDefTab() );
@@ -1308,6 +1308,13 @@ sal_Bool ImpEditEngine::CreateLines( sal_uInt16 nPara, sal_uInt32 nStartPosY )
pLine->SetHeight( nMinHeight, nTxtHeight );
}
}
+ else if ( rLSItem.GetLineSpaceRule() == SVX_LINE_SPACE_FIX )
+ {
+ sal_uInt16 nFixHeight = GetYValue( rLSItem.GetLineHeight() );
+ sal_uInt16 nTxtHeight = pLine->GetHeight();
+ pLine->SetMaxAscent( (sal_uInt16)(pLine->GetMaxAscent() + ( nFixHeight - nTxtHeight ) ) );
+ pLine->SetHeight( nFixHeight, nTxtHeight );
+ }
else if ( rLSItem.GetInterLineSpaceRule() == SVX_INTER_LINE_SPACE_PROP )
{
if ( nPara || IsFixedCellHeight() || pLine->GetStartPortion() ) // Not the very first line
@@ -1636,6 +1643,14 @@ void ImpEditEngine::CreateAndInsertEmptyLine( ParaPortion* pParaPortion, sal_uIn
pTmpLine->SetHeight( nMinHeight, nTxtHeight );
}
}
+ else if ( rLSItem.GetLineSpaceRule() == SVX_LINE_SPACE_FIX )
+ {
+ sal_uInt16 nFixHeight = rLSItem.GetLineHeight();
+ sal_uInt16 nTxtHeight = pTmpLine->GetHeight();
+
+ pTmpLine->SetMaxAscent( (sal_uInt16)(pTmpLine->GetMaxAscent() + ( nFixHeight - nTxtHeight ) ) );
+ pTmpLine->SetHeight( nFixHeight, nTxtHeight );
+ }
else if ( rLSItem.GetInterLineSpaceRule() == SVX_INTER_LINE_SPACE_PROP )
{
sal_uInt16 nPara = GetParaPortions().GetPos( pParaPortion );
diff --git a/extensions/source/plugin/inc/plugin/unx/plugcon.hxx b/extensions/source/plugin/inc/plugin/unx/plugcon.hxx
index 2b8bf4f7a89d..cada23a0f448 100644
--- a/extensions/source/plugin/inc/plugin/unx/plugcon.hxx
+++ b/extensions/source/plugin/inc/plugin/unx/plugcon.hxx
@@ -98,7 +98,7 @@ extern "C" {
# endif
#endif
-#ifndef _NPAPI_H_
+#if ! defined ( _NPAPI_H_) && ! defined (npapi_h_)
extern "C" {
#include <npsdk/npupp.h>
}
diff --git a/filter/source/config/tools/merge/FCFGMerge.cfg b/filter/source/config/tools/merge/FCFGMerge.cfg
new file mode 100644
index 000000000000..7e71e9c12309
--- /dev/null
+++ b/filter/source/config/tools/merge/FCFGMerge.cfg
@@ -0,0 +1,125 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: FCFGMerge.cfg,v $
+#
+# $Revision: 1.5 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+#************************************************
+# Specify the verbose mode of this tool.
+# 1 = show errors only
+# 2 = show errors/warnings (default)
+# 3 = show errors/warnings and some generic infos
+# 4 = show anything (including detailed infos)
+#
+# [OPTIONAL]
+#************************************************
+
+loglevel = 2
+
+#************************************************
+# This extension is used for all XML files. It doesnt
+# matter if its used for reading fragments or writing
+# XML packages.
+# Must be given without any additional signes like "."
+# or "*."!
+#
+# [REQUIRED]
+#************************************************
+
+extension_xcu=xcu
+
+#************************************************
+# This extension is used for all Package files. It doesnt
+# matter if its used for reading such files or writing
+# it.
+# Must be given without any additional signes like "."
+# or "*."!
+#
+# [REQUIRED]
+#************************************************
+
+extension_pkg=pkg
+
+#************************************************
+# These values are used to generate a correct XML
+# header.
+# Note: The property "xmlpackage" must be specified
+# via command line. There exists more then one
+# possible value.
+#
+# [REQUIRED]
+#************************************************
+
+xmlversion = 1.0
+xmlencoding = UTF-8
+xmlpath = org.openoffice.TypeDetection
+#xmlpackage =
+
+#************************************************
+# These values are used to name the configuration
+# sets inside the generated XCM file for different
+# item groups like e.g. types, filters etcpp.
+#
+# [REQUIRED]
+#************************************************
+
+setname_types = Types
+setname_filters = Filters
+setname_frameloaders = FrameLoaders
+setname_contenthandlers = ContentHandlers
+
+subdir_types = types
+subdir_filters = filters
+subdir_frameloaders = frameloaders
+subdir_contenthandlers = contenthandlers
+
+#************************************************
+# This delimiter is used to split every
+# item list of the package configuration files
+# (which are temp. created by the make proccess)
+# into its tokens.
+#
+# [REQUIRED]
+#************************************************
+delimiter=,
+
+#************************************************
+# Enable/disable removing of leading/trailing withespaces
+# during splitting stringlists.
+#
+# [REQUIRED]
+#************************************************
+trim=true
+
+#************************************************
+# Enable/disable removing of leading/trailing "-signs
+# during splitting stringlists.
+#
+# [REQUIRED]
+#************************************************
+decode=false
diff --git a/filter/source/graphicfilter/eps/eps.cxx b/filter/source/graphicfilter/eps/eps.cxx
index c3c1a913baca..854bb3a99bfc 100644
--- a/filter/source/graphicfilter/eps/eps.cxx
+++ b/filter/source/graphicfilter/eps/eps.cxx
@@ -295,7 +295,11 @@ sal_Bool PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, Fi
// default values for the dialog options
mnLevel = 2;
mbGrayScale = sal_False;
+#ifdef UNX // don't compress by default on unix as ghostscript is unable to read LZW compressed eps
+ mbCompression = sal_False;
+#else
mbCompression = sal_True;
+#endif
mnTextMode = 0; // default0 : export glyph outlines
// try to get the dialog selection
@@ -312,12 +316,20 @@ sal_Bool PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, Fi
String aVersionStr( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
String aColorStr( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
String aComprStr( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
+#ifdef UNX // don't put binary tiff preview ahead of postscript code by default on unix as ghostscript is unable to read it
+ mnPreview = pFilterConfigItem->ReadInt32( aPreviewStr, 0 );
+#else
mnPreview = pFilterConfigItem->ReadInt32( aPreviewStr, 1 );
+#endif
mnLevel = pFilterConfigItem->ReadInt32( aVersionStr, 2 );
if ( mnLevel != 1 )
mnLevel = 2;
mbGrayScale = pFilterConfigItem->ReadInt32( aColorStr, 1 ) == 2;
+#ifdef UNX // don't compress by default on unix as ghostscript is unable to read LZW compressed eps
+ mbCompression = pFilterConfigItem->ReadInt32( aComprStr, 0 ) != 0;
+#else
mbCompression = pFilterConfigItem->ReadInt32( aComprStr, 1 ) == 1;
+#endif
String sTextMode( RTL_CONSTASCII_USTRINGPARAM( "TextMode" ) );
mnTextMode = pFilterConfigItem->ReadInt32( sTextMode, 0 );
if ( mnTextMode > 2 )
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 014569241fc8..d9bf8632abe9 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -4046,18 +4046,25 @@ bool SvxMSDffManager::ReadObjText(SvStream& rSt, SdrObject* pObj) const
sal_uInt16 nLen = (sal_uInt16)aHd.nRecLen;
if(nLen)
{
+ sal_uInt32 nMask;
sal_uInt16 nVal1, nVal2, nVal3;
sal_uInt16 nDefaultTab = 2540; // PPT def: 1 Inch //rOutliner.GetDefTab();
sal_uInt16 nMostrightTab = 0;
SfxItemSet aSet(rOutliner.GetEmptyItemSet());
SvxTabStopItem aTabItem(0, 0, SVX_TAB_ADJUST_DEFAULT, EE_PARA_TABS);
- rSt >> nVal1;
- rSt >> nVal2;
+ rSt >> nMask;
nLen -= 4;
+ if(nLen && (nMask & 0x0002))
+ {
+ // number of indent levels
+ rSt >> nVal3;
+ nLen -= 2;
+ }
+
// Allg. TAB verstellt auf Wert in nVal3
- if(nLen && (nVal1 & 0x0001))
+ if(nLen && (nMask & 0x0001))
{
rSt >> nVal3;
nLen -= 2;
@@ -4065,7 +4072,7 @@ bool SvxMSDffManager::ReadObjText(SvStream& rSt, SdrObject* pObj) const
}
// Weitere, frei gesetzte TABs
- if(nLen && (nVal1 & 0x0004))
+ if(nLen && (nMask & 0x0004))
{
rSt >> nVal1;
nLen -= 2;
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 8e7b3d232010..474d11863c94 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -4499,6 +4499,10 @@ PPTTextRulerInterpreter::PPTTextRulerInterpreter( sal_uInt32 nFileOfs, SdrPowerP
sal_Int16 nTCount;
sal_Int32 i;
rIn >> mpImplRuler->nFlags;
+
+ // number of indent levels, unused now
+ if ( mpImplRuler->nFlags & 2 )
+ rIn >> nTCount;
if ( mpImplRuler->nFlags & 1 )
rIn >> mpImplRuler->nDefaultTab;
if ( mpImplRuler->nFlags & 4 )
@@ -4521,6 +4525,17 @@ PPTTextRulerInterpreter::PPTTextRulerInterpreter( sal_uInt32 nFileOfs, SdrPowerP
rIn >> mpImplRuler->nTextOfs[ i ];
if ( mpImplRuler->nFlags & ( 256 << i ) )
rIn >> mpImplRuler->nBulletOfs[ i ];
+ if( mpImplRuler->nBulletOfs[ i ] > 0x7fff) {
+ // workaround
+ // when bullet offset is > 0x7fff, the paragraph should look like
+ // * first line text
+ // second line text
+ //
+ // we add to bullet para indent 0xffff - bullet offset. it looks like
+ // best we can do for now
+ mpImplRuler->nTextOfs[ i ] += 0xffff - mpImplRuler->nBulletOfs[ i ];
+ mpImplRuler->nBulletOfs[ i ] = 0;
+ }
}
}
rIn.Seek( nOldPos );
@@ -4827,7 +4842,7 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport&
{
rIn >> aSet.mpArry[ PPT_ParaAttr_BulletHeight ];
if ( ! ( ( nMask & ( 1 << PPT_ParaAttr_BuHardHeight ) )
- && ( nBulFlg && ( 1 << PPT_ParaAttr_BuHardHeight ) ) ) )
+ && ( nBulFlg & ( 1 << PPT_ParaAttr_BuHardHeight ) ) ) )
aSet.mnAttrSet ^= 0x40;
}
if ( nMask & 0x0020 ) // buColor
@@ -6094,9 +6109,11 @@ void PPTParagraphObj::ApplyTo( SfxItemSet& rSet, boost::optional< sal_Int16 >&
}
rSet.Put( SdrTextFixedCellHeightItem( sal_True ), SDRATTR_TEXT_USEFIXEDCELLHEIGHT );
SvxLineSpacingItem aItem( 200, EE_PARA_SBL );
- if ( nVal2 <= 0 )
+ if ( nVal2 <= 0 ) {
aItem.SetLineHeight( (sal_uInt16)( rManager.ScalePoint( -nVal2 ) / 8 ) );
- else
+ aItem.GetLineSpaceRule() = SVX_LINE_SPACE_FIX;
+ aItem.GetInterLineSpaceRule() = SVX_INTER_LINE_SPACE_OFF;
+ } else
{
sal_uInt8 nPropLineSpace = (sal_uInt8)nVal2;
aItem.SetPropLineSpace( nPropLineSpace );
diff --git a/framework/source/lomenubar/FrameHelper.cxx b/framework/source/lomenubar/FrameHelper.cxx
index f1891793fa7a..7b749648d34c 100644
--- a/framework/source/lomenubar/FrameHelper.cxx
+++ b/framework/source/lomenubar/FrameHelper.cxx
@@ -26,6 +26,8 @@
#include "MenuItemInfo.hxx"
#include "MenuItemStatusListener.hxx"
+#include <boost/foreach.hpp>
+
#include <com/sun/star/awt/KeyEvent.hpp>
#include <com/sun/star/awt/SystemDependentXWindow.hpp>
#include <com/sun/star/awt/XSystemDependentWindowPeer.hpp>
@@ -113,6 +115,62 @@ using com::sun::star::ui::XModuleUIConfigurationManagerSupplier;
using com::sun::star::util::URL;
using com::sun::star::util::XURLTransformer;
+
+namespace
+{
+ static Sequence<Any> lcl_initArgs(const OUString& sModuleName, const Reference<XFrame> xFrame)
+ {
+ // These are the arguments needed for the XPopupMenuController
+ Sequence<Any> aResult(2);
+ PropertyValue item;
+
+ item.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("ModuleName"));
+ item.Value <<= sModuleName;
+ aResult[0] <<= item;
+
+ item.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("Frame"));
+ item.Value <<= xFrame;
+ aResult[1] <<= item;
+ return aResult;
+ };
+
+ struct DispatchConnection
+ {
+ Reference<XDispatch> m_xDispatch;
+ URL m_aUrl;
+ DispatchConnection(Reference<XDispatch> xDispatch, URL aUrl)
+ : m_xDispatch(xDispatch), m_aUrl(aUrl)
+ {}
+ };
+}
+
+namespace framework { namespace lomenubar
+{
+ class DispatchRegistry
+ {
+ private:
+ ::std::vector<DispatchConnection> m_vDispatchConnections;
+ const Reference<XStatusListener> m_xStatusListener;
+ public:
+ DispatchRegistry(const Reference<XStatusListener> xStatusListener)
+ : m_xStatusListener(xStatusListener)
+ {}
+ ~DispatchRegistry()
+ {
+ BOOST_FOREACH(const DispatchConnection& rConnection, m_vDispatchConnections)
+ {
+ rConnection.m_xDispatch->removeStatusListener(m_xStatusListener, rConnection.m_aUrl);
+ }
+ }
+ void Connect(Reference<XDispatch> xDispatch, URL aURL)
+ {
+ const DispatchConnection connection(xDispatch, aURL);
+ m_vDispatchConnections.push_back(connection);
+ xDispatch->addStatusListener(m_xStatusListener, aURL);
+ }
+ };
+}}
+
// ------------------------ Item callbacks ---------------------------
// Item activated. It distpatches the command associated to a given menu item.
void
@@ -131,9 +189,9 @@ item_about_to_show (DbusmenuMenuitem *item, gpointer user_data)
FrameHelper *helper = (FrameHelper*)user_data;
Reference < XFrame > xFrame = helper->getFrame ();
Reference< XPropertySet > frameProps (xFrame, UNO_QUERY);
- Reference < XLayoutManager > xLayoutManager(frameProps->getPropertyValue(OUString::createFromAscii("LayoutManager")),
+ Reference < XLayoutManager > xLayoutManager(frameProps->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("LayoutManager"))),
UNO_QUERY);
- Reference < XUIElement > menuBar(xLayoutManager->getElement (OUString::createFromAscii("private:resource/menubar/menubar")),
+ Reference < XUIElement > menuBar(xLayoutManager->getElement (OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/menubar/menubar"))),
UNO_QUERY);
Reference < XPropertySet > menuPropSet (menuBar, UNO_QUERY);
@@ -142,7 +200,7 @@ item_about_to_show (DbusmenuMenuitem *item, gpointer user_data)
return FALSE;
}
- Reference < XMenu > xMenu(menuPropSet->getPropertyValue(OUString::createFromAscii("XMenuBar")),
+ Reference < XMenu > xMenu(menuPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("XMenuBar"))),
UNO_QUERY);
if (!xMenu.is())
{
@@ -198,31 +256,30 @@ destroy_menu_item_info (gpointer data)
FrameHelper::FrameHelper(const Reference< XMultiServiceFactory >& rServiceManager,
const Reference< XFrame >& xFrame,
DbusmenuServer* server)
+ : m_xStatusListener(new MenuItemStatusListener(this))
+ , m_pDispatchRegistry(new framework::lomenubar::DispatchRegistry(m_xStatusListener))
+ , m_xMSF(rServiceManager)
+ , m_xTrans(m_xMSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.util.URLTransformer" ))), UNO_QUERY)
+ , m_xMM(m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.ModuleManager"))),UNO_QUERY)
+ , m_xPCF(m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.PopupMenuControllerFactory"))), UNO_QUERY)
+ , m_xFrame(xFrame)
+ , m_xdp(xFrame, UNO_QUERY)
+ , m_args(lcl_initArgs(m_xMM->identify(xFrame), xFrame))
+ , m_server(server)
+ , m_root(NULL)
+ , m_watcher_set(FALSE)
+ , m_blockDetach(FALSE)
{
- m_xMSF = rServiceManager;
- this->m_xFrame = xFrame;
- this->m_server = server;
//Get xUICommands database (to retrieve labels, see FrameJob::getLabelFromCommandURL ())
- Reference < XNameAccess > xNameAccess (m_xMSF->createInstance(OUString::createFromAscii("com.sun.star.frame.UICommandDescription")),
+ Reference < XNameAccess > xNameAccess (m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.UICommandDescription"))),
UNO_QUERY);
- m_xMM = Reference < XModuleManager> (m_xMSF->createInstance(OUString::createFromAscii("com.sun.star.frame.ModuleManager")),
- UNO_QUERY);
xNameAccess->getByName(m_xMM->identify(xFrame)) >>= m_xUICommands;
- m_xdp = Reference < XDispatchProvider > (xFrame, UNO_QUERY);
- m_xTrans = Reference < XURLTransformer > (m_xMSF->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )), UNO_QUERY);
-
- m_xSL = (XStatusListener*)new MenuItemStatusListener (this);
// This initializes the shortcut database
getAcceleratorConfigurations (xFrame->getController()->getModel (), m_xMM);
- // This information is needed for the dynamic submenus
- m_xPCF = Reference < XMultiComponentFactory > (m_xMSF->createInstance(OUString::createFromAscii("com.sun.star.frame.PopupMenuControllerFactory")),
- UNO_QUERY);
-
-
// This is a hash table that maps Command URLs to MenuItemInfo classes
// to cache command information
m_commandsInfo = g_hash_table_new_full (g_str_hash,
@@ -230,24 +287,6 @@ FrameHelper::FrameHelper(const Reference< XMultiServiceFactory >& rServiceManag
g_free,
destroy_menu_item_info);
- // These are the arguments needed for the XPopupMenuController
- m_args = Sequence < Any > (2);
- PropertyValue item;
-
- item.Name = OUString::createFromAscii("ModuleName");
- item.Value <<= m_xMM->identify (xFrame);
- m_args[0] <<= item;
-
- item.Name = OUString::createFromAscii("Frame");
- item.Value <<= xFrame;
- m_args[1] <<= item;
-
- m_root = NULL;
- m_watcher_set = FALSE;
-
- //This variable prevents the helper from being disconnected from the frame
- //for special cases of component dettaching like print preview
- m_blockDetach = FALSE;
}
void SAL_CALL
@@ -256,6 +295,7 @@ FrameHelper::disposing (const EventObject& /*aEvent*/ ) throw (RuntimeException)
FrameHelper::~FrameHelper()
{
+ ::boost::scoped_ptr< ::framework::lomenubar::DispatchRegistry>().swap(m_pDispatchRegistry);
if (m_server)
g_object_unref (m_server);
@@ -291,12 +331,6 @@ FrameHelper::getFrame ()
return m_xFrame;
}
-XStatusListener*
-FrameHelper::getStatusListener ()
-{
- return m_xSL;
-}
-
GHashTable*
FrameHelper::getCommandsInfo ()
{
@@ -343,9 +377,9 @@ FrameHelper::frameAction(const FrameActionEvent& action) throw (RuntimeException
m_xFrame->removeFrameActionListener (this);
Reference< XPropertySet > frameProps (m_xFrame, UNO_QUERY);
- Reference < XLayoutManager > xLayoutManager(frameProps->getPropertyValue(OUString::createFromAscii("LayoutManager")),
+ Reference < XLayoutManager > xLayoutManager(frameProps->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("LayoutManager"))),
UNO_QUERY);
- xLayoutManager->showElement (OUString::createFromAscii("private:resource/menubar/menubar"));
+ xLayoutManager->showElement (OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/menubar/menubar")));
unsigned long xid = getXID();
@@ -447,7 +481,7 @@ FrameHelper::rebuildMenu (Reference < XMenu > xMenu,
continue;
// We drop the WindowList, doesn't work properly and it's useless anyhow
- if (oUCommand.equals (OUString::createFromAscii (".uno:WindowList")))
+ if (oUCommand.equals (OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:WindowList"))))
continue;
//We set the default properties (in case it was not visible or a separator)
@@ -540,9 +574,9 @@ FrameHelper::rebuildMenu (Reference < XMenu > xMenu,
commandURL.Complete = oUCommand;
m_xTrans->parseStrict (commandURL);
- Reference < XDispatch > xDispatch = m_xdp->queryDispatch (commandURL, OUString(), 0);
- if (xDispatch.is())
- xDispatch->addStatusListener (m_xSL, commandURL);
+ Reference < XDispatch > xDispatch = m_xdp->queryDispatch (commandURL, OUString(), 0);
+ if(xDispatch.is())
+ m_pDispatchRegistry->Connect(xDispatch, commandURL);
Reference < XPopupMenu > subPopMenu (xMenu->getPopupMenu (id), UNO_QUERY);
@@ -551,7 +585,7 @@ FrameHelper::rebuildMenu (Reference < XMenu > xMenu,
if (isSpecialSubmenu (oUCommand))
{
Reference < XPropertySet > xMSFProps (m_xMSF, UNO_QUERY);
- Reference <XComponentContext> xContext (xMSFProps->getPropertyValue (OUString::createFromAscii ("DefaultContext")),
+ Reference <XComponentContext> xContext (xMSFProps->getPropertyValue (OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext"))),
UNO_QUERY);
Reference < XPopupMenuController > xRFC (m_xPCF->createInstanceWithArgumentsAndContext(oUCommand,
@@ -559,7 +593,7 @@ FrameHelper::rebuildMenu (Reference < XMenu > xMenu,
xContext),
UNO_QUERY);
- Reference < XPopupMenu > xPO (m_xMSF->createInstance(OUString::createFromAscii ("stardiv.Toolkit.VCLXPopupMenu")),
+ Reference < XPopupMenu > xPO (m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("stardiv.Toolkit.VCLXPopupMenu"))),
UNO_QUERY);
if (xRFC.is () && xPO.is ())
@@ -636,16 +670,16 @@ FrameHelper::rebuildMenuFromRoot ()
{
Reference < XFrame > xFrame = getFrame ();
Reference < XPropertySet > frameProps (xFrame, UNO_QUERY);
- Reference < XLayoutManager > xLayoutManager (frameProps->getPropertyValue(OUString::createFromAscii("LayoutManager")),
+ Reference < XLayoutManager > xLayoutManager (frameProps->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("LayoutManager"))),
UNO_QUERY);
- Reference < XUIElement > menuBar (xLayoutManager->getElement (OUString::createFromAscii("private:resource/menubar/menubar")),
+ Reference < XUIElement > menuBar (xLayoutManager->getElement (OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/menubar/menubar"))),
UNO_QUERY);
Reference < XPropertySet > menuPropSet (menuBar, UNO_QUERY);
if (!menuPropSet.is ())
return;
- Reference < XMenu > xMenu (menuPropSet->getPropertyValue(OUString::createFromAscii("XMenuBar")),
+ Reference < XMenu > xMenu (menuPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("XMenuBar"))),
UNO_QUERY);
if (!xMenu.is ())
return;
@@ -680,15 +714,13 @@ FrameHelper::isSpecialSubmenu (OUString command)
void
FrameHelper::dispatchCommand (OUString command)
{
- OUString target = OUString::createFromAscii ("");
+ OUString target = OUString(RTL_CONSTASCII_USTRINGPARAM(""));
Reference < XDispatchHelper > xdh (m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.DispatchHelper"))),
UNO_QUERY);
- //g_debug ("%s", OUStringToOString (command, RTL_TEXTENCODING_ASCII_US).getStr());
-
// This is a special case, we don't want the helper to be disconnected from the frame
// when PrintPreview dettaches. See the frameAction method.
- if (command.equals (OUString::createFromAscii (".uno:PrintPreview")))
+ if (command.equals (OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:PrintPreview"))))
{
m_blockDetach = TRUE;
}
@@ -696,18 +728,18 @@ FrameHelper::dispatchCommand (OUString command)
// This is a special case for the recentfilelist
if (command.matchAsciiL ("vnd.sun.star.popup:RecentFileList", 33, 0))
{
- target = OUString::createFromAscii ("_default");
+ target = OUString(RTL_CONSTASCII_USTRINGPARAM("_default"));
Reference < XPropertySet > xMSFProps (m_xMSF, UNO_QUERY);
- Reference <XComponentContext> xContext (xMSFProps->getPropertyValue (OUString::createFromAscii ("DefaultContext")),
+ Reference <XComponentContext> xContext (xMSFProps->getPropertyValue (OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext"))),
UNO_QUERY);
- Reference < XPopupMenuController > xRFC (m_xPCF->createInstanceWithArgumentsAndContext(OUString::createFromAscii (".uno:RecentFileList"),
+ Reference < XPopupMenuController > xRFC (m_xPCF->createInstanceWithArgumentsAndContext(OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:RecentFileList")),
m_args,
xContext),
UNO_QUERY);
Reference < XMenuListener > xML (xRFC, UNO_QUERY);
- Reference < XPopupMenu > xPO (m_xMSF->createInstance(OUString::createFromAscii ("stardiv.Toolkit.VCLXPopupMenu")),
+ Reference < XPopupMenu > xPO (m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("stardiv.Toolkit.VCLXPopupMenu"))),
UNO_QUERY);
if (xRFC.is () && xPO.is ())
@@ -736,7 +768,7 @@ FrameHelper::dispatchCommand (OUString command)
}
if (command.matchAsciiL ("private:factory/", 16, 0))
- target = OUString::createFromAscii ("_blank");
+ target = OUString(RTL_CONSTASCII_USTRINGPARAM("_blank"));
xdh->executeDispatch (Reference < XDispatchProvider > (m_xFrame, UNO_QUERY),
command,
@@ -757,14 +789,14 @@ FrameHelper::getAcceleratorConfigurations (Reference < XModel > xModel,
this->m_docAccelConf = docAccelConf;
//Get module shurtcut database
- Reference< XModuleUIConfigurationManagerSupplier > modUISupplier(m_xMSF->createInstance(OUString::createFromAscii("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")),
+ Reference< XModuleUIConfigurationManagerSupplier > modUISupplier(m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.ModuleUIConfigurationManagerSupplier"))),
UNO_QUERY);
Reference< XUIConfigurationManager > modUIManager = modUISupplier->getUIConfigurationManager(xModuleManager->identify(m_xFrame));
Reference< XAcceleratorConfiguration > modAccelConf(modUIManager->getShortCutManager(), UNO_QUERY);
this->m_modAccelConf = modAccelConf;
//Get global shortcut database
- Reference< XAcceleratorConfiguration > globAccelConf(m_xMSF->createInstance(OUString::createFromAscii("com.sun.star.ui.GlobalAcceleratorConfiguration")),
+ Reference< XAcceleratorConfiguration > globAccelConf(m_xMSF->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.GlobalAcceleratorConfiguration"))),
UNO_QUERY);
this->m_globAccelConf = globAccelConf;
}
@@ -821,7 +853,7 @@ FrameHelper::findShortcutForCommand (OUString command)
{}
//NOTE: For some reason this item does not return its shortcut. Setting manually:
- if (command.equals (OUString::createFromAscii (".uno:HelpIndex")))
+ if (command.equals (OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:HelpIndex"))))
{
kev.KeyCode = awt::Key::F1;
}
diff --git a/framework/source/lomenubar/FrameHelper.hxx b/framework/source/lomenubar/FrameHelper.hxx
index a976bace269e..9264f26d2654 100644
--- a/framework/source/lomenubar/FrameHelper.hxx
+++ b/framework/source/lomenubar/FrameHelper.hxx
@@ -24,24 +24,28 @@
#ifndef __FRAME_HELPER_HXX__
#define __FRAME_HELPER_HXX__
+#include <vector>
+
+#include <boost/scoped_ptr.hpp>
+
#include <com/sun/star/awt/KeyEvent.hpp>
#include <com/sun/star/awt/XMenu.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/frame/XFrame.hpp>
-#include <com/sun/star/frame/XFramesSupplier.hpp>
-#include <com/sun/star/frame/FrameSearchFlag.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/frame/XFrameActionListener.hpp>
-#include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/frame/FrameAction.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
#include <com/sun/star/frame/XDispatchProvider.hpp>
-#include <com/sun/star/frame/XModuleManager.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XFrameActionListener.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/frame/XModel.hpp>
-#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/frame/XModuleManager.hpp>
+#include <com/sun/star/frame/XStatusListener.hpp>
#include <com/sun/star/lang/EventObject.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/XAcceleratorConfiguration.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <cppuhelper/implbase1.hxx>
//#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
@@ -73,6 +77,12 @@ using com::sun::star::util::XURLTransformer;
using com::sun::star::ui::XAcceleratorConfiguration;
using rtl::OUString;
+
+namespace framework { namespace lomenubar
+{
+ class DispatchRegistry;
+}}
+
/* This class is a helper in charge of closing the dbusmenu server when a frame is closed,
* and also allows the menuitem callbacks to dispatch commands.
*/
@@ -80,23 +90,25 @@ using rtl::OUString;
class FrameHelper : public cppu::WeakImplHelper1 < XFrameActionListener >
{
private:
- Reference < XFrame > m_xFrame;
- Reference < XMultiServiceFactory > m_xMSF;
+ const Reference < XStatusListener > m_xStatusListener;
+ ::boost::scoped_ptr< ::framework::lomenubar::DispatchRegistry> m_pDispatchRegistry;
+ const Reference < XMultiServiceFactory > m_xMSF;
+ const Reference < XURLTransformer > m_xTrans;
+ const Reference < XModuleManager> m_xMM;
+ const Reference < XMultiComponentFactory > m_xPCF;
+ const Reference < XFrame > m_xFrame;
+ const Reference < XDispatchProvider > m_xdp;
+ const Sequence < Any > m_args;
Reference < XNameAccess > m_xUICommands;
DbusmenuServer *m_server;
DbusmenuMenuitem *m_root;
gboolean m_watcher_set;
guint m_watcher;
- XStatusListener *m_xSL;
- Reference < XURLTransformer > m_xTrans;
- Reference < XDispatchProvider > m_xdp;
GHashTable *m_commandsInfo;
+ //This variable prevents the helper from being disconnected from the frame
+ //for special cases of component dettaching like print preview
gboolean m_blockDetach;
- //These object/methods are used to recreate dynamic popupmenus
- Reference < XMultiComponentFactory > m_xPCF;
- Reference < XModuleManager> m_xMM;
- Sequence < Any > m_args;
gboolean isSpecialSubmenu (OUString command);
@@ -131,7 +143,6 @@ class FrameHelper : public cppu::WeakImplHelper1 < XFrameActionListener >
Reference < XFrame > getFrame ();
unsigned long getXID ();
GHashTable* getCommandsInfo ();
- XStatusListener* getStatusListener ();
::rtl::OUString getLabelFromCommandURL (::rtl::OUString);
//Menu Related actions
diff --git a/framework/source/lomenubar/HACKING b/framework/source/lomenubar/HACKING
new file mode 100644
index 000000000000..49d016f32c41
--- /dev/null
+++ b/framework/source/lomenubar/HACKING
@@ -0,0 +1,99 @@
+LibreOffice DbusMenu Integration Source Code
+============================================
+There are three main classes, DesktopJob, FrameJob and FrameHelper implemented
+in their respective .cxx/.h files:
+
+- src/DesktopJob.cxx
+- src/DesktopJob.h
+
+- src/FrameJob.cxx
+- src/FrameJob.h
+
+- src/FrameHelper.cxx
+- src/FrameHelper.h
+
+The first two classes are Jobs executed synchronously on two events, the events
+that trigger these jobs are defined in data/Jobs.xcu. Further explanation on
+each class can be found below.
+
+The FrameHelper class performs most of the tasks regarding communication between
+
+The src/export.cxx code is the entry point for the resulting shared object
+that conforms this extension. It exports the information needed to register and
+access all the interfaces implemented by the two jobs exported.
+
+GLib Integration
+----------------
+This extension assumes the presence of the GLib mainloop in the application,
+it is not recommended its installation on LibreOffice deployments that do not
+provide integration with the glib mainloop.
+
+g_type_init() is called in DesktopJob for safety.
+
+DesktopJob
+----------
+This class is a XJob that is instantiated and executed on LibreOffice startup
+just once during the lifetime of the process.
+
+This class does nothing but trying to acquire the "org.libreoffice.dbusmenu"
+busname. Once the executed method returns the object instance is destroyed.
+
+FrameJob & FrameHelper
+----------------------
+This class is a XJob that is instantiated and executed every time a document is
+created or loaded. It watches for the presence of the
+com.canonical.AppMenu.Registrar well-known D-Bus name.
+
+Afterwards it creates an instance of the FrameHelper class. FrameHelper is an
+XFrameActionListener that subscribes to the XFrame that represents the current
+Window. The lifetime of this FrameHelper is bound to the life of the current
+document being viewed/edited.
+
+FrameHelper creates the initial structure of Dbusmenu menuitems, and the
+dbusmenu server. If FrameHelper is destroyed, the frame is unregistered and
+the server shutdown. It also stops watching com.canonical.AppMenu.Registrar
+presence.
+
+Listening for menu changes - MenuItemInfo & MenuItemStatusListener
+------------------------------------------------------------------
+FrameHelper subscribes creates a cache in the commandsInfo GHashTable property.
+This cache maps each command URL with a MenuItemInfo object that stores the
+current information for a given menu item.
+
+To listen for menu changes and update the cache, FrameHelper creates an instance
+of MenuItemStatusListener per each command url. This listeners update the data
+for the respective MenuItemInfo associated to the command URL it is listening
+for. The source code for these two classes can be found in the following
+respective files:
+
+- src/MenuItemInfo.h
+- src/MenuItemInfo.cxx
+
+- src/MenuItemStatusListener.h
+- src/MenuItemStatusListener.cxx
+
+Special Popup Menus
+-------------------
+This is the set of special popup menus:
+- .uno:CharFontName
+- .uno:FontHeight
+- .uno:ObjectMenue
+- .uno:InsertPageHeader
+- .uno:InsertPageFooter
+- .uno:ChangeControlType
+- .uno:AvailableToolbars
+- .uno:ScriptOrganizer
+- .uno:RecentFileList
+- .uno:AddDirect
+- .uno:AutoPilotMenu
+
+These menus cannot be introspected as they are created dinamically when the user
+clicks on the menu. Therefor they are treated differently, see the usage of
+isSpecialSubmenu in the rebuildMenu method from the FrameHelper class.
+
+In the case of the recent file list, the command URLs provided by this
+workaround are not enough to open the document. A workaround for this is present
+in the FrameHelper::dispatchCommand method.
+
+For further reference on this type of submenus follow this link:
+http://wiki.services.openoffice.org/wiki/Framework/Tutorial/Popup_Menu_Controller
diff --git a/framework/source/lomenubar/Jobs.xcu b/framework/source/lomenubar/Jobs.xcu
new file mode 100644
index 000000000000..de2bb6087691
--- /dev/null
+++ b/framework/source/lomenubar/Jobs.xcu
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Jobs">
+ <node oor:name="AppMenuDesktopJob" oor:op="replace">
+ <prop oor:name="Service">
+ <value>org.libreoffice.comp.framework.lomenubar.DesktopJob</value>
+ </prop>
+ </node>
+ <node oor:name="AppMenuFrameJob" oor:op="replace">
+ <prop oor:name="Service">
+ <value>org.libreoffice.comp.framework.lomenubar.FrameJob</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="Events">
+ <node oor:name="OnStartApp" oor:op="replace">
+ <node oor:name="JobList">
+ <node oor:name="AppMenuDesktopJob" oor:op="replace"/>
+ </node>
+ </node>
+ <node oor:name="onDocumentOpened" oor:op="replace">
+ <node oor:name="JobList">
+ <node oor:name="AppMenuFrameJob" oor:op="replace"/>
+ </node>
+ </node>
+ <!--node oor:name="OnNew" oor:op="replace">
+ <node oor:name="JobList">
+ <node oor:name="AppMenuFrameJob" oor:op="replace"/>
+ </node>
+ </node-->
+
+ </node>
+</oor:component-data>
diff --git a/framework/source/lomenubar/MenuItemStatusListener.cxx b/framework/source/lomenubar/MenuItemStatusListener.cxx
index f5e216dad4a1..6b7f7384f906 100644
--- a/framework/source/lomenubar/MenuItemStatusListener.cxx
+++ b/framework/source/lomenubar/MenuItemStatusListener.cxx
@@ -6,9 +6,9 @@
using com::sun::star::frame::status::Visibility;
MenuItemStatusListener::MenuItemStatusListener (FrameHelper *helper)
+ : m_helper(helper)
{
- if (!helper) throw ("FrameHelper cannot be NULL");
- this->m_helper = helper;
+ OSL_ENSURE(m_helper, "FrameHelper cannot be NULL");
}
void SAL_CALL
diff --git a/framework/source/lomenubar/MenuItemStatusListener.hxx b/framework/source/lomenubar/MenuItemStatusListener.hxx
index df0353739cd7..7fdab64ad23c 100644
--- a/framework/source/lomenubar/MenuItemStatusListener.hxx
+++ b/framework/source/lomenubar/MenuItemStatusListener.hxx
@@ -19,7 +19,7 @@ class MenuItemStatusListener : public cppu::WeakImplHelper1 < XStatusListener >
{
private:
guint16 m_id;
- FrameHelper *m_helper;
+ FrameHelper* const m_helper;
public:
MenuItemStatusListener (FrameHelper *helper);
diff --git a/framework/source/lomenubar/README b/framework/source/lomenubar/README
new file mode 100644
index 000000000000..45176349b094
--- /dev/null
+++ b/framework/source/lomenubar/README
@@ -0,0 +1,15 @@
+LibreOffice Global Menubar Extension for DBusMenu
+=================================================
+
+This library is an extension for LibreOffice that exports the Menubar structure,
+actions and shortcuts through the DBusMenu D-Bus interface. If there is a
+present DbusMenu client (The Unity panel or the Appmenu applet for GNOME Panel
+for instance), LibreOffice will had its menu structure.
+
+For more information, visit the official website:
+http://launchpad.net/lo-menubar
+
+Known Issues
+------------
+- The menubar is shown briefly before it is hidden.
+- The LibreOffice Start Center does not hide/export its menu structure.
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
index 83dd81b406cf..f04faa5846cf 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -31,6 +31,11 @@
#include <i18nutil/unicode.hxx>
#include "unicode_data.h"
+// Workaround for glibc braindamage:
+// glibc 2.4's langinfo.h does "#define CURRENCY_SYMBOL __CURRENCY_SYMBOL"
+// which (obviously) breaks UnicodeType::CURRENCY_SYMBOL
+#undef CURRENCY_SYMBOL
+
using namespace ::com::sun::star::i18n;
static ScriptTypeList defaultTypeList[] = {
diff --git a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp
deleted file mode 100644
index 84840f36a3b4..000000000000
--- a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp
+++ /dev/null
Binary files differ
diff --git a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp
deleted file mode 100644
index 75dc163eb719..000000000000
--- a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp
+++ /dev/null
Binary files differ
diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
index 470d562e8f2d..d4fa58a1698b 100644
--- a/instsetoo_native/util/makefile.mk
+++ b/instsetoo_native/util/makefile.mk
@@ -76,6 +76,10 @@ LOCALPYFILES= \
$(BIN)$/mailmerge.py
.ENDIF
+help_exist:=$(shell @find $(L10N_MODULE)/source/ -type d -name "helpcontent2" | sed -e "s|/helpcontent2||" -e "s|^.*/||" ) en-US
+
+allhelplangiso:=$(foreach,i,$(alllangiso) $(foreach,j,$(help_exist) $(eq,$i,$j $i $(NULL))))
+
xxxx:
echo $(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl --buildid $(BUILD) --arch "$(RTL_ARCH)" --os "$(RTL_OS)" --lstfile $(PRJ)$/util$/openoffice.lst --product LibreOffice --languages $(subst,$(@:s/_/ /:1)_, $(@:b)) $(PRJ)$/util$/update.xml
@@ -129,9 +133,9 @@ ooolanguagepack : $(foreach,i,$(alllangiso) ooolanguagepack_$i)
ooodevlanguagepack: $(foreach,i,$(alllangiso) ooodevlanguagepack_$i)
-ooohelppack : $(foreach,i,$(alllangiso) ooohelppack_$i)
+ooohelppack : $(foreach,i,$(allhelplangiso) ooohelppack_$i)
-ooodevhelppack: $(foreach,i,$(alllangiso) ooodevhelppack_$i)
+ooodevhelppack: $(foreach,i,$(allhelplangiso) ooodevhelppack_$i)
sdkoo: $(foreach,i,$(alllangiso) sdkoo_$i)
@@ -153,7 +157,7 @@ oxygenofficewithjre: $(foreach,i,$(alllangiso) oxygenofficewithjre_$i)
oxygenofficelanguagepack : $(foreach,i,$(alllangiso) oxygenofficelanguagepack_$i)
-oxygenofficehelppack : $(foreach,i,$(alllangiso) oxygenofficehelppack_$i)
+oxygenofficehelppack : $(foreach,i,$(allhelplangiso) oxygenofficehelppack_$i)
MSIOFFICETEMPLATESOURCE=$(PRJ)$/inc_openoffice$/windows$/msi_templates
MSILANGPACKTEMPLATESOURCE=$(PRJ)$/inc_ooolangpack$/windows$/msi_templates
@@ -192,9 +196,9 @@ $(foreach,i,$(alllangiso) ooolanguagepack_$i) : $(ADDDEPS)
$(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : $(ADDDEPS)
-$(foreach,i,$(alllangiso) ooohelppack_$i) : $(ADDDEPS)
+$(foreach,i,$(allhelplangiso) ooohelppack_$i) : $(ADDDEPS)
-$(foreach,i,$(alllangiso) ooodevhelppack_$i) : $(ADDDEPS)
+$(foreach,i,$(allhelplangiso) ooodevhelppack_$i) : $(ADDDEPS)
$(foreach,i,$(alllangiso) sdkoo_$i) : $(ADDDEPS)
@@ -216,7 +220,7 @@ $(foreach,i,$(alllangiso) oxygenofficewithjre_$i) : $(ADDDEPS)
$(foreach,i,$(alllangiso) oxygenofficelanguagepack_$i) : $(ADDDEPS)
-$(foreach,i,$(alllangiso) oxygenofficehelppack_$i) : $(ADDDEPS)
+$(foreach,i,$(allhelplangiso) oxygenofficehelppack_$i) : $(ADDDEPS)
.IF "$(MAKETARGETS)"!=""
$(MAKETARGETS) : $(ADDDEPS)
@@ -252,11 +256,11 @@ $(foreach,i,$(alllangiso) ooodevlanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
ooodevlanguagepack_%{$(PKGFORMAT:^".")} :
$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice_Dev -u $(OUT) -buildid $(BUILD) -msitemplate $(MSILANGPACKTEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -languagepack -format $(@:e:s/.//) $(VERBOSESWITCH)
-$(foreach,i,$(alllangiso) ooohelppack_$i) : $$@{$(PKGFORMAT:^".")}
+$(foreach,i,$(allhelplangiso) ooohelppack_$i) : $$@{$(PKGFORMAT:^".")}
ooohelppack_%{$(PKGFORMAT:^".")} :
$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIHELPPACKTEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -helppack -format $(@:e:s/.//) $(VERBOSESWITCH)
-$(foreach,i,$(alllangiso) ooodevhelppack_$i) : $$@{$(PKGFORMAT:^".")}
+$(foreach,i,$(allhelplangiso) ooodevhelppack_$i) : $$@{$(PKGFORMAT:^".")}
ooodevhelppack_%{$(PKGFORMAT:^".")} :
$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice_Dev -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIHELPPACKTEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -helppack -format $(@:e:s/.//) $(VERBOSESWITCH)
@@ -322,13 +326,13 @@ $(foreach,i,$(alllangiso) oxygenofficelanguagepack_$i) : $$@{$(PKGFORMAT:^".")}
oxygenofficelanguagepack_%{$(PKGFORMAT:^".")} :
$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p OxygenOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSILANGPACKTEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -languagepack -format $(@:e:s/.//) $(VERBOSESWITCH)
-$(foreach,i,$(alllangiso) oxygenofficehelppack_$i) : $$@{$(PKGFORMAT:^".")}
+$(foreach,i,$(allhelplangiso) oxygenofficehelppack_$i) : $$@{$(PKGFORMAT:^".")}
oxygenofficehelppack_%{$(PKGFORMAT:^".")} :
$(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p OxygenOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIHELPPACKTEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -helppack -format $(@:e:s/.//) $(VERBOSESWITCH)
.ELSE # "$(alllangiso)"!=""
openoffice:
- @echo cannot pack nothing...
+ @echo cannot pack anything...
.ENDIF # "$(alllangiso)"!=""
diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index d318d584a5c2..5124ddebdca9 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -53,11 +53,11 @@ LibreOffice
variables
{
PRODUCTNAME LibreOffice
- PRODUCTNAME_BR BrOffice
+ PRODUCTNAME_BR LibreOffice
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
@@ -92,8 +92,8 @@ LibreOffice
PATCHCODEFILE ooo_patchcodes.txt
DOWNLOADBANNER ooobanner.bmp
DOWNLOADBITMAP ooobitmap.bmp
- DOWNLOADBANNER_BR brobanner.bmp
- DOWNLOADBITMAP_BR brobitmap.bmp
+ DOWNLOADBANNER_BR ooobanner.bmp
+ DOWNLOADBITMAP_BR ooobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
@@ -121,11 +121,11 @@ LibreOffice_wJRE
variables
{
PRODUCTNAME LibreOffice
- PRODUCTNAME_BR BrOffice
+ PRODUCTNAME_BR LibreOffice
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
@@ -189,7 +189,7 @@ LibreOffice_Dev
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
BASISROOTNAME LibO-dev
UNIXBASISROOTNAME lo-dev
POSTVERSIONEXTENSION
@@ -266,7 +266,7 @@ URE
PRODUCTEXTENSION
BRANDPACKAGEVERSION 3
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
LICENSENAME LGPL
SETSTATICPATH 1
NOVERSIONINDIRNAME 1
@@ -301,11 +301,11 @@ LibreOffice_SDK
variables
{
PRODUCTNAME LibreOffice
- PRODUCTNAME_BR BrOffice
+ PRODUCTNAME_BR LibreOffice
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
POSTVERSIONEXTENSION SDK
POSTVERSIONEXTENSIONUNIX sdk
BRANDPACKAGEVERSION 3
@@ -351,7 +351,7 @@ LibreOffice_Dev_SDK
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
BASISROOTNAME LibO-dev
UNIXBASISROOTNAME lo-dev
POSTVERSIONEXTENSION SDK
@@ -404,7 +404,7 @@ OxygenOffice
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
@@ -473,7 +473,7 @@ OxygenOffice_wJRE
PRODUCTVERSION 3.4
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION beta3
+ SHORT_PRODUCTEXTENSION beta4
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
diff --git a/libwpd/libwpd.corruptedprefix.patch b/libwpd/libwpd.corruptedprefix.patch
deleted file mode 100644
index 9d5288d0515d..000000000000
--- a/libwpd/libwpd.corruptedprefix.patch
+++ /dev/null
@@ -1,107 +0,0 @@
---- misc/libwpd-0.9.1/src/lib/WP6PrefixDataPacket.cpp 2010-08-26 13:35:21.000000000 +0200
-+++ misc/build/libwpd-0.9.1/src/lib/WP6PrefixDataPacket.cpp 2011-04-01 18:25:41.328379372 +0200
-@@ -46,45 +46,67 @@
- }
-
- WP6PrefixDataPacket * WP6PrefixDataPacket::constructPrefixDataPacket(WPXInputStream * input, WPXEncryption *encryption, WP6PrefixIndice *prefixIndice)
--{
-- switch (prefixIndice->getType())
-+{
-+ WP6PrefixDataPacket *tmpPacket = 0;
-+ try
-+ {
-+ switch (prefixIndice->getType())
-+ {
-+ case WP6_INDEX_HEADER_INITIAL_FONT:
-+ tmpPacket = new WP6DefaultInitialFontPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_GENERAL_WORDPERFECT_TEXT:
-+ tmpPacket = new WP6GeneralTextPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_DESIRED_FONT_DESCRIPTOR_POOL:
-+ tmpPacket = new WP6FontDescriptorPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_FILL_STYLE:
-+ tmpPacket = new WP6FillStylePacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_EXTENDED_DOCUMENT_SUMMARY:
-+ tmpPacket = new WP6ExtendedDocumentSummaryPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_OUTLINE_STYLE:
-+ tmpPacket = new WP6OutlineStylePacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_GRAPHICS_FILENAME:
-+ tmpPacket = new WP6GraphicsFilenamePacket(input, encryption, prefixIndice->getID(), prefixIndice->getFlags(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_GRAPHICS_CACHED_FILE_DATA:
-+ tmpPacket = new WP6GraphicsCachedFileDataPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_GRAPHICS_BOX_STYLE:
-+ tmpPacket = new WP6GraphicsBoxStylePacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_TABLE_STYLE:
-+ tmpPacket = new WP6TableStylePacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ case WP6_INDEX_HEADER_COMMENT_ANNOTATION:
-+ tmpPacket = new WP6CommentAnnotationPacket(input, encryption, prefixIndice->getID(),
-+ prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-+ break;
-+ default:
-+ break;;
-+ }
-+ }
-+ catch (FileException)
- {
-- case WP6_INDEX_HEADER_INITIAL_FONT:
-- return new WP6DefaultInitialFontPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_GENERAL_WORDPERFECT_TEXT:
-- return new WP6GeneralTextPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_DESIRED_FONT_DESCRIPTOR_POOL:
-- return new WP6FontDescriptorPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_FILL_STYLE:
-- return new WP6FillStylePacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_EXTENDED_DOCUMENT_SUMMARY:
-- return new WP6ExtendedDocumentSummaryPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_OUTLINE_STYLE:
-- return new WP6OutlineStylePacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_GRAPHICS_FILENAME:
-- return new WP6GraphicsFilenamePacket(input, encryption, prefixIndice->getID(), prefixIndice->getFlags(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_GRAPHICS_CACHED_FILE_DATA:
-- return new WP6GraphicsCachedFileDataPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_GRAPHICS_BOX_STYLE:
-- return new WP6GraphicsBoxStylePacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_TABLE_STYLE:
-- return new WP6TableStylePacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- case WP6_INDEX_HEADER_COMMENT_ANNOTATION:
-- return new WP6CommentAnnotationPacket(input, encryption, prefixIndice->getID(),
-- prefixIndice->getDataOffset(), prefixIndice->getDataSize());
-- default:
-- return 0;
-+ if (tmpPacket)
-+ delete tmpPacket;
-+ tmpPacket = 0;
- }
-+ return tmpPacket;
- }
-
- void WP6PrefixDataPacket::_read(WPXInputStream *input, WPXEncryption *encryption, uint32_t dataOffset, uint32_t dataSize)
diff --git a/libwpd/libwpd.gcc460.patch b/libwpd/libwpd.gcc460.patch
deleted file mode 100644
index e5e41a0ddf06..000000000000
--- a/libwpd/libwpd.gcc460.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- misc/libwpd-0.9.1/src/lib/WP5GraphicsInformationPacket.h 2011-01-24 09:50:48.131106590 +0000
-+++ misc/build/libwpd-0.9.1/src/lib/WP5GraphicsInformationPacket.h 2011-01-24 09:51:17.676174074 +0000
-@@ -37,7 +37,7 @@
- ~WP5GraphicsInformationPacket();
- void _readContents(WPXInputStream *input, WPXEncryption *encryption, uint32_t dataSize);
- const std::vector<WPXBinaryData *> &getImages() const { return m_images; }
-- const WPXBinaryData *getImage( unsigned long imageIndex ) const { if (imageIndex < m_images.size()) return m_images[imageIndex]; return NULL; }
-+ const WPXBinaryData *getImage( unsigned long imageIndex ) const { if (imageIndex < m_images.size()) return m_images[imageIndex]; return 0; }
-
- private:
- std::vector<WPXBinaryData *> m_images;
diff --git a/libwpd/libwpd.warnings.patch b/libwpd/libwpd.warnings.patch
deleted file mode 100644
index ebc86dc93ca5..000000000000
--- a/libwpd/libwpd.warnings.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- misc/libwpd-0.9.1/src/lib/libwpd_internal.cpp
-+++ misc/build/libwpd-0.9.1/src/lib/libwpd_internal.cpp
-@@ -998,21 +998,25 @@ _WPXColumnProperties::_WPXColumnProperties()
- // HACK: this function is really cheesey
- int _extractNumericValueFromRoman(const char romanChar)
- {
-+ int retValue = 0;
- switch (romanChar)
- {
- case 'I':
- case 'i':
-- return 1;
-+ retValue = 1;
-+ break;
- case 'V':
- case 'v':
-- return 5;
-+ retValue = 5;
-+ break;
- case 'X':
- case 'x':
-- return 10;
-+ retValue = 10;
-+ break;
- default:
- throw ParseException();
- }
-- return 1;
-+ return retValue;
- }
-
- // _extractDisplayReferenceNumberFromBuf: given a nuWP6_DEFAULT_FONT_SIZEmber string in UCS2 represented
diff --git a/libwpd/makefile.mk b/libwpd/makefile.mk
index 6ecbbfaddacd..a8b17ffa625f 100644
--- a/libwpd/makefile.mk
+++ b/libwpd/makefile.mk
@@ -41,11 +41,8 @@ TARGET=wpd
@echo "Using system libwpd..."
.ENDIF
-TARFILE_NAME=libwpd-0.9.1
-TARFILE_MD5=5ff846847dab351604ad859e2fd4ed3c
-PATCH_FILES=libwpd.gcc460.patch \
- libwpd.corruptedprefix.patch \
- libwpd.warnings.patch
+TARFILE_NAME=libwpd-0.9.2
+TARFILE_MD5=8d265a592619166f29c4672ea54812b7
BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
BUILD_DIR=src$/lib
diff --git a/libwps/libwps-0.1.1.diff b/libwps/libwps-0.1.1.diff
deleted file mode 100644
index 6977cf33ceec..000000000000
--- a/libwps/libwps-0.1.1.diff
+++ /dev/null
@@ -1,93 +0,0 @@
-*** misc/libwps-0.1.1/src/lib/WPSListener.h Thu Nov 29 20:58:57 2007
---- misc/build/libwps-0.1.1/src/lib/WPSListener.h Sun Dec 2 20:54:35 2007
-***************
-*** 39,45 ****
- virtual ~WPSListener();
-
- bool isUndoOn() { return m_isUndoOn; }
-! void setUndoOn(bool isUndoOn) { m_isUndoOn = isUndoOn; }
-
- std::list<WPSPageSpan> &m_pageList;
-
---- 39,45 ----
- virtual ~WPSListener();
-
- bool isUndoOn() { return m_isUndoOn; }
-! void setUndoOn(bool undoOn) { m_isUndoOn = undoOn; }
-
- std::list<WPSPageSpan> &m_pageList;
-
-*** misc/libwps-0.1.1/src/lib/WPSContentListener.cpp Thu Nov 29 20:58:57 2007
---- misc/build/libwps-0.1.1/src/lib/WPSContentListener.cpp Sun Dec 2 21:09:11 2007
-***************
-*** 36,62 ****
- #define LIBWPS_MAX std::max
- #endif
-
-- namespace {
--
-- WPXString doubleToString(const double value)
-- {
-- WPXString tempString;
-- tempString.sprintf("%.4f", value);
-- std::string decimalPoint(localeconv()->decimal_point);
-- if ((decimalPoint.size() == 0) || (decimalPoint == "."))
-- return tempString;
-- std::string stringValue(tempString.cstr());
-- if (!stringValue.empty())
-- {
-- std::string::size_type pos;
-- while ((pos = stringValue.find(decimalPoint)) != std::string::npos)
-- stringValue.replace(pos,decimalPoint.size(),".");
-- }
-- return WPXString(stringValue.c_str());
-- }
--
-- } // namespace
--
- _WPSContentParsingState::_WPSContentParsingState() :
- m_textAttributeBits(0),
- m_fontSize(12.0f/*WP6_DEFAULT_FONT_SIZE*/), // FIXME ME!!!!!!!!!!!!!!!!!!! HELP WP6_DEFAULT_FONT_SIZE
---- 36,41 ----
-***************
-*** 578,585 ****
- _closePageSpan();
- }
-
-- const float WPS_DEFAULT_SUPER_SUB_SCRIPT = 58.0f;
--
- void WPSContentListener::_openSpan()
- {
- if (!m_ps->m_isParagraphOpened && !m_ps->m_isListElementOpened)
---- 557,562 ----
-***************
-*** 622,639 ****
- }
-
- WPXPropertyList propList;
-! if (attributeBits & WPS_SUPERSCRIPT_BIT) {
-! WPXString sSuperScript("super ");
-! sSuperScript.append(doubleToString(WPS_DEFAULT_SUPER_SUB_SCRIPT));
-! sSuperScript.append("%");
-! propList.insert("style:text-position", sSuperScript);
-! }
-! else if (attributeBits & WPS_SUBSCRIPT_BIT) {
-! WPXString sSubScript("sub ");
-! sSubScript.append(doubleToString(WPS_DEFAULT_SUPER_SUB_SCRIPT));
-! sSubScript.append("%");
-! propList.insert("style:text-position", sSubScript);
-! }
- if (attributeBits & WPS_ITALICS_BIT)
- propList.insert("fo:font-style", "italic");
- if (attributeBits & WPS_BOLD_BIT)
---- 599,608 ----
- }
-
- WPXPropertyList propList;
-! if (m_ps->m_textAttributeBits & WPS_SUPERSCRIPT_BIT)
-! propList.insert("style:text-position", "super 58%");
-! else if (m_ps->m_textAttributeBits & WPS_SUBSCRIPT_BIT)
-! propList.insert("style:text-position", "sub 58%");
- if (attributeBits & WPS_ITALICS_BIT)
- propList.insert("fo:font-style", "italic");
- if (attributeBits & WPS_BOLD_BIT)
diff --git a/libwps/libwps-0.2.0.patch b/libwps/libwps-0.2.0.patch
deleted file mode 100644
index 6af2989b70af..000000000000
--- a/libwps/libwps-0.2.0.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up misc/build/libwps-0.2.0/src/lib/libwps_internal.h.old misc/build/libwps-0.2.0/src/lib/libwps_internal.h
---- misc/build/libwps-0.2.0/src/lib/libwps_internal.h.old 2010-11-17 20:47:23.288507198 +0100
-+++ misc/build/libwps-0.2.0/src/lib/libwps_internal.h 2010-11-17 20:47:26.596839807 +0100
-@@ -23,6 +23,7 @@
- #define LIBWPS_INTERNAL_H
- #ifdef DEBUG
- #include <bitset>
-+#include <stdio.h>
- #endif
- #include <libwpd-stream/libwpd-stream.h>
- #include <libwpd/libwpd.h>
diff --git a/libwps/libwps-0.2.1-warnings.patch b/libwps/libwps-0.2.1-warnings.patch
new file mode 100644
index 000000000000..fffffd52ee80
--- /dev/null
+++ b/libwps/libwps-0.2.1-warnings.patch
@@ -0,0 +1,60 @@
+--- misc/libwps-0.2.1/src/lib/WPS8.cpp 2011-04-05 11:25:15.000000000 +0200
++++ misc/build/libwps-0.2.1/src/lib/WPS8.cpp 2011-05-03 15:02:21.107349347 +0200
+@@ -136,7 +136,7 @@
+ input->seek(pos->second.offset, WPX_SEEK_SET);
+ n_streams = readU32(input);
+
+- if (n_streams > 100) WPS_DEBUG_MSG(("Probably garbled STRS: count = %u\n",n_streams));
++ if (n_streams > 100) { WPS_DEBUG_MSG(("Probably garbled STRS: count = %u\n",n_streams)); }
+
+ /* skip mysterious header*/
+ input->seek(8, WPX_SEEK_CUR);
+@@ -155,7 +155,7 @@
+ last_pos += offset;
+ }
+ offset = readU32(input);
+- if (offset) WPS_DEBUG_MSG(("Offset table is not 0-terminated!\n"));
++ if (offset) { WPS_DEBUG_MSG(("Offset table is not 0-terminated!\n")); }
+
+ for (unsigned i=0; i < n_streams; i++) {
+ uint16_t len;
+@@ -325,7 +325,7 @@
+ *
+ */
+
+-void WPS8Parser::readText(WPXInputStream * input, WPS8ContentListener *listener)
++void WPS8Parser::readText(WPXInputStream * /* input */, WPS8ContentListener * /* listener */)
+ {
+ #if (0)
+ WPS_DEBUG_MSG(("WPS8Parser::readText()\n"));
+@@ -1356,7 +1356,7 @@
+ id += 4;
+ t_rem -= 4;
+
+- if (t_count < 0 && t_count > 20) break; /* obviously wrong */
++ if (t_count > 20) break; /* obviously wrong */
+ } else break; /* wrong format */
+ }
+
+--- misc/libwps-0.2.1/src/lib/WPSContentListener.cpp 2011-04-04 21:56:29.000000000 +0200
++++ misc/build/libwps-0.2.1/src/lib/WPSContentListener.cpp 2011-05-03 15:02:21.837414573 +0200
+@@ -621,7 +621,7 @@
+ _closeParagraph();
+ }
+
+-const uint16_t WPSContentListener::getSpec() const
++uint16_t WPSContentListener::getSpec() const
+ {
+ return m_ps->m_spec;
+ }
+--- misc/libwps-0.2.1/src/lib/WPSContentListener.h 2011-04-04 21:30:56.000000000 +0200
++++ misc/build/libwps-0.2.1/src/lib/WPSContentListener.h 2011-05-03 15:02:23.334548336 +0200
+@@ -154,7 +154,7 @@
+
+ void insertEOL();
+
+- const uint16_t getSpec() const;
++ uint16_t getSpec() const;
+ protected:
+ WPSContentListener(std::list<WPSPageSpan> &pageList, WPXDocumentInterface *documentInterface);
+ virtual ~WPSContentListener();
diff --git a/libwps/libwps-0.2.1.patch b/libwps/libwps-0.2.1.patch
new file mode 100644
index 000000000000..a70812dd568a
--- /dev/null
+++ b/libwps/libwps-0.2.1.patch
@@ -0,0 +1,28 @@
+--- misc/libwps-0.2.1/src/lib/libwps_internal.cpp 2011-04-04 21:53:42.000000000 +0200
++++ misc/build/libwps-0.2.1/src/lib/libwps_internal.cpp 2011-05-03 14:50:56.146147538 +0200
+@@ -79,18 +79,15 @@
+ {0x419,"ru-RU"}
+ };
+
+-static int _ltcomp(const void *k1, const void *k2)
+-{
+- int r = (int)((ssize_t)k1) - ((_lange*)k2)->id;
+- return r;
+-}
+-
+ std::string getLangFromLCID(uint32_t lcid)
+ {
+- _lange *c = (_lange*) bsearch((const void*)lcid,s_lang_table,
+- sizeof(s_lang_table)/sizeof(_lange),
+- sizeof(_lange),_ltcomp);
+- if (c) return c->name;
++ unsigned i = 0;
++
++ for (i=0; i < sizeof(s_lang_table)/sizeof(s_lang_table[0]); i++)
++ {
++ if (s_lang_table[i].id == lcid)
++ return s_lang_table[i].name;
++ }
+ return "-none-";
+ }
+
diff --git a/libwps/makefile.mk b/libwps/makefile.mk
index 3f9667bf008f..edb36cd08f5b 100644
--- a/libwps/makefile.mk
+++ b/libwps/makefile.mk
@@ -49,12 +49,12 @@ INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd
INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd-stream
.ENDIF
-TARFILE_NAME=libwps-0.2.0
-TARFILE_MD5=9e436bff44c60dc8b97cba0c7fc11a5c
+TARFILE_NAME=libwps-0.2.1
+TARFILE_MD5=83d4029aebf290c0a9a8fee9c99638d3
BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
BUILD_DIR=src/lib
-PATCH_FILES=libwps-0.2.0.patch
+PATCH_FILES=libwps-0.2.1.patch libwps-0.2.1-warnings.patch
# --- Targets ------------------------------------------------------
diff --git a/np_sdk/mozsrc/npapi.h b/np_sdk/mozsrc/npapi.h
index ef2b21a6223f..8c55f6cb0fbc 100644
--- a/np_sdk/mozsrc/npapi.h
+++ b/np_sdk/mozsrc/npapi.h
@@ -42,8 +42,9 @@
* Netscape client plug-in API spec
*/
-#ifndef _NPAPI_H_
+#if !defined(_NPAPI_H_) && !defined(npapi_h_)
#define _NPAPI_H_
+#define npapi_h_
#ifdef __OS2__
#pragma pack(1)
diff --git a/ooo.lst.in b/ooo.lst.in
index 0c43f1fda28c..94d69c21d5ea 100644
--- a/ooo.lst.in
+++ b/ooo.lst.in
@@ -74,8 +74,8 @@ debc62758716a169df9f62e6ab2bc634-zlib-1.2.3.tar.gz
0f63ee487fda8f21fafa767b3c447ac9-ixion-0.2.0.tar.gz
71474203939fafbe271e1263e61d083e-nss-3.12.8-with-nspr-4.8.6.tar.gz
5ba6a61a2f66dfd5fee8cdd4cd262a37-libwpg-0.2.0.tar.bz2
-5ff846847dab351604ad859e2fd4ed3c-libwpd-0.9.1.tar.bz2
-9e436bff44c60dc8b97cba0c7fc11a5c-libwps-0.2.0.tar.bz2
+8d265a592619166f29c4672ea54812b7-libwpd-0.9.2.tar.bz2
+83d4029aebf290c0a9a8fee9c99638d3-libwps-0.2.1.tar.bz2
7a0dcb3fe1e8c7229ab4fb868b7325e6-mdds_0.5.2.tar.bz2
f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2
9ed97fce60a9a65852402248a6659492-hunspell-1.3.1.tar.gz
diff --git a/oox/prj/build.lst b/oox/prj/build.lst
index 8ff9e5eda5ae..07c4e0eb06fb 100644
--- a/oox/prj/build.lst
+++ b/oox/prj/build.lst
@@ -1,4 +1,4 @@
-oox oox : cppu cppuhelper comphelper filter sal offapi sax basegfx svx xmlscript tools vcl BOOST:boost OPENSSL:openssl LIBXSLT:libxslt NULL
+oox oox : cppu cppuhelper comphelper filter sal offapi sax basegfx svx xmlscript tools vcl unotools BOOST:boost OPENSSL:openssl LIBXSLT:libxslt NULL
oox oox usr1 - all oox_mkout NULL
oox oox\prj get - all oox_prj NULL
oox oox\source\token nmake - all oox_token NULL
diff --git a/post_download.in b/post_download.in
index 3c542b8dd723..c55a749a47be 100755
--- a/post_download.in
+++ b/post_download.in
@@ -1,4 +1,4 @@
-AC_INIT([LibreOffice], [3.3],,, [http://documentfoundation.org/])
+AC_INIT([LibreOffice], [3.4],,, [http://documentfoundation.org/])
AC_PREREQ(2.50)
echo "********************************************************************"
diff --git a/sal/osl/unx/diagnose.c b/sal/osl/unx/diagnose.c
index 5425810ae408..043d68aa5c00 100644
--- a/sal/osl/unx/diagnose.c
+++ b/sal/osl/unx/diagnose.c
@@ -255,8 +255,9 @@ sal_Bool SAL_CALL osl_assertFailedLine (
/* output message buffer */
OSL_DIAGNOSE_OUTPUTMESSAGE(f, szMessage);
- /* output backtrace */
- osl_diagnose_backtrace_Impl(f);
+ /* if SAL backtrace for assertions is disabled, skip here */
+ if ( !getenv("DISABLE_SAL_BACKTRACE") )
+ osl_diagnose_backtrace_Impl(f);
/* release lock and leave */
pthread_mutex_unlock(&g_mutex);
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 59d6617ae470..62c0ac0eb9a8 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -131,7 +131,6 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/core/data/pivot2 \
sc/source/core/data/poolhelp \
sc/source/core/data/postit \
- sc/source/core/data/scdpoutputimpl \
sc/source/core/data/segmenttree \
sc/source/core/data/sheetevents \
sc/source/core/data/sortparam \
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 901bc3615ac2..19496d0f3f15 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -528,8 +528,8 @@ public:
SC_DLLPUBLIC sal_Bool SetCodeName( SCTAB nTab, const String& rName );
SC_DLLPUBLIC sal_Bool GetTable( const String& rName, SCTAB& rTab ) const;
- void SetAnonymousDBData(SCTAB nTab, ScDBData* pDBData);
- ScDBData* GetAnonymousDBData(SCTAB nTab);
+ SC_DLLPUBLIC void SetAnonymousDBData(SCTAB nTab, ScDBData* pDBData);
+ SC_DLLPUBLIC ScDBData* GetAnonymousDBData(SCTAB nTab);
SC_DLLPUBLIC inline SCTAB GetTableCount() const { return nMaxTableNumber; }
SvNumberFormatterIndexTable* GetFormatExchangeList() const { return pFormatExchangeList; }
@@ -1238,7 +1238,7 @@ public:
SC_DLLPUBLIC sal_Bool ApplyFlagsTab( SCCOL nStartCol, SCROW nStartRow,
SCCOL nEndCol, SCROW nEndRow,
SCTAB nTab, sal_Int16 nFlags );
- sal_Bool RemoveFlagsTab( SCCOL nStartCol, SCROW nStartRow,
+ SC_DLLPUBLIC sal_Bool RemoveFlagsTab( SCCOL nStartCol, SCROW nStartRow,
SCCOL nEndCol, SCROW nEndRow,
SCTAB nTab, sal_Int16 nFlags );
diff --git a/sc/inc/dpcachetable.hxx b/sc/inc/dpcachetable.hxx
index 73b3d5e12727..9c6353d0b51a 100644
--- a/sc/inc/dpcachetable.hxx
+++ b/sc/inc/dpcachetable.hxx
@@ -58,6 +58,13 @@ struct ScQueryParam;
class SC_DLLPUBLIC ScDPCacheTable
{
+ struct RowFlag
+ {
+ bool mbShowByFilter:1;
+ bool mbShowByPage:1;
+ bool isActive() const;
+ RowFlag();
+ };
public:
/** individual filter item used in SingleFilter and GroupFilter. */
struct FilterItem
@@ -121,7 +128,7 @@ public:
Criterion();
};
- ScDPCacheTable(ScDPCache* pCache);
+ ScDPCacheTable(const ScDPCache* pCache);
~ScDPCacheTable();
sal_Int32 getRowSize() const;
@@ -169,15 +176,13 @@ public:
SCROW getOrder(long nDim, SCROW nIndex) const;
void clear();
bool empty() const;
- void setCache(ScDPCache* p);
+ void setCache(const ScDPCache* p);
bool hasCache() const;
private:
ScDPCacheTable();
ScDPCacheTable(const ScDPCacheTable&);
- ScDPCache* getCache();
-
/**
* Check if a given row meets all specified criteria.
*
@@ -190,11 +195,10 @@ private:
/** unique field entires for each field (column). */
::std::vector< ::std::vector<SCROW> > maFieldEntries;
- /** used to track visibility of rows. The first row below the header row
- has the index of 0. */
- ::std::vector<bool> maRowsVisible;
+ /** Row flags. The first row below the header row has the index of 0. */
+ ::std::vector<RowFlag> maRowFlags;
- ScDPCache* mpCache;
+ const ScDPCache* mpCache;
};
#endif
diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx
index 59230d833491..30ca8406d11e 100644
--- a/sc/inc/dpobject.hxx
+++ b/sc/inc/dpobject.hxx
@@ -39,6 +39,7 @@
#include <boost/ptr_container/ptr_list.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/ptr_container/ptr_map.hpp>
#include <boost/shared_ptr.hpp>
namespace com { namespace sun { namespace star { namespace sheet {
@@ -117,7 +118,6 @@ private:
SC_DLLPRIVATE void CreateObjects();
SC_DLLPRIVATE void CreateOutput();
sal_Bool bRefresh;
- long mnCacheId;
public:
ScDPObject(ScDocument* pD);
@@ -257,13 +257,62 @@ public:
class ScDPCollection
{
-private:
- typedef ::boost::ptr_vector<ScDPObject> TablesType;
+public:
- ScDocument* pDoc;
- TablesType maTables;
+ /**
+ * Stores and manages all caches from internal sheets.
+ */
+ class SheetCaches
+ {
+ typedef ::boost::ptr_map<ScRange, ScDPCache> CachesType;
+ CachesType maCaches;
+ ScDocument* mpDoc;
+ public:
+ SheetCaches(ScDocument* pDoc);
+ const ScDPCache* getCache(const ScRange& rRange);
+ void removeCache(const ScRange& rRange);
+ };
+
+ /**
+ * Data caches for range name based source data.
+ */
+ class NameCaches
+ {
+ typedef ::boost::ptr_map<rtl::OUString, ScDPCache> CachesType;
+ CachesType maCaches;
+ ScDocument* mpDoc;
+ public:
+ NameCaches(ScDocument* pDoc);
+ const ScDPCache* getCache(const ::rtl::OUString& rName, const ScRange& rRange);
+ void removeCache(const ::rtl::OUString& rName);
+ };
+
+ /**
+ * Defines connection type to external data source. Used as a key to look
+ * up database cache.
+ */
+ struct DBType
+ {
+ sal_Int32 mnSdbType;
+ ::rtl::OUString maDBName;
+ ::rtl::OUString maCommand;
+ DBType(sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand);
+ };
+
+ /**
+ * Data caches for external database sources.
+ */
+ class DBCaches
+ {
+ typedef ::boost::ptr_map<DBType, ScDPCache> CachesType;
+ CachesType maCaches;
+ ScDocument* mpDoc;
+ public:
+ DBCaches(ScDocument* pDoc);
+ const ScDPCache* getCache(sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand);
+ void removeCache(sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand);
+ };
-public:
ScDPCollection(ScDocument* pDocument);
ScDPCollection(const ScDPCollection& r);
~ScDPCollection();
@@ -296,8 +345,22 @@ public:
SC_DLLPUBLIC bool InsertNewTable(ScDPObject* pDPObj);
bool HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const;
+
+ SheetCaches& GetSheetCaches();
+ NameCaches& GetNameCaches();
+ DBCaches& GetDBCaches();
+
+private:
+ typedef ::boost::ptr_vector<ScDPObject> TablesType;
+
+ ScDocument* pDoc;
+ TablesType maTables;
+ SheetCaches maSheetCaches;
+ NameCaches maNameCaches;
+ DBCaches maDBCaches;
};
+bool operator<(const ScDPCollection::DBType& left, const ScDPCollection::DBType& right);
#endif
diff --git a/sc/inc/dpoutput.hxx b/sc/inc/dpoutput.hxx
index 99ca1ed82754..d1d07e2c42cb 100644
--- a/sc/inc/dpoutput.hxx
+++ b/sc/inc/dpoutput.hxx
@@ -81,7 +81,7 @@ private:
com::sun::star::uno::Reference<
com::sun::star::sheet::XDimensionsSupplier> xSource;
ScAddress aStartPos;
- sal_Bool bDoFilter;
+ bool bDoFilter;
ScDPOutLevelData* pColFields;
ScDPOutLevelData* pRowFields;
ScDPOutLevelData* pPageFields;
@@ -91,7 +91,7 @@ private:
com::sun::star::uno::Sequence<
com::sun::star::uno::Sequence<
com::sun::star::sheet::DataResult> > aData;
- sal_Bool bResultsError;
+ bool bResultsError;
bool mbHasDataLayout;
String aDataDescription;
@@ -103,8 +103,8 @@ private:
sal_uInt32 nSingleNumFmt;
// Output geometry related parameters
- sal_Bool bSizesValid;
- sal_Bool bSizeOverflow;
+ bool bSizesValid;
+ bool bSizeOverflow;
long nColCount;
long nRowCount;
long nHeaderSize;
@@ -136,7 +136,7 @@ public:
ScDPOutput( ScDocument* pD,
const com::sun::star::uno::Reference<
com::sun::star::sheet::XDimensionsSupplier>& xSrc,
- const ScAddress& rPos, sal_Bool bFilter );
+ const ScAddress& rPos, bool bFilter );
~ScDPOutput();
void SetPosition( const ScAddress& rPos );
diff --git a/sc/inc/dpsdbtab.hxx b/sc/inc/dpsdbtab.hxx
index b86d0869e404..87c3ccd1ec5c 100644
--- a/sc/inc/dpsdbtab.hxx
+++ b/sc/inc/dpsdbtab.hxx
@@ -41,8 +41,8 @@ class ScDocument;
struct ScImportSourceDesc
{
- String aDBName;
- String aObject;
+ ::rtl::OUString aDBName;
+ ::rtl::OUString aObject;
sal_uInt16 nType; // enum DataImportMode
bool bNative;
ScDocument* mpDoc;
@@ -56,7 +56,8 @@ struct ScImportSourceDesc
bNative == rOther.bNative &&
mpDoc == rOther.mpDoc; }
- ScDPCache* CreateCache() const;
+ sal_Int32 GetCommandType() const;
+ const ScDPCache* CreateCache() const;
};
/**
diff --git a/sc/inc/dpshttab.hxx b/sc/inc/dpshttab.hxx
index 9215ef107dfb..505a2758ae78 100644
--- a/sc/inc/dpshttab.hxx
+++ b/sc/inc/dpshttab.hxx
@@ -78,7 +78,7 @@ public:
const ScQueryParam& GetQueryParam() const;
bool operator== ( const ScSheetSourceDesc& rOther ) const;
- SC_DLLPUBLIC ScDPCache* CreateCache() const;
+ SC_DLLPUBLIC const ScDPCache* CreateCache() const;
/**
* Check the sanity of the data source range.
@@ -111,7 +111,7 @@ private:
ScDPCacheTable aCacheTable;
public:
- ScSheetDPData(ScDocument* pD, const ScSheetSourceDesc& rDesc, ScDPCache* pCache);
+ ScSheetDPData(ScDocument* pD, const ScSheetSourceDesc& rDesc, const ScDPCache* pCache);
virtual ~ScSheetDPData();
virtual long GetColumnCount();
diff --git a/sc/inc/dptabdat.hxx b/sc/inc/dptabdat.hxx
index 7b3dde760246..31d32fe25706 100644
--- a/sc/inc/dptabdat.hxx
+++ b/sc/inc/dptabdat.hxx
@@ -39,6 +39,7 @@
#include <set>
#include <boost/unordered_set.hpp>
#include <boost/unordered_map.hpp>
+#include <boost/noncopyable.hpp>
namespace com { namespace sun { namespace star { namespace sheet {
struct DataPilotFieldFilter;
@@ -91,7 +92,7 @@ class ScDocument;
* Base class that abstracts different data source types of a datapilot
* table.
*/
-class SC_DLLPUBLIC ScDPTableData
+class SC_DLLPUBLIC ScDPTableData : public ::boost::noncopyable
{
// cached data for GetDatePart
long nLastDateVal;
diff --git a/sc/inc/dptablecache.hxx b/sc/inc/dptablecache.hxx
index c1ee4238193c..4bfb14dad727 100644
--- a/sc/inc/dptablecache.hxx
+++ b/sc/inc/dptablecache.hxx
@@ -48,7 +48,6 @@ struct ScQueryParam;
*/
class SC_DLLPUBLIC ScDPCache
{
- friend class ScDPCacheTable;
public:
typedef ::boost::ptr_vector<ScDPItemData> DataListType;
private:
@@ -58,20 +57,41 @@ private:
ScDocument* mpDoc;
long mnColumnCount;
- DataGridType maTableDataValues; // Data Pilot Table's index - value map
- RowGridType maSourceData; // Data Pilot Table's source data
- RowGridType maGlobalOrder; // Sorted members index
- mutable RowGridType maIndexOrder; // Index the sorted numbers
- DataListType maLabelNames; // Source label data
- std::vector<bool> mbEmptyRow; //If empty row?
+ /**
+ * This container stores only the unique instances of item data in each
+ * column. Duplicates are not allowed.
+ */
+ DataGridType maTableDataValues;
+
+ /**
+ * This container stores indices within maTableDataValues pointing to the
+ * data. The order of data are exactly as they appear in the original
+ * data source.
+ */
+ RowGridType maSourceData;
+
+ /**
+ * This container stores indices within maTableDataValues. The order of
+ * indices in each column represents ascending order of the actual data.
+ */
+ RowGridType maGlobalOrder;
+
+ /**
+ * This container stores the ranks of each unique data represented by
+ * their index.
+ */
+ mutable RowGridType maIndexOrder;
+
+ DataListType maLabelNames; // Stores dimension names.
+ std::vector<bool> mbEmptyRow; // Keeps track of empty rows.
mutable ScDPItemDataPool maAdditionalData;
public:
- SCROW GetIdByItemData( long nDim, String sItemData ) const;
+ SCROW GetIdByItemData( long nDim, const String& sItemData ) const;
SCROW GetIdByItemData( long nDim, const ScDPItemData& rData ) const;
- SCROW GetAdditionalItemID ( String sItemData ) const;
+ SCROW GetAdditionalItemID ( const String& sItemData ) const;
SCROW GetAdditionalItemID( const ScDPItemData& rData ) const;
SCCOL GetDimensionIndex( String sName) const;
@@ -81,6 +101,7 @@ public:
bool IsDateDimension( long nDim ) const ;
sal_uLong GetDimNumType( SCCOL nDim) const;
SCROW GetDimMemberCount( SCCOL nDim ) const;
+ SCROW GetOrder( long nDim, SCROW nIndex ) const;
SCROW GetSortedItemDataId( SCCOL nDim, SCROW nOrder ) const;
const DataListType& GetDimMemberValues( SCCOL nDim ) const;
@@ -93,7 +114,7 @@ public:
bool IsEmptyMember( SCROW nRow, sal_uInt16 nColumn ) const;
bool IsRowEmpty( SCROW nRow ) const;
bool IsValid() const;
- bool ValidQuery( SCROW nRow, const ScQueryParam& rQueryParam, bool* pSpecial );
+ bool ValidQuery( SCROW nRow, const ScQueryParam& rQueryParam, bool* pSpecial ) const;
ScDocument* GetDoc() const;//ms-cache-core
long GetColumnCount() const;
@@ -103,12 +124,11 @@ public:
bool operator== ( const ScDPCache& r ) const;
ScDPCache(ScDocument* pDoc);
- virtual ~ScDPCache();
+ ~ScDPCache();
private:
- SCROW GetOrder( long nDim, SCROW nIndex ) const;
void AddLabel( ScDPItemData* pData);
- bool AddData( long nDim, ScDPItemData* itemData );
+ bool AddData(long nDim, ScDPItemData* pData);
};
#endif
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 531528436ae5..35558d1a75a3 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -231,6 +231,7 @@ public:
void testCSV();
void testMatrix();
void testDataPilot();
+ void testDataPilotFilters();
void testSheetCopy();
void testExternalRef();
void testDataArea();
@@ -270,6 +271,7 @@ public:
CPPUNIT_TEST(testCSV);
CPPUNIT_TEST(testMatrix);
CPPUNIT_TEST(testDataPilot);
+ CPPUNIT_TEST(testDataPilotFilters);
CPPUNIT_TEST(testSheetCopy);
CPPUNIT_TEST(testExternalRef);
CPPUNIT_TEST(testDataArea);
@@ -302,6 +304,28 @@ Test::Test()
//of retaining references to the root ServiceFactory as its passed around
comphelper::setProcessServiceFactory(xSM);
+#if 0
+ // TODO: attempt to explicitly set UI locale to en-US, to get the unit
+ // test to work under non-English build environment. But this causes
+ // runtime exception....
+ uno::Reference<lang::XMultiServiceFactory> theConfigProvider =
+ uno::Reference<lang::XMultiServiceFactory> (
+ xSM->createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))), uno::UNO_QUERY_THROW);
+
+ uno::Sequence<uno::Any> theArgs(1);
+ OUString aLocalePath(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Linguistic/General"));
+ theArgs[0] <<= aLocalePath;
+ uno::Reference<beans::XPropertySet> xProp(
+ theConfigProvider->createInstanceWithArguments(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess")), theArgs), uno::UNO_QUERY_THROW);
+
+ OUString aLang(RTL_CONSTASCII_USTRINGPARAM("en-US"));
+ uno::Any aAny;
+ aAny <<= aLang;
+ xProp->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("UILocale")), aAny);
+#endif
+
// initialise UCB-Broker
uno::Sequence<uno::Any> aUcbInitSequence(2);
aUcbInitSequence[0] <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Local"));
@@ -669,89 +693,66 @@ void Test::testMatrix()
}
}
-void Test::testDataPilot()
-{
- m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
- m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
-
- // Dimension definition
- struct {
- const char* pName; sheet::DataPilotFieldOrientation eOrient;
- } aFields[] = {
- { "Name", sheet::DataPilotFieldOrientation_ROW },
- { "Group", sheet::DataPilotFieldOrientation_COLUMN },
- { "Score", sheet::DataPilotFieldOrientation_DATA }
- };
-
- // Raw data
- struct {
- const char* pName; const char* pGroup; int nScore;
- } aData[] = {
- { "Andy", "A", 30 },
- { "Bruce", "A", 20 },
- { "Charlie", "B", 45 },
- { "David", "B", 12 },
- { "Edward", "C", 8 },
- { "Frank", "C", 15 },
- };
-
- // Expected output table content. 0 = empty cell
- const char* aOutputCheck[][5] = {
- { "Sum - Score", "Group", 0, 0, 0 },
- { "Name", "A", "B", "C", "Total Result" },
- { "Andy", "30", 0, 0, "30" },
- { "Bruce", "20", 0, 0, "20" },
- { "Charlie", 0, "45", 0, "45" },
- { "David", 0, "12", 0, "12" },
- { "Edward", 0, 0, "8", "8" },
- { "Frank", 0, 0, "15", "15" },
- { "Total Result", "50", "57", "23", "130" }
- };
-
- sal_uInt32 nFieldCount = SAL_N_ELEMENTS(aFields);
- sal_uInt32 nDataCount = SAL_N_ELEMENTS(aData);
-
- // Insert field names in row 0.
- for (sal_uInt32 i = 0; i < nFieldCount; ++i)
- m_pDoc->SetString(static_cast<SCCOL>(i), 0, 0, OUString(aFields[i].pName, strlen(aFields[i].pName), RTL_TEXTENCODING_UTF8));
-
- // Insert data into row 1 and downward.
- for (sal_uInt32 i = 0; i < nDataCount; ++i)
- {
- SCROW nRow = static_cast<SCROW>(i) + 1;
- m_pDoc->SetString(0, nRow, 0, OUString(aData[i].pName, strlen(aData[i].pName), RTL_TEXTENCODING_UTF8));
- m_pDoc->SetString(1, nRow, 0, OUString(aData[i].pGroup, strlen(aData[i].pGroup), RTL_TEXTENCODING_UTF8));
- m_pDoc->SetValue(2, nRow, 0, aData[i].nScore);
- }
-
- SCROW nRow1 = 0, nRow2 = 0;
- SCCOL nCol1 = 0, nCol2 = 0;
- m_pDoc->GetDataArea(0, nCol1, nRow1, nCol2, nRow2, true, false);
- CPPUNIT_ASSERT_MESSAGE("Data is expected to start from (col=0,row=0).", nCol1 == 0 && nRow1 == 0);
- CPPUNIT_ASSERT_MESSAGE("Unexpected data range.",
- nCol2 == static_cast<SCCOL>(nFieldCount - 1) && nRow2 == static_cast<SCROW>(nDataCount));
+namespace {
- SheetPrinter printer(nRow2 - nRow1 + 1, nCol2 - nCol1 + 1);
- for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
+template<int _Size>
+bool checkDPTableOutput(ScDocument* pDoc, const ScRange& aOutRange, const char* aOutputCheck[][_Size], const char* pCaption)
+{
+ const ScAddress& s = aOutRange.aStart;
+ const ScAddress& e = aOutRange.aEnd;
+ SheetPrinter printer(e.Row() - s.Row() + 1, e.Col() - s.Col() + 1);
+ SCROW nOutRowSize = e.Row() - s.Row() + 1;
+ SCCOL nOutColSize = e.Col() - s.Col() + 1;
+ for (SCROW nRow = 0; nRow < nOutRowSize; ++nRow)
{
- for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
+ for (SCCOL nCol = 0; nCol < nOutColSize; ++nCol)
{
- String aVal;
- m_pDoc->GetString(nCol, nRow, 0, aVal);
+ OUString aVal;
+ pDoc->GetString(nCol + s.Col(), nRow + s.Row(), s.Tab(), aVal);
printer.set(nRow, nCol, aVal);
+ const char* p = aOutputCheck[nRow][nCol];
+ if (p)
+ {
+ OUString aCheckVal = OUString::createFromAscii(p);
+ bool bEqual = aCheckVal.equals(aVal);
+ if (!bEqual)
+ {
+ cerr << "Expected: " << aCheckVal << " Actual: " << aVal << endl;
+ return false;
+ }
+ }
+ else if (!aVal.isEmpty())
+ {
+ cerr << "Empty cell expected" << endl;
+ return false;
+ }
}
}
- printer.print("Data sheet content");
- printer.clear();
+ printer.print(pCaption);
+ return true;
+}
+
+struct DPFieldDef
+{
+ const char* pName;
+ sheet::DataPilotFieldOrientation eOrient;
+};
- ScSheetSourceDesc aSheetDesc(m_pDoc);
- aSheetDesc.SetSourceRange(ScRange(nCol1, nRow1, 0, nCol2, nRow2, 0));
- ScDPObject* pDPObj = new ScDPObject(m_pDoc);
+ScDPObject* createDPFromRange(
+ ScDocument* pDoc, const ScRange& rRange, DPFieldDef aFields[], size_t nFieldCount,
+ bool bFilterButton)
+{
+ SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
+ SCCOL nCol1 = rRange.aStart.Col();
+
+ ScSheetSourceDesc aSheetDesc(pDoc);
+ aSheetDesc.SetSourceRange(rRange);
+ ScDPObject* pDPObj = new ScDPObject(pDoc);
pDPObj->SetSheetDesc(aSheetDesc);
pDPObj->SetOutRange(ScAddress(0, 0, 1));
ScPivotParam aParam;
pDPObj->FillOldParam(aParam);
- for (sal_uInt32 i = 0; i < nFieldCount; ++i)
+ for (size_t i = 0; i < nFieldCount; ++i)
{
vector<ScDPLabelData::Member> aMembers;
pDPObj->GetMembers(i, 0, aMembers);
@@ -763,7 +764,7 @@ void Test::testDataPilot()
aSaveData.SetRepeatIfEmpty(false);
aSaveData.SetColumnGrand(true);
aSaveData.SetRowGrand(true);
- aSaveData.SetFilterButton(false);
+ aSaveData.SetFilterButton(bFilterButton);
aSaveData.SetDrillDown(true);
// Check the sanity of the source range.
@@ -774,7 +775,7 @@ void Test::testDataPilot()
CPPUNIT_ASSERT_MESSAGE("source range contains no data!", nRow2 - nRow1 > 1);
// Set the dimension information.
- for (sal_uInt32 i = 0; i < nFieldCount; ++i)
+ for (size_t i = 0; i < nFieldCount; ++i)
{
OUString aDimName(aFields[i].pName, strlen(aFields[i].pName), RTL_TEXTENCODING_UTF8);
ScDPSaveDimension* pDim = aSaveData.GetDimensionByName(aDimName);
@@ -812,7 +813,7 @@ void Test::testDataPilot()
{
SCCOL nCol = nCol1 + static_cast<SCCOL>(i);
String aVal;
- m_pDoc->GetString(nCol, nRow, 0, aVal);
+ pDoc->GetString(nCol, nRow, 0, aVal);
// This call is just to populate the member list for each dimension.
ScDPSaveMember* pMem = pDim->GetMemberByName(aVal);
pMem->SetShowDetails(true);
@@ -827,12 +828,81 @@ void Test::testDataPilot()
pDPObj->SetSaveData(aSaveData);
pDPObj->SetAlive(true);
+ pDPObj->InvalidateData();
+
+ return pDPObj;
+}
+
+}
+
+void Test::testDataPilot()
+{
+ m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
+ m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
+
+ // Dimension definition
+ DPFieldDef aFields[] = {
+ { "Name", sheet::DataPilotFieldOrientation_ROW },
+ { "Group", sheet::DataPilotFieldOrientation_COLUMN },
+ { "Score", sheet::DataPilotFieldOrientation_DATA }
+ };
+
+ // Raw data
+ struct {
+ const char* pName; const char* pGroup; int nScore;
+ } aData[] = {
+ { "Andy", "A", 30 },
+ { "Bruce", "A", 20 },
+ { "Charlie", "B", 45 },
+ { "David", "B", 12 },
+ { "Edward", "C", 8 },
+ { "Frank", "C", 15 },
+ };
+
+ size_t nFieldCount = SAL_N_ELEMENTS(aFields);
+ size_t nDataCount = SAL_N_ELEMENTS(aData);
+
+ // Insert field names in row 0.
+ for (size_t i = 0; i < nFieldCount; ++i)
+ m_pDoc->SetString(static_cast<SCCOL>(i), 0, 0, OUString(aFields[i].pName, strlen(aFields[i].pName), RTL_TEXTENCODING_UTF8));
+
+ // Insert data into row 1 and downward.
+ for (size_t i = 0; i < nDataCount; ++i)
+ {
+ SCROW nRow = static_cast<SCROW>(i) + 1;
+ m_pDoc->SetString(0, nRow, 0, OUString(aData[i].pName, strlen(aData[i].pName), RTL_TEXTENCODING_UTF8));
+ m_pDoc->SetString(1, nRow, 0, OUString(aData[i].pGroup, strlen(aData[i].pGroup), RTL_TEXTENCODING_UTF8));
+ m_pDoc->SetValue(2, nRow, 0, aData[i].nScore);
+ }
+
+ SCROW nRow1 = 0, nRow2 = 0;
+ SCCOL nCol1 = 0, nCol2 = 0;
+ m_pDoc->GetDataArea(0, nCol1, nRow1, nCol2, nRow2, true, false);
+ CPPUNIT_ASSERT_MESSAGE("Data is expected to start from (col=0,row=0).", nCol1 == 0 && nRow1 == 0);
+ CPPUNIT_ASSERT_MESSAGE("Unexpected data range.",
+ nCol2 == static_cast<SCCOL>(nFieldCount - 1) && nRow2 == static_cast<SCROW>(nDataCount));
+
+ SheetPrinter printer(nRow2 - nRow1 + 1, nCol2 - nCol1 + 1);
+ for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
+ {
+ for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
+ {
+ String aVal;
+ m_pDoc->GetString(nCol, nRow, 0, aVal);
+ printer.set(nRow, nCol, aVal);
+ }
+ }
+ printer.print("Data sheet content");
+ printer.clear();
+
+ ScDPObject* pDPObj = createDPFromRange(
+ m_pDoc, ScRange(nCol1, nRow1, 0, nCol2, nRow2, 0), aFields, nFieldCount, false);
+
ScDPCollection* pDPs = m_pDoc->GetDPCollection();
bool bSuccess = pDPs->InsertNewTable(pDPObj);
CPPUNIT_ASSERT_MESSAGE("failed to insert a new datapilot object into document", bSuccess);
CPPUNIT_ASSERT_MESSAGE("there should be only one data pilot table.",
pDPs->GetCount() == 1);
- pDPObj->InvalidateData();
pDPObj->SetName(pDPs->CreateNewName());
bool bOverFlow = false;
@@ -841,41 +911,261 @@ void Test::testDataPilot()
pDPObj->Output(aOutRange.aStart);
aOutRange = pDPObj->GetOutRange();
- const ScAddress& s = aOutRange.aStart;
- const ScAddress& e = aOutRange.aEnd;
- printer.resize(e.Row() - s.Row() + 1, e.Col() - s.Col() + 1);
- SCROW nOutRowSize = SAL_N_ELEMENTS(aOutputCheck);
- SCCOL nOutColSize = SAL_N_ELEMENTS(aOutputCheck[0]);
- CPPUNIT_ASSERT_MESSAGE("Row size of the table output is not as expected.",
- nOutRowSize == (e.Row()-s.Row()+1));
- CPPUNIT_ASSERT_MESSAGE("Column size of the table output is not as expected.",
- nOutColSize == (e.Col()-s.Col()+1));
- for (SCROW nRow = 0; nRow < nOutRowSize; ++nRow)
{
- for (SCCOL nCol = 0; nCol < nOutColSize; ++nCol)
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][5] = {
+ { "Sum - Score", "Group", 0, 0, 0 },
+ { "Name", "A", "B", "C", "Total Result" },
+ { "Andy", "30", 0, 0, "30" },
+ { "Bruce", "20", 0, 0, "20" },
+ { "Charlie", 0, "45", 0, "45" },
+ { "David", 0, "12", 0, "12" },
+ { "Edward", 0, 0, "8", "8" },
+ { "Frank", 0, 0, "15", "15" },
+ { "Total Result", "50", "57", "23", "130" }
+ };
+
+ bSuccess = checkDPTableOutput<5>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Update the cell values.
+ double aData2[] = { 100, 200, 300, 400, 500, 600 };
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aData2); ++i)
+ {
+ SCROW nRow = i + 1;
+ m_pDoc->SetValue(2, nRow, 0, aData2[i]);
+ }
+
+ printer.resize(nRow2 - nRow1 + 1, nCol2 - nCol1 + 1);
+ for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
+ {
+ for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
{
String aVal;
- m_pDoc->GetString(nCol + s.Col(), nRow + s.Row(), s.Tab(), aVal);
+ m_pDoc->GetString(nCol, nRow, 0, aVal);
printer.set(nRow, nCol, aVal);
- const char* p = aOutputCheck[nRow][nCol];
- if (p)
- {
- OUString aCheckVal = OUString::createFromAscii(p);
- bool bEqual = aCheckVal.equals(aVal);
- if (!bEqual)
- {
- cerr << "Expected: " << aCheckVal << " Actual: " << aVal << endl;
- CPPUNIT_ASSERT_MESSAGE("Unexpected cell content.", false);
- }
- }
- else
- CPPUNIT_ASSERT_MESSAGE("Empty cell expected.", aVal.Len() == 0);
}
}
- printer.print("DataPilot table output");
+ printer.print("Data sheet content (modified)");
printer.clear();
- // Now, delete the datapilot object.
+ // Now, create a copy of the datapilot object for the updated table, but
+ // don't clear the cache which should force the copy to use the old data
+ // from the cache.
+ ScDPObject* pDPObj2 = new ScDPObject(*pDPObj);
+ pDPs->FreeTable(pDPObj);
+ pDPs->InsertNewTable(pDPObj2);
+
+ aOutRange = pDPObj2->GetOutRange();
+ pDPObj2->ClearSource();
+ pDPObj2->Output(aOutRange.aStart);
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][5] = {
+ { "Sum - Score", "Group", 0, 0, 0 },
+ { "Name", "A", "B", "C", "Total Result" },
+ { "Andy", "30", 0, 0, "30" },
+ { "Bruce", "20", 0, 0, "20" },
+ { "Charlie", 0, "45", 0, "45" },
+ { "David", 0, "12", 0, "12" },
+ { "Edward", 0, 0, "8", "8" },
+ { "Frank", 0, 0, "15", "15" },
+ { "Total Result", "50", "57", "23", "130" }
+ };
+
+ bSuccess = checkDPTableOutput<5>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (from old cache)");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // This time clear the cache to refresh the data from the source range.
+ CPPUNIT_ASSERT_MESSAGE("This datapilot should be based on sheet data.", pDPObj2->IsSheetData());
+ ScDPCollection::SheetCaches& rCaches = pDPs->GetSheetCaches();
+ const ScSheetSourceDesc* pDesc = pDPObj2->GetSheetDesc();
+ rCaches.removeCache(pDesc->GetSourceRange());
+ pDPObj2->ClearSource();
+ pDPObj2->Output(aOutRange.aStart);
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][5] = {
+ { "Sum - Score", "Group", 0, 0, 0 },
+ { "Name", "A", "B", "C", "Total Result" },
+ { "Andy", "100", 0, 0, "100" },
+ { "Bruce", "200", 0, 0, "200" },
+ { "Charlie", 0, "300", 0, "300" },
+ { "David", 0, "400", 0, "400" },
+ { "Edward", 0, 0, "500", "500" },
+ { "Frank", 0, 0, "600", "600" },
+ { "Total Result", "300", "700", "1100", "2100" }
+ };
+
+ bSuccess = checkDPTableOutput<5>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (refreshed)");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ pDPs->FreeTable(pDPObj2);
+ CPPUNIT_ASSERT_MESSAGE("There shouldn't be any data pilot table stored with the document.",
+ pDPs->GetCount() == 0);
+
+ m_pDoc->DeleteTab(1);
+ m_pDoc->DeleteTab(0);
+}
+
+void Test::testDataPilotFilters()
+{
+ m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
+ m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
+
+ // Dimension definition
+ DPFieldDef aFields[] = {
+ { "Name", sheet::DataPilotFieldOrientation_HIDDEN },
+ { "Group1", sheet::DataPilotFieldOrientation_HIDDEN },
+ { "Group2", sheet::DataPilotFieldOrientation_PAGE },
+ { "Val1", sheet::DataPilotFieldOrientation_DATA },
+ { "Val2", sheet::DataPilotFieldOrientation_DATA }
+ };
+
+ // Raw data
+ const char* aData[][5] = {
+ { "A", "1", "A", "1", "10" },
+ { "B", "1", "A", "1", "10" },
+ { "C", "1", "B", "1", "10" },
+ { "D", "1", "B", "1", "10" },
+ { "E", "2", "A", "1", "10" },
+ { "F", "2", "A", "1", "10" },
+ { "G", "2", "B", "1", "10" },
+ { "H", "2", "B", "1", "10" }
+ };
+
+ size_t nFieldCount = SAL_N_ELEMENTS(aFields);
+ size_t nDataCount = SAL_N_ELEMENTS(aData);
+
+ // Insert field names in row 0.
+ for (size_t i = 0; i < nFieldCount; ++i)
+ m_pDoc->SetString(static_cast<SCCOL>(i), 0, 0, OUString(aFields[i].pName, strlen(aFields[i].pName), RTL_TEXTENCODING_UTF8));
+
+ // Insert data into row 1 and downward.
+ for (size_t i = 0; i < nDataCount; ++i)
+ {
+ SCROW nRow = static_cast<SCROW>(i) + 1;
+ for (size_t j = 0; j < nFieldCount; ++j)
+ {
+ SCCOL nCol = static_cast<SCCOL>(j);
+ m_pDoc->SetString(
+ nCol, nRow, 0, OUString(aData[i][j], strlen(aData[i][j]), RTL_TEXTENCODING_UTF8));
+ }
+ }
+
+ SCROW nRow1 = 0, nRow2 = 0;
+ SCCOL nCol1 = 0, nCol2 = 0;
+ m_pDoc->GetDataArea(0, nCol1, nRow1, nCol2, nRow2, true, false);
+ CPPUNIT_ASSERT_MESSAGE("Data is expected to start from (col=0,row=0).", nCol1 == 0 && nRow1 == 0);
+ CPPUNIT_ASSERT_MESSAGE("Unexpected data range.",
+ nCol2 == static_cast<SCCOL>(nFieldCount - 1) && nRow2 == static_cast<SCROW>(nDataCount));
+
+ SheetPrinter printer(nRow2 - nRow1 + 1, nCol2 - nCol1 + 1);
+ for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
+ {
+ for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
+ {
+ String aVal;
+ m_pDoc->GetString(nCol, nRow, 0, aVal);
+ printer.set(nRow, nCol, aVal);
+ }
+ }
+ printer.print("Data sheet content");
+ printer.clear();
+
+ ScDPObject* pDPObj = createDPFromRange(
+ m_pDoc, ScRange(nCol1, nRow1, 0, nCol2, nRow2, 0), aFields, nFieldCount, true);
+
+ ScDPCollection* pDPs = m_pDoc->GetDPCollection();
+ bool bSuccess = pDPs->InsertNewTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("failed to insert a new datapilot object into document", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("there should be only one data pilot table.",
+ pDPs->GetCount() == 1);
+ pDPObj->SetName(pDPs->CreateNewName());
+
+ bool bOverFlow = false;
+ ScRange aOutRange = pDPObj->GetNewOutputRange(bOverFlow);
+ CPPUNIT_ASSERT_MESSAGE("Table overflow!?", !bOverFlow);
+
+ pDPObj->Output(aOutRange.aStart);
+ aOutRange = pDPObj->GetOutRange();
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "Filter", 0 },
+ { "Group2", "- all -" },
+ { 0, 0 },
+ { "Data", 0 },
+ { "Sum - Val1", "8" },
+ { "Sum - Val2", "80" },
+ { "Total Sum - Val1", "8" },
+ { "Total Sum - Val2", "80" }
+ };
+
+ bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (unfiltered)");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Set current page of 'Group2' to 'A'.
+ ScDPSaveData aSaveData(*pDPObj->GetSaveData());
+ ScDPSaveDimension* pDim = aSaveData.GetDimensionByName(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Group2")));
+ CPPUNIT_ASSERT_MESSAGE("Dimension not found", pDim);
+ OUString aPage(RTL_CONSTASCII_USTRINGPARAM("A"));
+ pDim->SetCurrentPage(&aPage);
+ pDPObj->SetSaveData(aSaveData);
+ pDPObj->Output(aOutRange.aStart);
+ aOutRange = pDPObj->GetOutRange();
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "Filter", 0 },
+ { "Group2", "A" },
+ { 0, 0 },
+ { "Data", 0 },
+ { "Sum - Val1", "4" },
+ { "Sum - Val2", "40" },
+ { "Total Sum - Val1", "4" },
+ { "Total Sum - Val2", "40" }
+ };
+
+ bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (filtered by page)");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Set query filter.
+ ScSheetSourceDesc aDesc(*pDPObj->GetSheetDesc());
+ ScQueryParam aQueryParam(aDesc.GetQueryParam());
+ CPPUNIT_ASSERT_MESSAGE("There should be at least one query entry.", aQueryParam.GetEntryCount() > 0);
+ ScQueryEntry& rEntry = aQueryParam.GetEntry(0);
+ rEntry.bDoQuery = true;
+ rEntry.nField = 1; // Group1
+ rEntry.nVal = 1;
+ aDesc.SetQueryParam(aQueryParam);
+ pDPObj->SetSheetDesc(aDesc);
+ pDPObj->Output(aOutRange.aStart);
+ aOutRange = pDPObj->GetOutRange();
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "Filter", 0 },
+ { "Group2", "A" },
+ { 0, 0 },
+ { "Data", 0 },
+ { "Sum - Val1", "2" },
+ { "Sum - Val2", "20" },
+ { "Total Sum - Val1", "2" },
+ { "Total Sum - Val2", "20" }
+ };
+
+ bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (filtered by query)");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
pDPs->FreeTable(pDPObj);
CPPUNIT_ASSERT_MESSAGE("There shouldn't be any data pilot table stored with the document.",
pDPs->GetCount() == 0);
diff --git a/sc/source/core/data/dpcachetable.cxx b/sc/source/core/data/dpcachetable.cxx
index 67b55e7f0155..b177acff7be7 100644
--- a/sc/source/core/data/dpcachetable.cxx
+++ b/sc/source/core/data/dpcachetable.cxx
@@ -73,6 +73,17 @@ static sal_Bool lcl_HasQueryEntry( const ScQueryParam& rParam )
// ----------------------------------------------------------------------------
+bool ScDPCacheTable::RowFlag::isActive() const
+{
+ return mbShowByFilter && mbShowByPage;
+}
+
+ScDPCacheTable::RowFlag::RowFlag() :
+ mbShowByFilter(true),
+ mbShowByPage(true)
+{
+}
+
ScDPCacheTable::FilterItem::FilterItem() :
mfValue(0.0),
mbHasValue(false)
@@ -158,14 +169,13 @@ ScDPCacheTable::Criterion::Criterion() :
// ----------------------------------------------------------------------------
-ScDPCacheTable::ScDPCacheTable(ScDPCache* pCache) :
+ScDPCacheTable::ScDPCacheTable(const ScDPCache* pCache) :
mpCache(pCache)
{
}
ScDPCacheTable::~ScDPCacheTable()
{
- delete mpCache;
}
sal_Int32 ScDPCacheTable::getRowSize() const
@@ -181,13 +191,13 @@ sal_Int32 ScDPCacheTable::getColSize() const
void ScDPCacheTable::fillTable(
const ScQueryParam& rQuery, bool* pSpecial, bool bIgnoreEmptyRows, bool bRepeatIfEmpty)
{
- const SCROW nRowCount = getRowSize();
- const SCCOL nColCount = (SCCOL) getColSize();
- if ( nRowCount <= 0 || nColCount <= 0)
+ const SCROW nRowCount = getRowSize();
+ const SCCOL nColCount = (SCCOL) getColSize();
+ if ( nRowCount <= 0 || nColCount <= 0)
return;
- maRowsVisible.clear();
- maRowsVisible.reserve(nRowCount);
+ maRowFlags.clear();
+ maRowFlags.reserve(nRowCount);
// Initialize field entries container.
maFieldEntries.clear();
@@ -199,7 +209,7 @@ void ScDPCacheTable::fillTable(
SCROW nMemCount = getCache()->GetDimMemberCount( nCol );
if ( nMemCount )
{
- std::vector< SCROW > pAdded( nMemCount, -1 );
+ std::vector<SCROW> aAdded( nMemCount, -1 );
for (SCROW nRow = 0; nRow < nRowCount; ++nRow )
{
@@ -207,24 +217,27 @@ void ScDPCacheTable::fillTable(
SCROW nOrder = getOrder( nCol, nIndex );
if ( nCol == 0 )
- maRowsVisible.push_back(false);
+ {
+ maRowFlags.push_back(RowFlag());
+ maRowFlags.back().mbShowByFilter = false;
+ }
if ( lcl_HasQueryEntry(rQuery) &&
!getCache()->ValidQuery( nRow , rQuery, pSpecial ) )
continue;
if ( bIgnoreEmptyRows && getCache()->IsRowEmpty( nRow ) )
continue;
- // Insert a new row into cache table.
+
if ( nCol == 0 )
- maRowsVisible.back() = true;
+ maRowFlags.back().mbShowByFilter = true;
- pAdded[nOrder] = nIndex;
+ aAdded[nOrder] = nIndex;
}
maFieldEntries.push_back( vector<SCROW>() );
for ( SCROW nRow = 0; nRow < nMemCount; nRow++ )
{
- if ( pAdded[nRow] != -1 )
- maFieldEntries.back().push_back( pAdded[nRow] );
+ if ( aAdded[nRow] != -1 )
+ maFieldEntries.back().push_back( aAdded[nRow] );
}
}
}
@@ -237,8 +250,8 @@ void ScDPCacheTable::fillTable()
if ( nRowCount <= 0 || nColCount <= 0)
return;
- maRowsVisible.clear();
- maRowsVisible.reserve(nRowCount);
+ maRowFlags.clear();
+ maRowFlags.reserve(nRowCount);
// Initialize field entries container.
@@ -259,8 +272,10 @@ void ScDPCacheTable::fillTable()
SCROW nOrder = getOrder( nCol, nIndex );
if ( nCol == 0 )
- maRowsVisible.push_back(true);
-
+ {
+ maRowFlags.push_back(RowFlag());
+ maRowFlags.back().mbShowByFilter = true;
+ }
pAdded[nOrder] = nIndex;
}
@@ -276,24 +291,24 @@ void ScDPCacheTable::fillTable()
bool ScDPCacheTable::isRowActive(sal_Int32 nRow) const
{
- if (nRow < 0 || static_cast<size_t>(nRow) >= maRowsVisible.size())
+ if (nRow < 0 || static_cast<size_t>(nRow) >= maRowFlags.size())
// row index out of bound
return false;
- return maRowsVisible[nRow];
+ return maRowFlags[nRow].isActive();
}
void ScDPCacheTable::filterByPageDimension(const vector<Criterion>& rCriteria, const boost::unordered_set<sal_Int32>& rRepeatIfEmptyDims)
{
sal_Int32 nRowSize = getRowSize();
- if (nRowSize != static_cast<sal_Int32>(maRowsVisible.size()))
+ if (nRowSize != static_cast<sal_Int32>(maRowFlags.size()))
{
// sizes of the two tables differ!
return;
}
for (sal_Int32 nRow = 0; nRow < nRowSize; ++nRow)
- maRowsVisible[nRow] = isRowQualified(nRow, rCriteria, rRepeatIfEmptyDims);
+ maRowFlags[nRow].mbShowByPage = isRowQualified(nRow, rCriteria, rRepeatIfEmptyDims);
}
const ScDPItemData* ScDPCacheTable::getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const
@@ -359,7 +374,7 @@ void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< S
for (sal_Int32 nRow = 0; nRow < nRowSize; ++nRow)
{
- if (!maRowsVisible[nRow])
+ if (!maRowFlags[nRow].isActive())
// This row is filtered out.
continue;
@@ -401,8 +416,7 @@ SCROW ScDPCacheTable::getOrder(long nDim, SCROW nIndex) const
void ScDPCacheTable::clear()
{
maFieldEntries.clear();
- maRowsVisible.clear();
- delete mpCache;
+ maRowFlags.clear();
mpCache = NULL;
}
@@ -411,9 +425,8 @@ bool ScDPCacheTable::empty() const
return mpCache == NULL || maFieldEntries.empty();
}
-void ScDPCacheTable::setCache(ScDPCache* p)
+void ScDPCacheTable::setCache(const ScDPCache* p)
{
- delete mpCache;
mpCache = p;
}
@@ -448,9 +461,4 @@ const ScDPCache* ScDPCacheTable::getCache() const
return mpCache;
}
-ScDPCache* ScDPCacheTable::getCache()
-{
- return mpCache;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
index 97e2f0db1bbc..9589fe838f7a 100644
--- a/sc/source/core/data/dpobject.cxx
+++ b/sc/source/core/data/dpobject.cxx
@@ -54,6 +54,7 @@
#include "dpglobal.hxx"
#include "globstr.hrc"
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sdb/XCompletedExecution.hpp>
#include <com/sun/star/sheet/GeneralFunction.hpp>
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
@@ -70,13 +71,15 @@
#include <com/sun/star/sheet/XDrillDownDataSupplier.hpp>
#include <comphelper/processfactory.hxx>
+#include <comphelper/types.hxx>
#include <sal/macros.h>
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
#include <svl/zforlist.hxx> // IsNumberFormat
+#include <vcl/msgbox.hxx>
#include <vector>
-#include <stdio.h>
+#include <memory>
using namespace com::sun::star;
using ::std::vector;
@@ -95,6 +98,13 @@ using ::com::sun::star::sheet::XDimensionsSupplier;
using ::com::sun::star::beans::XPropertySet;
using ::rtl::OUString;
+#define SC_SERVICE_ROWSET "com.sun.star.sdb.RowSet"
+#define SC_SERVICE_INTHANDLER "com.sun.star.task.InteractionHandler"
+
+#define SC_DBPROP_DATASOURCENAME "DataSourceName"
+#define SC_DBPROP_COMMAND "Command"
+#define SC_DBPROP_COMMANDTYPE "CommandType"
+
// -----------------------------------------------------------------------
#define SCDPSOURCE_SERVICE "com.sun.star.sheet.DataPilotSource"
@@ -417,7 +427,7 @@ ScDPTableData* ScDPObject::GetTableData()
OSL_FAIL("no source descriptor");
pSheetDesc = new ScSheetSourceDesc(pDoc); // dummy defaults
}
- ScDPCache* pCache = pSheetDesc->CreateCache();
+ const ScDPCache* pCache = pSheetDesc->CreateCache();
if (pCache)
pData.reset(new ScSheetDPData(pDoc, *pSheetDesc, pCache));
}
@@ -1843,17 +1853,20 @@ sal_Bool ScDPObject::FillOldParam(ScPivotParam& rParam) const
rParam.nTab = aOutRange.aStart.Tab();
// ppLabelArr / nLabels is not changed
- SCCOL nColAdd = pSheetDesc->GetSourceRange().aStart.Col();
+ SCCOL nSrcColOffset = 0;
+ if (IsSheetData())
+ // source data column offset is only for internal sheet source.
+ nSrcColOffset = pSheetDesc->GetSourceRange().aStart.Col();
bool bAddData = ( lcl_GetDataGetOrientation( xSource ) == sheet::DataPilotFieldOrientation_HIDDEN );
lcl_FillOldFields(
- rParam.maPageFields, xSource, sheet::DataPilotFieldOrientation_PAGE, nColAdd, false);
+ rParam.maPageFields, xSource, sheet::DataPilotFieldOrientation_PAGE, nSrcColOffset, false);
lcl_FillOldFields(
- rParam.maColFields, xSource, sheet::DataPilotFieldOrientation_COLUMN, nColAdd, bAddData);
+ rParam.maColFields, xSource, sheet::DataPilotFieldOrientation_COLUMN, nSrcColOffset, bAddData);
lcl_FillOldFields(
- rParam.maRowFields, xSource, sheet::DataPilotFieldOrientation_ROW, nColAdd, false);
+ rParam.maRowFields, xSource, sheet::DataPilotFieldOrientation_ROW, nSrcColOffset, false);
lcl_FillOldFields(
- rParam.maDataFields, xSource, sheet::DataPilotFieldOrientation_DATA, nColAdd, false);
+ rParam.maDataFields, xSource, sheet::DataPilotFieldOrientation_DATA, nSrcColOffset, false);
uno::Reference<beans::XPropertySet> xProp( xSource, uno::UNO_QUERY );
if (xProp.is())
@@ -2383,15 +2396,148 @@ uno::Reference<sheet::XDimensionsSupplier> ScDPObject::CreateSource( const ScDPS
return xRet;
}
-// ----------------------------------------------------------------------------
+ScDPCollection::SheetCaches::SheetCaches(ScDocument* pDoc) : mpDoc(pDoc) {}
+
+const ScDPCache* ScDPCollection::SheetCaches::getCache(const ScRange& rRange)
+{
+ CachesType::const_iterator itr = maCaches.find(rRange);
+ if (itr != maCaches.end())
+ // already cached.
+ return itr->second;
+
+ ::std::auto_ptr<ScDPCache> pCache(new ScDPCache(mpDoc));
+ pCache->InitFromDoc(mpDoc, rRange);
+ const ScDPCache* p = pCache.get();
+ maCaches.insert(rRange, pCache);
+ return p;
+}
+
+void ScDPCollection::SheetCaches::removeCache(const ScRange& rRange)
+{
+ CachesType::iterator itr = maCaches.find(rRange);
+ if (itr != maCaches.end())
+ maCaches.erase(itr);
+}
+
+ScDPCollection::NameCaches::NameCaches(ScDocument* pDoc) : mpDoc(pDoc) {}
+
+const ScDPCache* ScDPCollection::NameCaches::getCache(const OUString& rName, const ScRange& rRange)
+{
+ CachesType::const_iterator itr = maCaches.find(rName);
+ if (itr != maCaches.end())
+ // already cached.
+ return itr->second;
+
+ ::std::auto_ptr<ScDPCache> pCache(new ScDPCache(mpDoc));
+ pCache->InitFromDoc(mpDoc, rRange);
+ const ScDPCache* p = pCache.get();
+ maCaches.insert(rName, pCache);
+ return p;
+}
+
+void ScDPCollection::NameCaches::removeCache(const OUString& rName)
+{
+ CachesType::iterator itr = maCaches.find(rName);
+ if (itr != maCaches.end())
+ maCaches.erase(itr);
+}
+
+ScDPCollection::DBType::DBType(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand) :
+ mnSdbType(nSdbType), maDBName(rDBName), maCommand(rCommand) {}
+
+ScDPCollection::DBCaches::DBCaches(ScDocument* pDoc) : mpDoc(pDoc) {}
+
+const ScDPCache* ScDPCollection::DBCaches::getCache(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand)
+{
+ DBType aType(nSdbType, rDBName, rCommand);
+ CachesType::const_iterator itr = maCaches.find(aType);
+ if (itr != maCaches.end())
+ // already cached.
+ return itr->second;
+
+ uno::Reference<sdbc::XRowSet> xRowSet ;
+ try
+ {
+ xRowSet = uno::Reference<sdbc::XRowSet>(
+ comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY );
+ DBG_ASSERT( xRowProp.is(), "can't get RowSet" );
+ if ( xRowProp.is() )
+ {
+ //
+ // set source parameters
+ //
+ uno::Any aAny;
+ aAny <<= rDBName;
+ xRowProp->setPropertyValue(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_DATASOURCENAME)), aAny );
+
+ aAny <<= rCommand;
+ xRowProp->setPropertyValue(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny );
+
+ aAny <<= nSdbType;
+ xRowProp->setPropertyValue(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny );
+
+ uno::Reference<sdb::XCompletedExecution> xExecute( xRowSet, uno::UNO_QUERY );
+ if ( xExecute.is() )
+ {
+ uno::Reference<task::XInteractionHandler> xHandler(
+ comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_INTHANDLER )) ),
+ uno::UNO_QUERY);
+ xExecute->executeWithCompletion( xHandler );
+ }
+ else
+ xRowSet->execute();
+ }
+ }
+ catch ( sdbc::SQLException& rError )
+ {
+ //! store error message
+ InfoBox aInfoBox( 0, String(rError.Message) );
+ aInfoBox.Execute();
+ return NULL;
+ }
+ catch ( uno::Exception& )
+ {
+ OSL_FAIL("Unexpected exception in database");
+ return NULL;
+ }
+
+ ::std::auto_ptr<ScDPCache> pCache(new ScDPCache(mpDoc));
+ SvNumberFormatter aFormat(mpDoc->GetServiceManager(), ScGlobal::eLnge);
+ pCache->InitFromDataBase(xRowSet, *aFormat.GetNullDate());
+ ::comphelper::disposeComponent(xRowSet);
+ const ScDPCache* p = pCache.get();
+ maCaches.insert(aType, pCache);
+ return p;
+}
+
+void ScDPCollection::DBCaches::removeCache(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand)
+{
+ DBType aType(nSdbType, rDBName, rCommand);
+ CachesType::iterator itr = maCaches.find(aType);
+ if (itr != maCaches.end())
+ maCaches.erase(itr);
+}
ScDPCollection::ScDPCollection(ScDocument* pDocument) :
- pDoc( pDocument )
+ pDoc( pDocument ),
+ maSheetCaches(pDocument),
+ maNameCaches(pDocument),
+ maDBCaches(pDocument)
{
}
ScDPCollection::ScDPCollection(const ScDPCollection& r) :
- pDoc(r.pDoc)
+ pDoc(r.pDoc),
+ maSheetCaches(r.pDoc),
+ maNameCaches(r.pDoc),
+ maDBCaches(r.pDoc)
{
}
@@ -2584,4 +2730,30 @@ bool ScDPCollection::HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const
return pMergeAttr->HasDPTable();
}
+ScDPCollection::SheetCaches& ScDPCollection::GetSheetCaches()
+{
+ return maSheetCaches;
+}
+
+ScDPCollection::NameCaches& ScDPCollection::GetNameCaches()
+{
+ return maNameCaches;
+}
+
+ScDPCollection::DBCaches& ScDPCollection::GetDBCaches()
+{
+ return maDBCaches;
+}
+
+bool operator<(const ScDPCollection::DBType& left, const ScDPCollection::DBType& right)
+{
+ if (left.mnSdbType != right.mnSdbType)
+ return left.mnSdbType < right.mnSdbType;
+
+ if (!left.maDBName.equals(right.maDBName))
+ return left.maDBName < right.maDBName;
+
+ return left.maCommand < right.maCommand;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index c0455819285c..8351c2f3dd28 100644
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -56,7 +56,6 @@
#include "scresid.hxx"
#include "unonames.hxx"
#include "sc.hrc"
-#include "scdpoutputimpl.hxx"
#include "dpglobal.hxx"
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -83,15 +82,16 @@ using ::rtl::OUString;
#define DP_PROP_POSITION "Position"
#define DP_PROP_USEDHIERARCHY "UsedHierarchy"
#define DP_PROP_ISDATALAYOUT "IsDataLayoutDimension"
-#define DP_PROP_NUMBERFORMAT "NumberFormat"
#define DP_PROP_FILTER "Filter"
#define DP_PROP_COLUMNGRAND "ColumnGrand"
#define DP_PROP_ROWGRAND "RowGrand"
#define DP_PROP_SUBTOTALS "SubTotals"
-// -----------------------------------------------------------------------
+#define SC_DP_FRAME_INNER_BOLD 20
+#define SC_DP_FRAME_OUTER_BOLD 40
+
+#define SC_DP_FRAME_COLOR Color(0,0,0) //( 0x20, 0x40, 0x68 )
-//! dynamic!!!
#define SC_DPOUT_MAXLEVELS 256
struct ScDPOutLevelData
@@ -121,7 +121,187 @@ struct ScDPOutLevelData
//! bug (73840) in uno::Sequence - copy and then assign doesn't work!
};
-// -----------------------------------------------------------------------
+namespace {
+
+bool lcl_compareColfuc ( SCCOL i, SCCOL j) { return (i<j); }
+bool lcl_compareRowfuc ( SCROW i, SCROW j) { return (i<j); }
+
+class ScDPOutputImpl
+{
+ ScDocument* mpDoc;
+ sal_uInt16 mnTab;
+ ::std::vector< bool > mbNeedLineCols;
+ ::std::vector< SCCOL > mnCols;
+
+ ::std::vector< bool > mbNeedLineRows;
+ ::std::vector< SCROW > mnRows;
+
+ SCCOL mnTabStartCol;
+ SCROW mnTabStartRow;
+ SCCOL mnMemberStartCol;
+ SCROW mnMemberStartRow;
+
+ SCCOL mnDataStartCol;
+ SCROW mnDataStartRow;
+ SCCOL mnTabEndCol;
+ SCROW mnTabEndRow;
+
+public:
+ ScDPOutputImpl( ScDocument* pDoc, sal_uInt16 nTab,
+ SCCOL nTabStartCol,
+ SCROW nTabStartRow,
+ SCCOL nMemberStartCol,
+ SCROW nMemberStartRow,
+ SCCOL nDataStartCol,
+ SCROW nDataStartRow,
+ SCCOL nTabEndCol,
+ SCROW nTabEndRow );
+ bool AddRow( SCROW nRow );
+ bool AddCol( SCCOL nCol );
+
+ void OutputDataArea();
+ void OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, bool bHori = false );
+
+};
+
+void ScDPOutputImpl::OutputDataArea()
+{
+ AddRow( mnDataStartRow );
+ AddCol( mnDataStartCol );
+
+ mnCols.push_back( mnTabEndCol+1); //set last row bottom
+ mnRows.push_back( mnTabEndRow+1); //set last col bottom
+
+ bool bAllRows = ( ( mnTabEndRow - mnDataStartRow + 2 ) == (SCROW) mnRows.size() );
+
+ std::sort( mnCols.begin(), mnCols.end(), lcl_compareColfuc );
+ std::sort( mnRows.begin(), mnRows.end(), lcl_compareRowfuc );
+
+ for( SCCOL nCol = 0; nCol < (SCCOL)mnCols.size()-1; nCol ++ )
+ {
+ if ( !bAllRows )
+ {
+ if ( nCol < (SCCOL)mnCols.size()-2)
+ {
+ for ( SCROW i = nCol%2; i < (SCROW)mnRows.size()-2; i +=2 )
+ OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
+ if ( mnRows.size()>=2 )
+ OutputBlockFrame( mnCols[nCol], mnRows[mnRows.size()-2], mnCols[nCol+1]-1, mnRows[mnRows.size()-1]-1 );
+ }
+ else
+ {
+ for ( SCROW i = 0 ; i < (SCROW)mnRows.size()-1; i++ )
+ OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
+ }
+ }
+ else
+ OutputBlockFrame( mnCols[nCol], mnRows.front(), mnCols[nCol+1]-1, mnRows.back()-1, bAllRows );
+ }
+ //out put rows area outer framer
+ if ( mnTabStartCol != mnDataStartCol )
+ {
+ if ( mnTabStartRow != mnDataStartRow )
+ OutputBlockFrame( mnTabStartCol, mnTabStartRow, mnDataStartCol-1, mnDataStartRow-1 );
+ OutputBlockFrame( mnTabStartCol, mnDataStartRow, mnDataStartCol-1, mnTabEndRow );
+ }
+ //out put cols area outer framer
+ OutputBlockFrame( mnDataStartCol, mnTabStartRow, mnTabEndCol, mnDataStartRow-1 );
+}
+
+ScDPOutputImpl::ScDPOutputImpl( ScDocument* pDoc, sal_uInt16 nTab,
+ SCCOL nTabStartCol,
+ SCROW nTabStartRow,
+ SCCOL nMemberStartCol,
+ SCROW nMemberStartRow,
+ SCCOL nDataStartCol,
+ SCROW nDataStartRow,
+ SCCOL nTabEndCol,
+ SCROW nTabEndRow ):
+ mpDoc( pDoc ),
+ mnTab( nTab ),
+ mnTabStartCol( nTabStartCol ),
+ mnTabStartRow( nTabStartRow ),
+ mnMemberStartCol( nMemberStartCol),
+ mnMemberStartRow( nMemberStartRow),
+ mnDataStartCol ( nDataStartCol ),
+ mnDataStartRow ( nDataStartRow ),
+ mnTabEndCol( nTabEndCol ),
+ mnTabEndRow( nTabEndRow )
+{
+ mbNeedLineCols.resize( nTabEndCol-nDataStartCol+1, false );
+ mbNeedLineRows.resize( nTabEndRow-nDataStartRow+1, false );
+
+}
+
+bool ScDPOutputImpl::AddRow( SCROW nRow )
+{
+ if ( !mbNeedLineRows[ nRow - mnDataStartRow ] )
+ {
+ mbNeedLineRows[ nRow - mnDataStartRow ] = true;
+ mnRows.push_back( nRow );
+ return true;
+ }
+ else
+ return false;
+}
+
+bool ScDPOutputImpl::AddCol( SCCOL nCol )
+{
+
+ if ( !mbNeedLineCols[ nCol - mnDataStartCol ] )
+ {
+ mbNeedLineCols[ nCol - mnDataStartCol ] = true;
+ mnCols.push_back( nCol );
+ return true;
+ }
+ else
+ return false;
+}
+
+void ScDPOutputImpl::OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, bool bHori )
+{
+ Color color = SC_DP_FRAME_COLOR;
+ ::editeng::SvxBorderLine aLine( &color, SC_DP_FRAME_INNER_BOLD );
+ ::editeng::SvxBorderLine aOutLine( &color, SC_DP_FRAME_OUTER_BOLD );
+
+ SvxBoxItem aBox( ATTR_BORDER );
+
+ if ( nStartCol == mnTabStartCol )
+ aBox.SetLine(&aOutLine, BOX_LINE_LEFT);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_LEFT);
+
+ if ( nStartRow == mnTabStartRow )
+ aBox.SetLine(&aOutLine, BOX_LINE_TOP);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_TOP);
+
+ if ( nEndCol == mnTabEndCol ) //bottom row
+ aBox.SetLine(&aOutLine, BOX_LINE_RIGHT);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_RIGHT);
+
+ if ( nEndRow == mnTabEndRow ) //bottom
+ aBox.SetLine(&aOutLine, BOX_LINE_BOTTOM);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_BOTTOM);
+
+
+ SvxBoxInfoItem aBoxInfo( ATTR_BORDER_INNER );
+ aBoxInfo.SetValid(VALID_VERT,false );
+ if ( bHori )
+ {
+ aBoxInfo.SetValid(VALID_HORI,sal_True);
+ aBoxInfo.SetLine( &aLine, BOXINFO_LINE_HORI );
+ }
+ else
+ aBoxInfo.SetValid(VALID_HORI,false );
+
+ aBoxInfo.SetValid(VALID_DISTANCE,false);
+
+ mpDoc->ApplyFrameAreaTab( ScRange( nStartCol, nStartRow, mnTab, nEndCol, nEndRow , mnTab ), &aBox, &aBoxInfo );
+
+}
void lcl_SetStyleById( ScDocument* pDoc, SCTAB nTab,
SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
@@ -214,7 +394,7 @@ void lcl_FillNumberFormats( sal_uInt32*& rFormats, long& rCount,
aDataNames[nDataCount] = String( xDimName->getName() );
long nFormat = ScUnoHelpFunctions::GetLongProperty(
xDimProp,
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_NUMBERFORMAT)) );
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_NUMFMT)) );
nDataFormats[nDataCount] = nFormat;
if ( nFormat != 0 )
bAnySet = sal_True;
@@ -280,7 +460,7 @@ sal_uInt32 lcl_GetFirstNumberFormat( const uno::Reference<container::XIndexAcces
{
long nFormat = ScUnoHelpFunctions::GetLongProperty(
xDimProp,
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_NUMBERFORMAT)) );
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_NUMFMT)) );
return nFormat; // use format from first found data dimension
}
@@ -349,8 +529,10 @@ uno::Sequence<sheet::MemberResult> lcl_GetSelectedPageAsResult( const uno::Refer
return aRet;
}
+}
+
ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsSupplier>& xSrc,
- const ScAddress& rPos, sal_Bool bFilter ) :
+ const ScAddress& rPos, bool bFilter ) :
pDoc( pD ),
xSource( xSrc ),
aStartPos( rPos ),
@@ -526,7 +708,7 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS
}
catch (uno::RuntimeException&)
{
- bResultsError = sal_True;
+ bResultsError = true;
}
}
@@ -618,7 +800,7 @@ void ScDPOutput::HeaderCell( SCCOL nCol, SCROW nRow, SCTAB nTab,
if ( nFlags & sheet::MemberResultFlags::SUBTOTAL )
{
- OutputImpl outputimp( pDoc, nTab,
+ ScDPOutputImpl outputimp( pDoc, nTab,
nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow,
nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow );
//! limit frames to horizontal or vertical?
@@ -695,7 +877,7 @@ void ScDPOutput::CalcSizes()
if ( aStartPos.Col() + nRowFieldCount + nColCount - 1 > MAXCOL ||
aStartPos.Row() + nPageSize + nHeaderSize + nColFieldCount + nRowCount > MAXROW )
{
- bSizeOverflow = sal_True;
+ bSizeOverflow = true;
}
nTabStartCol = aStartPos.Col();
@@ -715,7 +897,7 @@ void ScDPOutput::CalcSizes()
nTabEndRow = nDataStartRow + (SCROW)nRowCount - 1;
else
nTabEndRow = nDataStartRow; // single row will remain empty
- bSizesValid = sal_True;
+ bSizesValid = true;
}
}
@@ -838,7 +1020,7 @@ void ScDPOutput::Output()
STR_PIVOT_STYLE_INNER );
// output column headers:
- OutputImpl outputimp( pDoc, nTab,
+ ScDPOutputImpl outputimp( pDoc, nTab,
nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow,
nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow );
for (nField=0; nField<nColFieldCount; nField++)
diff --git a/sc/source/core/data/dpsdbtab.cxx b/sc/source/core/data/dpsdbtab.cxx
index 7eeb4b93e284..72c0f06911b1 100644
--- a/sc/source/core/data/dpsdbtab.cxx
+++ b/sc/source/core/data/dpsdbtab.cxx
@@ -33,23 +33,6 @@
// INCLUDE --------------------------------------------------------------
-#include <tools/debug.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/zforlist.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/types.hxx>
-
-#include <com/sun/star/sheet/DataImportMode.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdb/XCompletedExecution.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XRowSet.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
-
#include "dpsdbtab.hxx"
#include "collect.hxx"
#include "global.hxx"
@@ -59,100 +42,41 @@
#include "document.hxx"
#include "dpobject.hxx"
+#include <com/sun/star/sheet/DataImportMode.hpp>
+#include <com/sun/star/sdb/CommandType.hpp>
+
using namespace com::sun::star;
using ::std::vector;
using ::com::sun::star::uno::Sequence;
-using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::Any;
-using ::com::sun::star::uno::UNO_QUERY;
-#define SC_SERVICE_ROWSET "com.sun.star.sdb.RowSet"
-#define SC_SERVICE_INTHANDLER "com.sun.star.task.InteractionHandler"
-
-//! move to a header file?
-#define SC_DBPROP_DATASOURCENAME "DataSourceName"
-#define SC_DBPROP_COMMAND "Command"
-#define SC_DBPROP_COMMANDTYPE "CommandType"
-
-ScDPCache* ScImportSourceDesc::CreateCache() const
+sal_Int32 ScImportSourceDesc::GetCommandType() const
{
- if (!mpDoc)
- return NULL;
-
sal_Int32 nSdbType = -1;
switch ( nType )
{
- case sheet::DataImportMode_SQL: nSdbType = sdb::CommandType::COMMAND; break;
- case sheet::DataImportMode_TABLE: nSdbType = sdb::CommandType::TABLE; break;
- case sheet::DataImportMode_QUERY: nSdbType = sdb::CommandType::QUERY; break;
- default:
- return NULL;
+ case sheet::DataImportMode_SQL: nSdbType = sdb::CommandType::COMMAND; break;
+ case sheet::DataImportMode_TABLE: nSdbType = sdb::CommandType::TABLE; break;
+ case sheet::DataImportMode_QUERY: nSdbType = sdb::CommandType::QUERY; break;
+ default:
+ ;
}
+ return nSdbType;
+}
- ScDPCache* pCache = new ScDPCache(mpDoc);
-
- uno::Reference<sdbc::XRowSet> xRowSet ;
- try
- {
- xRowSet = uno::Reference<sdbc::XRowSet>(
- comphelper::getProcessServiceFactory()->createInstance(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ),
- uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY );
- DBG_ASSERT( xRowProp.is(), "can't get RowSet" );
- if ( xRowProp.is() )
- {
- //
- // set source parameters
- //
- uno::Any aAny;
- aAny <<= rtl::OUString( aDBName );
- xRowProp->setPropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_DATASOURCENAME)), aAny );
-
- aAny <<= rtl::OUString( aObject );
- xRowProp->setPropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny );
-
- aAny <<= nSdbType;
- xRowProp->setPropertyValue(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny );
-
- uno::Reference<sdb::XCompletedExecution> xExecute( xRowSet, uno::UNO_QUERY );
- if ( xExecute.is() )
- {
- uno::Reference<task::XInteractionHandler> xHandler(
- comphelper::getProcessServiceFactory()->createInstance(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_INTHANDLER )) ),
- uno::UNO_QUERY);
- xExecute->executeWithCompletion( xHandler );
- }
- else
- xRowSet->execute();
- SvNumberFormatter aFormat(mpDoc->GetServiceManager(), ScGlobal::eLnge);
- pCache->InitFromDataBase( xRowSet, *aFormat.GetNullDate() );
- }
- }
- catch ( sdbc::SQLException& rError )
- {
- //! store error message
- delete pCache;
- pCache = NULL;
- InfoBox aInfoBox( 0, String(rError.Message) );
- aInfoBox.Execute();
- }
- catch ( uno::Exception& )
- {
- delete pCache;
- pCache = NULL;
- OSL_FAIL("Unexpected exception in database");
- }
+const ScDPCache* ScImportSourceDesc::CreateCache() const
+{
+ if (!mpDoc)
+ return NULL;
+ sal_Int32 nSdbType = GetCommandType();
+ if (nSdbType < 0)
+ return NULL;
- ::comphelper::disposeComponent( xRowSet );
- return pCache;
+ ScDPCollection::DBCaches& rCaches = mpDoc->GetDPCollection()->GetDBCaches();
+ return rCaches.getCache(nSdbType, aDBName, aObject);
}
ScDatabaseDPData::ScDatabaseDPData(ScDocument* pDoc, const ScImportSourceDesc& rImport) :
diff --git a/sc/source/core/data/dpshttab.cxx b/sc/source/core/data/dpshttab.cxx
index e4aca9a45253..cfad761377bc 100644
--- a/sc/source/core/data/dpshttab.cxx
+++ b/sc/source/core/data/dpshttab.cxx
@@ -60,7 +60,7 @@ using ::std::vector;
// -----------------------------------------------------------------------
-ScSheetDPData::ScSheetDPData(ScDocument* pD, const ScSheetSourceDesc& rDesc, ScDPCache* pCache) :
+ScSheetDPData::ScSheetDPData(ScDocument* pD, const ScSheetSourceDesc& rDesc, const ScDPCache* pCache) :
ScDPTableData(pD),
aQuery ( rDesc.GetQueryParam() ),
pSpecial(NULL),
@@ -307,7 +307,7 @@ bool ScSheetSourceDesc::operator== (const ScSheetSourceDesc& rOther) const
maQueryParam == rOther.maQueryParam;
}
-ScDPCache* ScSheetSourceDesc::CreateCache() const
+const ScDPCache* ScSheetSourceDesc::CreateCache() const
{
if (!mpDoc)
return NULL;
@@ -319,9 +319,17 @@ ScDPCache* ScSheetSourceDesc::CreateCache() const
return NULL;
}
- ScDPCache* pCache = new ScDPCache(mpDoc);
- pCache->InitFromDoc(mpDoc, GetSourceRange());
- return pCache;
+ // All cache instances are managed centrally by ScDPCollection.
+ ScDPCollection* pDPs = mpDoc->GetDPCollection();
+ if (HasRangeName())
+ {
+ // Name-based data source.
+ ScDPCollection::NameCaches& rCaches = pDPs->GetNameCaches();
+ return rCaches.getCache(GetRangeName(), GetSourceRange());
+ }
+
+ ScDPCollection::SheetCaches& rCaches = pDPs->GetSheetCaches();
+ return rCaches.getCache(GetSourceRange());
}
long ScSheetSourceDesc::GetCacheId() const
diff --git a/sc/source/core/data/dptablecache.cxx b/sc/source/core/data/dptablecache.cxx
index 008cdfcf3935..35782e05bab7 100644
--- a/sc/source/core/data/dptablecache.cxx
+++ b/sc/source/core/data/dptablecache.cxx
@@ -48,6 +48,8 @@
#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+#include <memory>
+
const double D_TIMEFACTOR = 86400.0;
using namespace ::com::sun::star;
@@ -57,26 +59,37 @@ using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::UNO_QUERY;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::std::vector;
+using ::std::auto_ptr;
namespace {
-bool lcl_isDate( sal_uLong nNumType )
+bool isDate( sal_uLong nNumType )
{
return ((nNumType & NUMBERFORMAT_DATE) != 0) ? 1 : 0;
}
-bool lcl_Search( const ScDPCache::DataListType& list, const ::std::vector<SCROW>& rOrder, const ScDPItemData& item, SCROW& rIndex)
+/**
+ * Search for an item in the data array. If it's in the array, return its
+ * index to the caller.
+ *
+ * @param rArray dimension array
+ * @param rOrder global order (what's this?)
+ * @param item item to search for
+ * @param rIndex the index of the found item in the global order.
+ *
+ * @return true if the item is found, or false otherwise.
+ */
+bool hasItemInDimension(const ScDPCache::DataListType& rArray, const ::std::vector<SCROW>& rOrder, const ScDPItemData& item, SCROW& rIndex)
{
- rIndex = list.size();
+ rIndex = rArray.size();
bool bFound = false;
SCROW nLo = 0;
- SCROW nHi = list.size() - 1;
- SCROW nIndex;
+ SCROW nHi = rArray.size() - 1;
long nCompare;
while (nLo <= nHi)
{
- nIndex = (nLo + nHi) / 2;
- nCompare = ScDPItemData::Compare( list[rOrder[nIndex]], item );
+ SCROW nIndex = (nLo + nHi) / 2;
+ nCompare = ScDPItemData::Compare( rArray[rOrder[nIndex]], item );
if (nCompare < 0)
nLo = nIndex + 1;
else
@@ -173,7 +186,7 @@ ScDPItemData* lcl_GetItemValue(
ScDPItemData::ScDPItemData(const String& rS, double fV, bool bHV, const sal_uLong nNumFormatP, bool bData) :
nNumFormat( nNumFormatP ), aString(rS), fValue(fV),
- mbFlag( (MK_VAL*!!bHV) | (MK_DATA*!!bData) | (MK_ERR*!!false) | (MK_DATE*!!lcl_isDate( nNumFormat ) ) )
+ mbFlag( (MK_VAL*!!bHV) | (MK_DATA*!!bData) | (MK_ERR*!!false) | (MK_DATE*!!isDate( nNumFormat ) ) )
{
}
@@ -203,7 +216,7 @@ ScDPItemData::ScDPItemData(ScDocument* pDoc, SCROW nRow, sal_uInt16 nCol, sal_uI
fValue = fVal;
mbFlag |= MK_VAL|MK_DATA;
nNumFormat = pDoc->GetNumberFormat( ScAddress( nCol, nRow, nDocTab ) );
- lcl_isDate( nFormat ) ? ( mbFlag |= MK_DATE ) : (mbFlag &= ~MK_DATE);
+ isDate( nFormat ) ? ( mbFlag |= MK_DATE ) : (mbFlag &= ~MK_DATE);
}
else if ( pDoc->HasData( nCol,nRow, nDocTab ) )
SetString ( aDocStr );
@@ -473,15 +486,12 @@ bool ScDPCache::InitFromDoc(ScDocument* pDoc, const ScRange& rRange)
maIndexOrder.push_back(new vector<SCROW>());
}
//check valid
- for ( SCROW nRow = nStartRow; nRow <= nEndRow; nRow ++ )
+
+ for (sal_uInt16 nCol = nStartCol; nCol <= nEndCol; ++nCol)
{
- for ( sal_uInt16 nCol = nStartCol; nCol <= nEndCol; nCol++ )
- {
- if ( nRow == nStartRow )
- AddLabel( new ScDPItemData( pDoc, nRow, nCol, nDocTab ) );
- else
- AddData( nCol - nStartCol, new ScDPItemData( pDoc, nRow, nCol, nDocTab ) );
- }
+ AddLabel(new ScDPItemData(pDoc, nStartRow, nCol, nDocTab));
+ for (SCROW nRow = nStartRow + 1; nRow <= nEndRow; ++nRow)
+ AddData(nCol - nStartCol, new ScDPItemData(pDoc, nRow, nCol, nDocTab));
}
return true;
}
@@ -489,7 +499,7 @@ bool ScDPCache::InitFromDoc(ScDocument* pDoc, const ScRange& rRange)
bool ScDPCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowSet, const Date& rNullDate)
{
if (!xRowSet.is())
- // Dont' even waste time to go any further.
+ // Don't even waste time to go any further.
return false;
try
{
@@ -565,7 +575,7 @@ sal_uLong ScDPCache::GetDimNumType( SCCOL nDim) const
return GetNumType(maTableDataValues[nDim][0].nNumFormat);
}
-bool ScDPCache::ValidQuery( SCROW nRow, const ScQueryParam &rParam, bool *pSpecial)
+bool ScDPCache::ValidQuery( SCROW nRow, const ScQueryParam &rParam, bool *pSpecial) const
{
if (!rParam.GetEntry(0).bDoQuery)
return true;
@@ -787,23 +797,23 @@ bool ScDPCache::IsEmptyMember( SCROW nRow, sal_uInt16 nColumn ) const
return !GetItemDataById( nColumn, GetItemDataId( nColumn, nRow, false ) )->IsHasData();
}
-bool ScDPCache::AddData(long nDim, ScDPItemData* pitemData)
+bool ScDPCache::AddData(long nDim, ScDPItemData* pData)
{
DBG_ASSERT( IsValid(), " IsValid() == false " );
DBG_ASSERT( nDim < mnColumnCount && nDim >=0 , "dimension out of bound" );
- SCROW nIndex = 0;
- bool bInserted = false;
+ // Wrap this instance with scoped pointer to ensure proper deletion.
+ auto_ptr<ScDPItemData> p(pData);
+ pData->SetDate(isDate(GetNumType(pData->nNumFormat)));
- pitemData->SetDate( lcl_isDate( GetNumType( pitemData->nNumFormat ) ) );
-
- if ( !lcl_Search( maTableDataValues[nDim], maGlobalOrder[nDim], *pitemData, nIndex ) )
+ SCROW nIndex = 0;
+ if (!hasItemInDimension(maTableDataValues[nDim], maGlobalOrder[nDim], *pData, nIndex))
{
- maTableDataValues[nDim].push_back( pitemData );
+ // This item doesn't exist in the dimension array yet.
+ maTableDataValues[nDim].push_back(p);
maGlobalOrder[nDim].insert( maGlobalOrder[nDim].begin()+nIndex, maTableDataValues[nDim].size()-1 );
DBG_ASSERT( (size_t) maGlobalOrder[nDim][nIndex] == maTableDataValues[nDim].size()-1 ,"ScDPTableDataCache::AddData ");
maSourceData[nDim].push_back( maTableDataValues[nDim].size()-1 );
- bInserted = true;
}
else
maSourceData[nDim].push_back( maGlobalOrder[nDim][nIndex] );
@@ -813,12 +823,9 @@ bool ScDPCache::AddData(long nDim, ScDPItemData* pitemData)
while ( mbEmptyRow.size() <= nCurRow )
mbEmptyRow.push_back( true );
- if ( pitemData->IsHasData() )
+ if ( pData->IsHasData() )
mbEmptyRow[ nCurRow ] = false;
- if ( !bInserted )
- delete pitemData;
-
return true;
}
@@ -928,10 +935,26 @@ sal_uLong ScDPCache::GetNumberFormat( long nDim ) const
{
if ( nDim >= mnColumnCount )
return 0;
- if ( maTableDataValues[nDim].size()==0 )
+
+ if (maTableDataValues[nDim].empty())
return 0;
- else
- return maTableDataValues[nDim][0].nNumFormat;
+
+ // TODO: This is very ugly, but the best we can do right now. Check the
+ // first 10 dimension members, and take the first non-zero number format,
+ // else return the default number format (of 0). For the long-term, we
+ // need to redo this cache structure to properly indicate empty cells, and
+ // skip them when trying to determine the representative number format for
+ // a dimension.
+ size_t nCount = maTableDataValues[nDim].size();
+ if (nCount > 10)
+ nCount = 10;
+ for (size_t i = 0; i < nCount; ++i)
+ {
+ sal_uLong n = maTableDataValues[nDim][i].nNumFormat;
+ if (n)
+ return n;
+ }
+ return 0;
}
bool ScDPCache::IsDateDimension( long nDim ) const
@@ -967,7 +990,7 @@ SCCOL ScDPCache::GetDimensionIndex(String sName) const
return -1;
}
-SCROW ScDPCache::GetIdByItemData(long nDim, String sItemData ) const
+SCROW ScDPCache::GetIdByItemData(long nDim, const String& sItemData ) const
{
if ( nDim < mnColumnCount && nDim >=0 )
{
@@ -995,7 +1018,7 @@ SCROW ScDPCache::GetIdByItemData( long nDim, const ScDPItemData& rData ) const
return GetRowCount() + maAdditionalData.getDataId(rData);
}
-SCROW ScDPCache::GetAdditionalItemID ( String sItemData ) const
+SCROW ScDPCache::GetAdditionalItemID ( const String& sItemData ) const
{
ScDPItemData rData ( sItemData );
return GetAdditionalItemID( rData );
diff --git a/sc/source/core/data/scdpoutputimpl.cxx b/sc/source/core/data/scdpoutputimpl.cxx
deleted file mode 100644
index ce2201ef872c..000000000000
--- a/sc/source/core/data/scdpoutputimpl.cxx
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright IBM Corporation 2009.
- * Copyright 2009 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sc.hxx"
-
-// INCLUDE ---------------------------------------------------------------
-#include "scdpoutputimpl.hxx"
-#include "scitems.hxx"
-#include <editeng/boxitem.hxx>
-// -----------------------------------------------------------------------
-
-namespace
-{
- bool lcl_compareColfuc ( SCCOL i, SCCOL j) { return (i<j); }
- bool lcl_compareRowfuc ( SCROW i, SCROW j) { return (i<j); }
-}
-
-
-void OutputImpl::OutputDataArea()
-{
- AddRow( mnDataStartRow );
- AddCol( mnDataStartCol );
-
- mnCols.push_back( mnTabEndCol+1); //set last row bottom
- mnRows.push_back( mnTabEndRow+1); //set last col bottom
-
- sal_Bool bAllRows = ( ( mnTabEndRow - mnDataStartRow + 2 ) == (SCROW) mnRows.size() );
-
- std::sort( mnCols.begin(), mnCols.end(), lcl_compareColfuc );
- std::sort( mnRows.begin(), mnRows.end(), lcl_compareRowfuc );
-
- for( SCCOL nCol = 0; nCol < (SCCOL)mnCols.size()-1; nCol ++ )
- {
- if ( !bAllRows )
- {
- if ( nCol < (SCCOL)mnCols.size()-2)
- {
- for ( SCROW i = nCol%2; i < (SCROW)mnRows.size()-2; i +=2 )
- OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
- if ( mnRows.size()>=2 )
- OutputBlockFrame( mnCols[nCol], mnRows[mnRows.size()-2], mnCols[nCol+1]-1, mnRows[mnRows.size()-1]-1 );
- }
- else
- {
- for ( SCROW i = 0 ; i < (SCROW)mnRows.size()-1; i++ )
- OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
- }
- }
- else
- OutputBlockFrame( mnCols[nCol], mnRows.front(), mnCols[nCol+1]-1, mnRows.back()-1, bAllRows );
- }
- //out put rows area outer framer
- if ( mnTabStartCol != mnDataStartCol )
- {
- if ( mnTabStartRow != mnDataStartRow )
- OutputBlockFrame( mnTabStartCol, mnTabStartRow, mnDataStartCol-1, mnDataStartRow-1 );
- OutputBlockFrame( mnTabStartCol, mnDataStartRow, mnDataStartCol-1, mnTabEndRow );
- }
- //out put cols area outer framer
- OutputBlockFrame( mnDataStartCol, mnTabStartRow, mnTabEndCol, mnDataStartRow-1 );
-}
-
-OutputImpl::OutputImpl( ScDocument* pDoc, sal_uInt16 nTab,
- SCCOL nTabStartCol,
- SCROW nTabStartRow,
- SCCOL nMemberStartCol,
- SCROW nMemberStartRow,
- SCCOL nDataStartCol,
- SCROW nDataStartRow,
- SCCOL nTabEndCol,
- SCROW nTabEndRow ):
- mpDoc( pDoc ),
- mnTab( nTab ),
- mnTabStartCol( nTabStartCol ),
- mnTabStartRow( nTabStartRow ),
- mnMemberStartCol( nMemberStartCol),
- mnMemberStartRow( nMemberStartRow),
- mnDataStartCol ( nDataStartCol ),
- mnDataStartRow ( nDataStartRow ),
- mnTabEndCol( nTabEndCol ),
- mnTabEndRow( nTabEndRow )
-{
- mbNeedLineCols.resize( nTabEndCol-nDataStartCol+1, false );
- mbNeedLineRows.resize( nTabEndRow-nDataStartRow+1, false );
-
-}
-
-sal_Bool OutputImpl::AddRow( SCROW nRow )
-{
- if ( !mbNeedLineRows[ nRow - mnDataStartRow ] )
- {
- mbNeedLineRows[ nRow - mnDataStartRow ] = true;
- mnRows.push_back( nRow );
- return sal_True;
- }
- else
- return false;
-}
-
-sal_Bool OutputImpl::AddCol( SCCOL nCol )
-{
-
- if ( !mbNeedLineCols[ nCol - mnDataStartCol ] )
- {
- mbNeedLineCols[ nCol - mnDataStartCol ] = true;
- mnCols.push_back( nCol );
- return sal_True;
- }
- else
- return false;
-}
-
-void OutputImpl::OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, sal_Bool bHori )
-{
- Color color = SC_DP_FRAME_COLOR;
- ::editeng::SvxBorderLine aLine( &color, SC_DP_FRAME_INNER_BOLD );
- ::editeng::SvxBorderLine aOutLine( &color, SC_DP_FRAME_OUTER_BOLD );
-
- SvxBoxItem aBox( ATTR_BORDER );
-
- if ( nStartCol == mnTabStartCol )
- aBox.SetLine(&aOutLine, BOX_LINE_LEFT);
- else
- aBox.SetLine(&aLine, BOX_LINE_LEFT);
-
- if ( nStartRow == mnTabStartRow )
- aBox.SetLine(&aOutLine, BOX_LINE_TOP);
- else
- aBox.SetLine(&aLine, BOX_LINE_TOP);
-
- if ( nEndCol == mnTabEndCol ) //bottom row
- aBox.SetLine(&aOutLine, BOX_LINE_RIGHT);
- else
- aBox.SetLine(&aLine, BOX_LINE_RIGHT);
-
- if ( nEndRow == mnTabEndRow ) //bottom
- aBox.SetLine(&aOutLine, BOX_LINE_BOTTOM);
- else
- aBox.SetLine(&aLine, BOX_LINE_BOTTOM);
-
-
- SvxBoxInfoItem aBoxInfo( ATTR_BORDER_INNER );
- aBoxInfo.SetValid(VALID_VERT,false );
- if ( bHori )
- {
- aBoxInfo.SetValid(VALID_HORI,sal_True);
- aBoxInfo.SetLine( &aLine, BOXINFO_LINE_HORI );
- }
- else
- aBoxInfo.SetValid(VALID_HORI,false );
-
- aBoxInfo.SetValid(VALID_DISTANCE,false);
-
- mpDoc->ApplyFrameAreaTab( ScRange( nStartCol, nStartRow, mnTab, nEndCol, nEndRow , mnTab ), &aBox, &aBoxInfo );
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/scdpoutputimpl.hxx b/sc/source/core/data/scdpoutputimpl.hxx
deleted file mode 100644
index 35a0a65a06fc..000000000000
--- a/sc/source/core/data/scdpoutputimpl.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright IBM Corporation 2009.
- * Copyright 2009 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef SCDPOUTPUTIMPL_HXX
-#define SCDPOUTPUTIMPL_HXX
-
-#include "document.hxx"
-
-#define SC_DP_FRAME_INNER_BOLD 20
-#define SC_DP_FRAME_OUTER_BOLD 40
-
-#define SC_DP_FRAME_COLOR Color(0,0,0) //( 0x20, 0x40, 0x68 )
-
-class OutputImpl
-{
- ScDocument* mpDoc;
- sal_uInt16 mnTab;
- ::std::vector< bool > mbNeedLineCols;
- ::std::vector< SCCOL > mnCols;
-
- ::std::vector< bool > mbNeedLineRows;
- ::std::vector< SCROW > mnRows;
-
- SCCOL mnTabStartCol;
- SCROW mnTabStartRow;
- SCCOL mnMemberStartCol;
- SCROW mnMemberStartRow;
-
- SCCOL mnDataStartCol;
- SCROW mnDataStartRow;
- SCCOL mnTabEndCol;
- SCROW mnTabEndRow;
-
-public:
- OutputImpl( ScDocument* pDoc, sal_uInt16 nTab,
- SCCOL nTabStartCol,
- SCROW nTabStartRow,
- SCCOL nMemberStartCol,
- SCROW nMemberStartRow,
- SCCOL nDataStartCol,
- SCROW nDataStartRow,
- SCCOL nTabEndCol,
- SCROW nTabEndRow );
- sal_Bool AddRow( SCROW nRow );
- sal_Bool AddCol( SCCOL nCol );
-
- void OutputDataArea();
- void OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, sal_Bool bHori = false );
-
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/excel/excimp8.cxx b/sc/source/filter/excel/excimp8.cxx
index 43f1da0844c1..a1bbe57dbc0c 100644
--- a/sc/source/filter/excel/excimp8.cxx
+++ b/sc/source/filter/excel/excimp8.cxx
@@ -82,6 +82,7 @@
#include "attrib.hxx"
#include "conditio.hxx"
#include "dbcolect.hxx"
+#include "globalnames.hxx"
#include "editutil.hxx"
#include "markdata.hxx"
#include "rangenam.hxx"
@@ -468,8 +469,6 @@ void ImportExcel8::FilterMode( void )
// then the latter is true..
if( !pExcRoot->pAutoFilterBuffer ) return;
- pExcRoot->pAutoFilterBuffer->IncrementActiveAF();
-
XclImpAutoFilterData* pData = pExcRoot->pAutoFilterBuffer->GetByTab( GetCurrScTab() );
if( pData )
pData->SetAutoOrAdvanced();
@@ -498,15 +497,14 @@ void ImportExcel8::AutoFilter( void )
-XclImpAutoFilterData::XclImpAutoFilterData( RootData* pRoot, const ScRange& rRange, const String& rName ) :
+XclImpAutoFilterData::XclImpAutoFilterData( RootData* pRoot, const ScRange& rRange ) :
ExcRoot( pRoot ),
pCurrDBData(NULL),
nFirstEmpty( 0 ),
bActive( false ),
bHasConflict( false ),
bCriteria( false ),
- bAutoOrAdvanced(false),
- aFilterName(rName)
+ bAutoOrAdvanced(false)
{
aParam.nCol1 = rRange.aStart.Col();
aParam.nRow1 = rRange.aStart.Row();
@@ -750,9 +748,9 @@ void XclImpAutoFilterData::SetExtractPos( const ScAddress& rAddr )
aParam.bDestPers = sal_True;
}
-void XclImpAutoFilterData::Apply( const sal_Bool bUseUnNamed )
+void XclImpAutoFilterData::Apply()
{
- CreateScDBData(bUseUnNamed);
+ CreateScDBData();
if( bActive )
{
@@ -774,35 +772,27 @@ void XclImpAutoFilterData::Apply( const sal_Bool bUseUnNamed )
}
}
-void XclImpAutoFilterData::CreateScDBData( const sal_Bool bUseUnNamed )
+void XclImpAutoFilterData::CreateScDBData()
{
// Create the ScDBData() object if the AutoFilter is activated
// or if we need to create the Advanced Filter.
if( bActive || bCriteria)
{
- ScDBCollection& rColl = pExcRoot->pIR->GetDatabaseRanges();
- pCurrDBData = rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
- if( !pCurrDBData )
+ ScDocument* pDoc = pExcRoot->pIR->GetDocPtr();
+ String aNewName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STR_DB_LOCAL_NONAME));
+ pCurrDBData = new ScDBData(aNewName , Tab(),
+ StartCol(),StartRow(), EndCol(),EndRow() );
+ if(bCriteria)
{
- AmendAFName(bUseUnNamed);
-
- pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
-
- if( pCurrDBData )
- {
- if(bCriteria)
- {
- EnableRemoveFilter();
+ EnableRemoveFilter();
- pCurrDBData->SetQueryParam( aParam );
- pCurrDBData->SetAdvancedQuerySource(&aCriteriaRange);
- }
- else
- pCurrDBData->SetAdvancedQuerySource(NULL);
- rColl.Insert( pCurrDBData );
- }
+ pCurrDBData->SetQueryParam( aParam );
+ pCurrDBData->SetAdvancedQuerySource(&aCriteriaRange);
}
+ else
+ pCurrDBData->SetAdvancedQuerySource(NULL);
+ pDoc->SetAnonymousDBData(Tab(), pCurrDBData);
}
}
@@ -822,18 +812,7 @@ void XclImpAutoFilterData::EnableRemoveFilter()
// inside the advanced range
}
-void XclImpAutoFilterData::AmendAFName(const sal_Bool bUseUnNamed)
-{
- // If-and-only-if we have one AF filter then
- // use the Calc "unnamed" range name. Calc
- // only supports one in total while Excel
- // supports one per sheet.
- if( bUseUnNamed && bAutoOrAdvanced )
- aFilterName = ScGlobal::GetRscString(STR_DB_NONAME);
-}
-
-XclImpAutoFilterBuffer::XclImpAutoFilterBuffer() :
- nAFActiveCount( 0 )
+XclImpAutoFilterBuffer::XclImpAutoFilterBuffer()
{
}
@@ -843,11 +822,10 @@ XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer()
delete pData;
}
-void XclImpAutoFilterBuffer::Insert( RootData* pRoot, const ScRange& rRange,
- const String& rName )
+void XclImpAutoFilterBuffer::Insert( RootData* pRoot, const ScRange& rRange)
{
if( !GetByTab( rRange.aStart.Tab() ) )
- Append( new XclImpAutoFilterData( pRoot, rRange, rName ) );
+ Append( new XclImpAutoFilterData( pRoot, rRange) );
}
void XclImpAutoFilterBuffer::AddAdvancedRange( const ScRange& rRange )
@@ -867,7 +845,7 @@ void XclImpAutoFilterBuffer::AddExtractPos( const ScRange& rRange )
void XclImpAutoFilterBuffer::Apply()
{
for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
- pData->Apply(UseUnNamed());
+ pData->Apply();
}
XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( SCTAB nTab )
diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx
index ec4c425c1621..d3671b4d1cbe 100644
--- a/sc/source/filter/excel/excrecds.cxx
+++ b/sc/source/filter/excel/excrecds.cxx
@@ -856,31 +856,18 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab ) :
pFilterInfo( NULL )
, mbAutoFilter (false)
{
- ScDBCollection& rDBColl = GetDatabaseRanges();
XclExpNameManager& rNameMgr = GetNameManager();
- // search for first DB-range with filter
- sal_uInt16 nIndex = 0;
sal_Bool bFound = false;
sal_Bool bAdvanced = false;
- ScDBData* pData = NULL;
+ ScDBData* pData = rRoot.GetDoc().GetAnonymousDBData(nTab);
ScRange aAdvRange;
- while( (nIndex < rDBColl.GetCount()) && !bFound )
+ if (pData)
{
- pData = rDBColl[ nIndex ];
- if( pData )
- {
- ScRange aRange;
- pData->GetArea( aRange );
- bAdvanced = pData->GetAdvancedQuerySource( aAdvRange );
- bFound = (aRange.aStart.Tab() == nTab) &&
- (pData->HasQueryParam() || pData->HasAutoFilter() || bAdvanced);
- }
- if( !bFound )
- nIndex++;
+ bAdvanced = pData->GetAdvancedQuerySource( aAdvRange );
+ bFound = (pData->HasQueryParam() || pData->HasAutoFilter() || bAdvanced);
}
-
- if( pData && bFound )
+ if( bFound )
{
ScQueryParam aParam;
pData->GetQueryParam( aParam );
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index 7acec465c4ac..dab35e4ba7b8 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -418,7 +418,6 @@ private:
void ProcessExternalRangeRef( const XclExpScToken& rTokData );
void ProcessDefinedName( const XclExpScToken& rTokData );
void ProcessExternalName( const XclExpScToken& rTokData );
- void ProcessDatabaseArea( const XclExpScToken& rTokData );
// token vector -----------------------------------------------------------
@@ -1184,7 +1183,6 @@ XclExpScToken XclExpFmlaCompImpl::Factor( XclExpScToken aTokData )
case ocBad: ProcessBad( aTokData ); break;
case ocOpen: ProcessParentheses( aTokData ); break;
case ocName: ProcessDefinedName( aTokData ); break;
- case ocDBArea: ProcessDatabaseArea( aTokData ); break;
case ocFalse:
case ocTrue: ProcessBoolean( aTokData ); break;
case ocDde: ProcessDdeLink( aTokData ); break;
@@ -2138,12 +2136,6 @@ void XclExpFmlaCompImpl::ProcessExternalName( const XclExpScToken& rTokData )
AppendErrorToken( EXC_ERR_NAME, rTokData.mnSpaces );
}
-void XclExpFmlaCompImpl::ProcessDatabaseArea( const XclExpScToken& rTokData )
-{
- sal_uInt16 nNameIdx = GetNameManager().InsertDBRange( rTokData.mpScToken->GetIndex() );
- AppendNameToken( nNameIdx, rTokData.mnSpaces );
-}
-
// token vector ---------------------------------------------------------------
void XclExpFmlaCompImpl::PushOperandPos( sal_uInt16 nTokPos )
diff --git a/sc/source/filter/excel/xename.cxx b/sc/source/filter/excel/xename.cxx
index 846e6229aa10..69377c5d06f4 100644
--- a/sc/source/filter/excel/xename.cxx
+++ b/sc/source/filter/excel/xename.cxx
@@ -38,6 +38,7 @@
#include "dbcolect.hxx"
#include "xehelper.hxx"
#include "xelink.hxx"
+#include "globalnames.hxx"
// for filter manager
#include "excrecds.hxx"
@@ -138,11 +139,10 @@ public:
/** Inserts the Calc name with the passed index and returns the Excel NAME index. */
sal_uInt16 InsertName( SCTAB nTab, sal_uInt16 nScNameIdx );
- /** Inserts the Calc database range with the passed index and returns the Excel NAME index. */
- sal_uInt16 InsertDBRange( sal_uInt16 nScDBRangeIdx );
/** Inserts a new built-in defined name. */
sal_uInt16 InsertBuiltInName( sal_Unicode cBuiltIn, XclTokenArrayRef xTokArr, SCTAB nScTab );
+ sal_uInt16 InsertBuiltInName( sal_Unicode cBuiltIn, XclTokenArrayRef xTokArr, const ScRange& aRange );
/** Inserts a new defined name. Sets another unused name, if rName already exists. */
sal_uInt16 InsertUniqueName( const String& rName, XclTokenArrayRef xTokArr, SCTAB nScTab );
/** Returns index of an existing name, or creates a name without definition. */
@@ -179,10 +179,6 @@ private:
*/
sal_uInt16 FindNamedExpIndex( SCTAB nTab, sal_uInt16 nScIdx );
- /**
- * Find the index of a NAME record from Calc's database range index.
- */
- sal_uInt16 FindDBNameIdx( sal_uInt16 nScIdx ) const;
/** Returns the index of an existing built-in NAME record with the passed definition, otherwise 0. */
sal_uInt16 FindBuiltInNameIdx( const String& rName,
const XclTokenArray& rTokArr, bool bDBRange ) const;
@@ -203,8 +199,6 @@ private:
void CreateBuiltInNames();
/** Creates NAME records for all user-defined names in the document. */
void CreateUserNames();
- /** Creates NAME records for all database ranges in the document. */
- void CreateDatabaseNames();
private:
/**
@@ -214,8 +208,6 @@ private:
*/
NamedExpIndexMap maNamedExpMap;
XclExpNameList maNameList; /// List of NAME records.
- XclExpIndexMap maDBRangeMap; /// Maps Calc database ranges to Excel NAME records.
- String maUnnamedDBName; /// Name of the hidden unnamed database range.
size_t mnFirstUserIdx; /// List index of first user-defined NAME record.
};
@@ -254,9 +246,11 @@ XclExpName::XclExpName( const XclExpRoot& rRoot, sal_Unicode cBuiltIn ) :
{
String aName( XclTools::GetXclBuiltInDefName( EXC_BUILTIN_FILTERDATABASE ) );
mxName = XclExpStringHelper::CreateString( rRoot, aName, EXC_STR_8BITLENGTH );
+ maOrigName = XclTools::GetXclBuiltInDefName( cBuiltIn );
}
else
{
+ maOrigName = XclTools::GetBuiltInDefNameXml( cBuiltIn ) ;
mxName = XclExpStringHelper::CreateString( rRoot, cBuiltIn, EXC_STR_8BITLENGTH );
::set_flag( mnFlags, EXC_NAME_BUILTIN );
}
@@ -336,10 +330,6 @@ void XclExpName::Save( XclExpStream& rStrm )
void XclExpName::SaveXml( XclExpXmlStream& rStrm )
{
- // For some reason, AutoFilter creates exportable names where maOrigName==""
- if( maOrigName.Len() == 0 )
- return;
-
sax_fastparser::FSHelperPtr& rWorkbook = rStrm.GetCurrentStream();
rWorkbook->startElement( XML_definedName,
// OOXTODO: XML_comment, "",
@@ -383,7 +373,6 @@ void XclExpName::WriteBody( XclExpStream& rStrm )
XclExpNameManagerImpl::XclExpNameManagerImpl( const XclExpRoot& rRoot ) :
XclExpRoot( rRoot ),
- maUnnamedDBName( ScGlobal::GetRscString( STR_DB_NONAME ) ),
mnFirstUserIdx( 0 )
{
}
@@ -393,7 +382,6 @@ void XclExpNameManagerImpl::Initialize()
CreateBuiltInNames();
mnFirstUserIdx = maNameList.GetSize();
CreateUserNames();
- CreateDatabaseNames();
}
sal_uInt16 XclExpNameManagerImpl::InsertName( SCTAB nTab, sal_uInt16 nScNameIdx )
@@ -413,13 +401,15 @@ sal_uInt16 XclExpNameManagerImpl::InsertName( SCTAB nTab, sal_uInt16 nScNameIdx
return nNameIdx;
}
-sal_uInt16 XclExpNameManagerImpl::InsertDBRange( sal_uInt16 nScDBRangeIdx )
+sal_uInt16 XclExpNameManagerImpl::InsertBuiltInName( sal_Unicode cBuiltIn, XclTokenArrayRef xTokArr, const ScRange& aRange )
{
- sal_uInt16 nNameIdx = FindDBNameIdx( nScDBRangeIdx );
- if( nNameIdx == 0 )
- if( const ScDBData* pDBData = GetDatabaseRanges().FindIndex( nScDBRangeIdx ) )
- nNameIdx = CreateName( *pDBData );
- return nNameIdx;
+ XclExpNameRef xName( new XclExpName( GetRoot(), cBuiltIn ) );
+ xName->SetTokenArray( xTokArr );
+ xName->SetLocalTab( aRange.aStart.Tab() );
+ String sSymbol;
+ aRange.Format( sSymbol, SCR_ABS_3D, GetDocPtr(), ScAddress::Details( ::formula::FormulaGrammar::CONV_XL_A1 ) );
+ xName->SetSymbol( sSymbol );
+ return Append( xName );
}
sal_uInt16 XclExpNameManagerImpl::InsertBuiltInName( sal_Unicode cBuiltIn, XclTokenArrayRef xTokArr, SCTAB nScTab )
@@ -515,18 +505,12 @@ sal_uInt16 XclExpNameManagerImpl::FindNamedExpIndex( SCTAB nTab, sal_uInt16 nScI
return (itr == maNamedExpMap.end()) ? 0 : itr->second;
}
-sal_uInt16 XclExpNameManagerImpl::FindDBNameIdx( sal_uInt16 nScIdx ) const
-{
- XclExpIndexMap::const_iterator aIt = maDBRangeMap.find( nScIdx );
- return (aIt == maDBRangeMap.end()) ? 0 : aIt->second;
-}
-
sal_uInt16 XclExpNameManagerImpl::FindBuiltInNameIdx(
const String& rName, const XclTokenArray& rTokArr, bool bDBRange ) const
{
/* Get built-in index from the name. Special case: the database range
'unnamed' will be mapped to Excel's built-in '_FilterDatabase' name. */
- sal_Unicode cBuiltIn = (bDBRange && (rName == maUnnamedDBName)) ?
+ sal_Unicode cBuiltIn = (bDBRange && (rName == String(RTL_CONSTASCII_USTRINGPARAM(STR_DB_LOCAL_NONAME)))) ?
EXC_BUILTIN_FILTERDATABASE : XclTools::GetBuiltInDefNameIndex( rName );
if( cBuiltIn < EXC_BUILTIN_UNKNOWN )
@@ -622,29 +606,6 @@ sal_uInt16 XclExpNameManagerImpl::CreateName( SCTAB nTab, const ScRangeData& rRa
return nNameIdx;
}
-sal_uInt16 XclExpNameManagerImpl::CreateName( const ScDBData& rDBData )
-{
- // get name and source range, and create the definition formula
- const String& rName = rDBData.GetName();
- ScRange aRange;
- rDBData.GetArea( aRange );
- XclTokenArrayRef xTokArr = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_NAME, aRange );
-
- // try to use an existing built-in name
- sal_uInt16 nNameIdx = FindBuiltInNameIdx( rName, *xTokArr, true );
- if( nNameIdx == 0 )
- {
- // insert a new name into the list
- XclExpNameRef xName( new XclExpName( GetRoot(), GetUnusedName( rName ) ) );
- xName->SetTokenArray( xTokArr );
- nNameIdx = Append( xName );
- }
-
- // store the index of the NAME record in the lookup map
- maDBRangeMap[ rDBData.GetIndex() ] = nNameIdx;
- return nNameIdx;
-}
-
void XclExpNameManagerImpl::CreateBuiltInNames()
{
ScDocument& rDoc = GetDoc();
@@ -718,19 +679,6 @@ void XclExpNameManagerImpl::CreateUserNames()
}
}
-void XclExpNameManagerImpl::CreateDatabaseNames()
-{
- const ScDBCollection& rDBRanges = GetDatabaseRanges();
- for( sal_uInt16 nDBIdx = 0, nDBCount = rDBRanges.GetCount(); nDBIdx < nDBCount; ++nDBIdx )
- {
- const ScDBData* pDBData = rDBRanges[ nDBIdx ];
- DBG_ASSERT( pDBData, "XclExpNameManagerImpl::CreateDatabaseNames - missing database range" );
- // skip hidden "unnamed" range
- if( pDBData && (pDBData->GetName() != maUnnamedDBName) && !FindDBNameIdx( pDBData->GetIndex() ) )
- CreateName( *pDBData );
- }
-}
-
// ----------------------------------------------------------------------------
XclExpNameManager::XclExpNameManager( const XclExpRoot& rRoot ) :
@@ -753,15 +701,10 @@ sal_uInt16 XclExpNameManager::InsertName( SCTAB nTab, sal_uInt16 nScNameIdx )
return mxImpl->InsertName( nTab, nScNameIdx );
}
-sal_uInt16 XclExpNameManager::InsertDBRange( sal_uInt16 nScDBRangeIdx )
-{
- return mxImpl->InsertDBRange( nScDBRangeIdx );
-}
-
sal_uInt16 XclExpNameManager::InsertBuiltInName( sal_Unicode cBuiltIn, const ScRange& rRange )
{
XclTokenArrayRef xTokArr = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_NAME, rRange );
- return mxImpl->InsertBuiltInName( cBuiltIn, xTokArr, rRange.aStart.Tab() );
+ return mxImpl->InsertBuiltInName( cBuiltIn, xTokArr, rRange );
}
sal_uInt16 XclExpNameManager::InsertBuiltInName( sal_Unicode cBuiltIn, const ScRangeList& rRangeList )
diff --git a/sc/source/filter/excel/xepivot.cxx b/sc/source/filter/excel/xepivot.cxx
index 8139a25b8b08..be8557eac430 100644
--- a/sc/source/filter/excel/xepivot.cxx
+++ b/sc/source/filter/excel/xepivot.cxx
@@ -538,7 +538,7 @@ void XclExpPCField::InsertNumDateGroupItems( const ScDPObject& rDPObj, const ScD
if( const ScSheetSourceDesc* pSrcDesc = rDPObj.GetSheetDesc() )
{
// get the string collection with original source elements
- ScDPCache* pCache = pSrcDesc->CreateCache();
+ const ScDPCache* pCache = pSrcDesc->CreateCache();
if (!pCache)
return;
diff --git a/sc/source/filter/excel/xiname.cxx b/sc/source/filter/excel/xiname.cxx
index eeba8e356f9b..15bf618d8530 100644
--- a/sc/source/filter/excel/xiname.cxx
+++ b/sc/source/filter/excel/xiname.cxx
@@ -186,7 +186,7 @@ XclImpName::XclImpName( XclImpStream& rStrm, sal_uInt16 nXclNameIdx ) :
switch( mcBuiltIn )
{
case EXC_BUILTIN_FILTERDATABASE:
- GetFilterManager().Insert( &GetOldRoot(), aRange, maScName );
+ GetFilterManager().Insert( &GetOldRoot(), aRange);
break;
case EXC_BUILTIN_CRITERIA:
GetFilterManager().AddAdvancedRange( aRange );
diff --git a/sc/source/filter/excel/xipivot.cxx b/sc/source/filter/excel/xipivot.cxx
index 0bb694d2b29e..a26b132f198d 100644
--- a/sc/source/filter/excel/xipivot.cxx
+++ b/sc/source/filter/excel/xipivot.cxx
@@ -1010,8 +1010,12 @@ void XclImpPTField::ConvertPageField( ScDPSaveData& rSaveData ) const
DBG_ASSERT( maFieldInfo.mnAxes & EXC_SXVD_AXIS_PAGE, "XclImpPTField::ConvertPageField - no page field" );
if( ScDPSaveDimension* pSaveDim = ConvertRCPField( rSaveData ) )
{
- const rtl::OUString aName = *GetItemName( maPageInfo.mnSelItem );
- pSaveDim->SetCurrentPage( &aName );
+ const String* pName = GetItemName( maPageInfo.mnSelItem );
+ if (pName)
+ {
+ const OUString aName(*pName);
+ pSaveDim->SetCurrentPage(&aName);
+ }
}
}
diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx
index 062413de46f8..aba8b38fc340 100644
--- a/sc/source/filter/excel/xltools.cxx
+++ b/sc/source/filter/excel/xltools.cxx
@@ -469,6 +469,8 @@ String XclTools::GetXclFontName( const String& rFontName )
const String XclTools::maDefNamePrefix( RTL_CONSTASCII_USTRINGPARAM( "Excel_BuiltIn_" ) );
+const String XclTools::maDefNamePrefixXml ( RTL_CONSTASCII_USTRINGPARAM( "_xlnm." ) );
+
static const sal_Char* const ppcDefNames[] =
{
"Consolidate_Area",
@@ -504,6 +506,11 @@ String XclTools::GetBuiltInDefName( sal_Unicode cBuiltIn )
return String( maDefNamePrefix ).Append( GetXclBuiltInDefName( cBuiltIn ) );
}
+String XclTools::GetBuiltInDefNameXml( sal_Unicode cBuiltIn )
+{
+ return String( maDefNamePrefixXml ).Append( GetXclBuiltInDefName( cBuiltIn ) );
+}
+
sal_Unicode XclTools::GetBuiltInDefNameIndex( const String& rDefName )
{
xub_StrLen nPrefixLen = maDefNamePrefix.Len();
diff --git a/sc/source/filter/inc/excimp8.hxx b/sc/source/filter/inc/excimp8.hxx
index 65adb65b16e6..923bec596d88 100644
--- a/sc/source/filter/inc/excimp8.hxx
+++ b/sc/source/filter/inc/excimp8.hxx
@@ -103,7 +103,6 @@ private:
sal_Bool bCriteria;
sal_Bool bAutoOrAdvanced;
ScRange aCriteriaRange;
- String aFilterName;
void CreateFromDouble( String& rStr, double fVal );
void SetCellAttribs();
@@ -114,8 +113,7 @@ protected:
public:
XclImpAutoFilterData(
RootData* pRoot,
- const ScRange& rRange,
- const String& rName );
+ const ScRange& rRange);
inline bool IsActive() const { return bActive; }
inline bool IsFiltered() const { return bAutoOrAdvanced; }
@@ -131,8 +129,8 @@ public:
void SetAdvancedRange( const ScRange* pRange );
void SetExtractPos( const ScAddress& rAddr );
inline void SetAutoOrAdvanced() { bAutoOrAdvanced = sal_True; }
- void Apply( const sal_Bool bUseUnNamed = false );
- void CreateScDBData( const sal_Bool bUseUnNamed );
+ void Apply();
+ void CreateScDBData();
void EnableRemoveFilter();
};
@@ -142,8 +140,6 @@ class XclImpAutoFilterBuffer : private List
private:
using List::Insert;
- sal_uInt16 nAFActiveCount;
-
inline XclImpAutoFilterData* _First() { return (XclImpAutoFilterData*) List::First(); }
inline XclImpAutoFilterData* _Next() { return (XclImpAutoFilterData*) List::Next(); }
@@ -154,15 +150,12 @@ public:
XclImpAutoFilterBuffer();
virtual ~XclImpAutoFilterBuffer();
- void Insert( RootData* pRoot, const ScRange& rRange,
- const String& rName );
+ void Insert( RootData* pRoot, const ScRange& rRange);
void AddAdvancedRange( const ScRange& rRange );
void AddExtractPos( const ScRange& rRange );
void Apply();
XclImpAutoFilterData* GetByTab( SCTAB nTab );
- inline void IncrementActiveAF() { nAFActiveCount++; }
- inline sal_Bool UseUnNamed() { return nAFActiveCount == 1; }
};
#endif
diff --git a/sc/source/filter/inc/xltools.hxx b/sc/source/filter/inc/xltools.hxx
index bfe284f198da..e9e306e2f1c6 100644
--- a/sc/source/filter/inc/xltools.hxx
+++ b/sc/source/filter/inc/xltools.hxx
@@ -187,6 +187,10 @@ public:
@descr Adds a prefix to the representation returned by GetXclBuiltInDefName().
@param cBuiltIn Excel index of the built-in name. */
static String GetBuiltInDefName( sal_Unicode cBuiltIn );
+ /** Returns the Excel built-in name with OOXML prefix
+ @descr Adds the "_xlnm." prefix to the representation returned by GetXclBuiltInDefName()
+ @param cBuiltIn Excel index of the built in name.*/
+ static String GetBuiltInDefNameXml( sal_Unicode cBuiltIn );
/** Returns the Excel built-in name index of the passed defined name from Calc.
@descr Ignores any characters following a valid representation of a built-in name.
@param pcBuiltIn (out-param) If not 0, the index of the built-in name will be returned here.
@@ -245,6 +249,7 @@ public:
// ------------------------------------------------------------------------
private:
static const String maDefNamePrefix; /// Prefix for built-in defined names.
+ static const String maDefNamePrefixXml; /// Prefix for built-in defined names for OOX
static const String maStyleNamePrefix1; /// Prefix for built-in cell style names.
static const String maStyleNamePrefix2; /// Prefix for built-in cell style names from OOX filter.
static const String maCFStyleNamePrefix1; /// Prefix for cond. formatting style names.
diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx
index 968c37f0e1b5..d0071a9428b2 100644
--- a/sc/source/filter/xml/XMLExportDataPilot.cxx
+++ b/sc/source/filter/xml/XMLExportDataPilot.cxx
@@ -858,24 +858,24 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads
case sheet::DataImportMode_NONE : break;
case sheet::DataImportMode_QUERY :
{
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, rtl::OUString(pImpSource->aDBName));
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_QUERY_NAME, rtl::OUString(pImpSource->aObject));
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, pImpSource->aDBName);
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_QUERY_NAME, pImpSource->aObject);
SvXMLElementExport aElemID(rExport, XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_QUERY, sal_True, sal_True);
rExport.CheckAttrList();
}
break;
case sheet::DataImportMode_TABLE :
{
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, rtl::OUString(pImpSource->aDBName));
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TABLE_NAME, rtl::OUString(pImpSource->aObject));
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, pImpSource->aDBName);
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TABLE_NAME, pImpSource->aObject);
SvXMLElementExport aElemID(rExport, XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, sal_True, sal_True);
rExport.CheckAttrList();
}
break;
case sheet::DataImportMode_SQL :
{
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, rtl::OUString(pImpSource->aDBName));
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SQL_STATEMENT, rtl::OUString(pImpSource->aObject));
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATABASE_NAME, pImpSource->aDBName);
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SQL_STATEMENT, pImpSource->aObject);
if (!pImpSource->bNative)
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_PARSE_SQL_STATEMENT, XML_TRUE);
SvXMLElementExport aElemID(rExport, XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, sal_True, sal_True);
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 06214774a91e..a7755b840bca 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -1089,7 +1089,7 @@ void ScXMLTableRowCellContext::EndElement()
pCellObj->SetFormulaWithGrammar( pOUFormula->first, pOUFormula->second, eGrammar);
if (bFormulaTextResult && pOUTextValue && pOUTextValue->getLength())
pCellObj->SetFormulaResultString( *pOUTextValue);
- else if (fValue != 0.0)
+ else
pCellObj->SetFormulaResultDouble( fValue);
}
}
diff --git a/sc/source/ui/attrdlg/scabstdlg.cxx b/sc/source/ui/attrdlg/scabstdlg.cxx
index 7ab625e03f61..db85484e6228 100644
--- a/sc/source/ui/attrdlg/scabstdlg.cxx
+++ b/sc/source/ui/attrdlg/scabstdlg.cxx
@@ -48,7 +48,8 @@ ScAbstractDialogFactory* ScAbstractDialogFactory::Create()
OUStringBuffer aStrBuf;
aStrBuf.appendAscii( SVLIBRARY("scui") );
- if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, aStrBuf.makeStringAndClear() ) )
+ if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, aStrBuf.makeStringAndClear(),
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY ) )
fp = ( ScAbstractDialogFactory* (__LOADONCALLAPI*)() )
aDialogLibrary.getFunctionSymbol( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDialogFactory")) );
if ( fp )
diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx
index 2a5d415410dc..380cdf9cfeef 100644
--- a/sc/source/ui/cctrl/dpcontrol.cxx
+++ b/sc/source/ui/cctrl/dpcontrol.cxx
@@ -1032,6 +1032,7 @@ ScDPFieldPopupWindow::ScDPFieldPopupWindow(Window* pParent, ScDocument* pDoc) :
maChkToggleAll.SetPosSizePixel(aPos, aSize);
maChkToggleAll.SetFont(getLabelFont());
maChkToggleAll.SetText(ScRscStrLoader(RID_POPUP_FILTER, STR_BTN_TOGGLE_ALL).GetString());
+ maChkToggleAll.SetTextColor(rStyle.GetMenuTextColor());
maChkToggleAll.SetControlBackground(rStyle.GetMenuColor());
maChkToggleAll.SetClickHdl( LINK(this, ScDPFieldPopupWindow, TriStateHdl) );
maChkToggleAll.Show();
diff --git a/sc/source/ui/dbgui/dapidata.cxx b/sc/source/ui/dbgui/dapidata.cxx
index 63d11e1141ae..c73d701a6eb9 100644
--- a/sc/source/ui/dbgui/dapidata.cxx
+++ b/sc/source/ui/dbgui/dapidata.cxx
@@ -130,7 +130,7 @@ void ScDataPilotDatabaseDlg::GetValues( ScImportSourceDesc& rDesc )
rDesc.aDBName = aLbDatabase.GetSelectEntry();
rDesc.aObject = aCbObject.GetText();
- if ( !rDesc.aDBName.Len() || !rDesc.aObject.Len() )
+ if (rDesc.aDBName.isEmpty() || rDesc.aObject.isEmpty())
rDesc.nType = sheet::DataImportMode_NONE;
else if ( nSelect == DP_TYPELIST_TABLE )
rDesc.nType = sheet::DataImportMode_TABLE;
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index e9376dd15668..c9d600f34d9c 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -4344,17 +4344,14 @@ sal_Bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, sal_Bool bCont
for( aPos.SetRow( nStartRow ); !bHasNotes && (aPos.Row() <= nEndRow); aPos.IncRow() )
bHasNotes = ((aPos.Col() != nStartCol) || (aPos.Row() != nStartRow)) && (pDoc->GetNote( aPos ) != 0);
- if (bNeedContents || bHasNotes || rOption.mbCenter)
+ if (!pUndoDoc)
{
- if (!pUndoDoc)
- {
- pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
- pUndoDoc->InitUndo(pDoc, nTab1, nTab2);
- }
- // note captions are collected by drawing undo
- pDoc->CopyToDocument( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
- IDF_ALL|IDF_NOCAPTIONS, false, pUndoDoc );
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo(pDoc, nTab1, nTab2);
}
+ // note captions are collected by drawing undo
+ pDoc->CopyToDocument( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
+ IDF_ALL|IDF_NOCAPTIONS, false, pUndoDoc );
if( bHasNotes )
pDoc->BeginDrawUndo();
}
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 6fabe3684d6c..060969fc2c63 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -2086,7 +2086,7 @@ ScFormatFilterPlugin &ScFormatFilter::Get()
::rtl::OUString sFilterLib(RTL_CONSTASCII_USTRINGPARAM(SVLIBRARY("scfilt")));
static ::osl::Module aModule;
- bool bLoaded = aModule.loadRelative(&thisModule, sFilterLib);
+ bool bLoaded = aModule.loadRelative(&thisModule, sFilterLib, SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY);
if (!bLoaded)
bLoaded = aModule.load(sFilterLib);
if (bLoaded)
diff --git a/sc/source/ui/vba/vbaworksheet.cxx b/sc/source/ui/vba/vbaworksheet.cxx
index 87fb2e9a07e3..4152fb0fd412 100644
--- a/sc/source/ui/vba/vbaworksheet.cxx
+++ b/sc/source/ui/vba/vbaworksheet.cxx
@@ -108,6 +108,8 @@
#include "vbasheetobjects.hxx"
#include "viewuno.hxx"
+#include "attrib.hxx"
+
#define STANDARDWIDTH 2267
#define STANDARDHEIGHT 427
#define DOESNOTEXIST -1
@@ -444,38 +446,39 @@ ScVbaWorksheet::setEnableSelection( sal_Int32 nSelection ) throw (uno::RuntimeEx
}
-uno::Reference< beans::XPropertySet > ScVbaWorksheet::getFirstDBRangeProperties() throw (uno::RuntimeException)
-{
- uno::Reference< beans::XPropertySet > xModelProps( mxModel, uno::UNO_QUERY_THROW );
- uno::Reference< container::XIndexAccess > xDBRangesIA( xModelProps->getPropertyValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DatabaseRanges" ) ) ), uno::UNO_QUERY_THROW );
-
- for( sal_Int32 nIndex = 0, nCount = xDBRangesIA->getCount(); nIndex < nCount; ++nIndex )
- {
- uno::Reference< sheet::XCellRangeReferrer > xDBRange( xDBRangesIA->getByIndex( nIndex ), uno::UNO_QUERY_THROW );
- // check if the database area is on this sheet
- uno::Reference< sheet::XCellRangeAddressable > xRangeAddr( xDBRange->getReferredCells(), uno::UNO_QUERY_THROW );
- if( getSheetID() == xRangeAddr->getRangeAddress().Sheet )
- return uno::Reference< beans::XPropertySet >( xDBRange, uno::UNO_QUERY_THROW );
- }
- return uno::Reference< beans::XPropertySet >();
-}
-
sal_Bool SAL_CALL ScVbaWorksheet::getAutoFilterMode() throw (uno::RuntimeException)
{
- uno::Reference< beans::XPropertySet > xDBRangeProps = getFirstDBRangeProperties();
- sal_Bool bAutoFilterMode = false;
- return
- xDBRangeProps.is() &&
- (xDBRangeProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AutoFilter" ) ) ) >>= bAutoFilterMode) &&
- bAutoFilterMode;
+ uno::Reference< frame::XModel > xModel( getModel(), uno::UNO_QUERY_THROW );
+ ScDocument* pDoc = excel::getDocShell( xModel )->GetDocument();
+ ScDBData* pDBData = pDoc->GetAnonymousDBData(getSheetID());
+ if (pDBData)
+ return pDBData->HasAutoFilter();
+ return false;
}
void SAL_CALL ScVbaWorksheet::setAutoFilterMode( sal_Bool bAutoFilterMode ) throw (uno::RuntimeException)
{
- uno::Reference< beans::XPropertySet > xDBRangeProps = getFirstDBRangeProperties();
- if( xDBRangeProps.is() )
- xDBRangeProps->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AutoFilter" ) ), uno::Any( bAutoFilterMode ) );
+ uno::Reference< frame::XModel > xModel( getModel(), uno::UNO_QUERY_THROW );
+ ScDocShell* pDocShell = excel::getDocShell( xModel );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDBData* pDBData = pDoc->GetAnonymousDBData(getSheetID());
+ if (pDBData)
+ {
+ pDBData->SetAutoFilter(bAutoFilterMode);
+ ScRange aRange;
+ pDBData->GetArea(aRange);
+ if (bAutoFilterMode && pDoc)
+ pDoc->ApplyFlagsTab( aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aStart.Row(),
+ aRange.aStart.Tab(), SC_MF_AUTO );
+ else if (!bAutoFilterMode && pDoc)
+ pDoc->RemoveFlagsTab(aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aStart.Row(),
+ aRange.aStart.Tab(), SC_MF_AUTO );
+ ScRange aPaintRange(aRange.aStart, aRange.aEnd);
+ aPaintRange.aEnd.SetRow(aPaintRange.aStart.Row());
+ pDocShell->PostPaint(aPaintRange, PAINT_GRID);
+ }
}
uno::Reference< excel::XRange >
diff --git a/sc/source/ui/vba/vbaworksheet.hxx b/sc/source/ui/vba/vbaworksheet.hxx
index 2736083a8561..95c933e0b7c0 100644
--- a/sc/source/ui/vba/vbaworksheet.hxx
+++ b/sc/source/ui/vba/vbaworksheet.hxx
@@ -72,8 +72,6 @@ class ScVbaWorksheet : public WorksheetImpl_BASE
css::uno::Reference< css::container::XNameAccess > getFormControls();
css::uno::Any getControlShape( const rtl::OUString& sName );
- css::uno::Reference< css::beans::XPropertySet > getFirstDBRangeProperties() throw (css::uno::RuntimeException);
-
protected:
ScVbaWorksheet( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext );
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index d2e185d05b47..e8e5baafb1f7 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -72,6 +72,8 @@
#include "dbdocfun.hxx"
#include "dpoutput.hxx"
#include "dptabsrc.hxx"
+#include "dpshttab.hxx"
+#include "dpsdbtab.hxx"
#include "editable.hxx"
#include "docpool.hxx"
#include "patattr.hxx"
@@ -697,13 +699,47 @@ void ScDBFunc::RecalcPivotTable()
ScDocShell* pDocSh = GetViewData()->GetDocShell();
ScDocument* pDoc = GetViewData()->GetDocument();
- // old pivot not used any more
-
+ ScDPCollection* pDPs = pDoc->GetDPCollection();
ScDPObject* pDPObj = pDoc->GetDPAtCursor( GetViewData()->GetCurX(),
GetViewData()->GetCurY(),
GetViewData()->GetTabNo() );
- if ( pDPObj )
+ if (pDPs && pDPObj)
{
+ // Remove existing data cache for the data that this datapilot uses,
+ // to force re-build data cache.
+ if (pDPObj->IsSheetData())
+ {
+ // data source is internal sheet.
+ const ScSheetSourceDesc* pDesc = pDPObj->GetSheetDesc();
+ if (!pDesc)
+ {
+ ErrorMessage(STR_PIVOT_NOTFOUND);
+ return;
+ }
+ if (pDesc->HasRangeName())
+ {
+ ScDPCollection::NameCaches& rCaches = pDPs->GetNameCaches();
+ rCaches.removeCache(pDesc->GetRangeName());
+ }
+ else
+ {
+ ScDPCollection::SheetCaches& rCaches = pDPs->GetSheetCaches();
+ rCaches.removeCache(pDesc->GetSourceRange());
+ }
+ }
+ else if (pDPObj->IsImportData())
+ {
+ // data source is external database.
+ const ScImportSourceDesc* pDesc = pDPObj->GetImportSourceDesc();
+ if (!pDesc)
+ {
+ ErrorMessage(STR_PIVOT_NOTFOUND);
+ return;
+ }
+ ScDPCollection::DBCaches& rCaches = pDPs->GetDBCaches();
+ rCaches.removeCache(pDesc->GetCommandType(), pDesc->aDBName, pDesc->aObject);
+ }
+
ScDBDocFunc aFunc( *pDocSh );
aFunc.DataPilotUpdate( pDPObj, pDPObj, true, false );
CursorPosChanged(); // shells may be switched
diff --git a/scp2/source/writer/module_writer.scp b/scp2/source/writer/module_writer.scp
index 3071059f282b..e66214bbc71c 100644
--- a/scp2/source/writer/module_writer.scp
+++ b/scp2/source/writer/module_writer.scp
@@ -51,6 +51,7 @@ Module gid_Module_Prg_Wrt_Bin
gid_File_Lib_Wpft,
gid_File_Lib_Msworks,
gid_File_Lib_T602Filter,
+ gid_File_Lib_Writerfilter,
gid_File_Lib_Wlwp,
gid_File_Share_Config_Sofficecfg_Writer_Menubar_Xml,
gid_File_Share_Config_Sofficecfg_Writerweb_Menubar_Xml,
diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index 0466af7e6418..5b904608da9c 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -772,7 +772,7 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
}
else
{
- if ( pPortion && pPortion->mnCharHeight > (sal_uInt16)( ((double)-nLineSpacing) * 0.001 * 72.0 / 2.54 ) ) // 1/100mm to point
+ if ( !pPara->mbFixedLineSpacing && pPortion && pPortion->mnCharHeight > (sal_uInt16)( ((double)-nLineSpacing) * 0.001 * 72.0 / 2.54 ) ) // 1/100mm to point
nLineSpacing = nNormalSpacing;
else
nLineSpacing = (sal_Int16)( (double)nLineSpacing / 4.40972 );
diff --git a/sd/source/filter/eppt/pptx-text.cxx b/sd/source/filter/eppt/pptx-text.cxx
index abc9755be9af..9b2ca2925bc2 100644
--- a/sd/source/filter/eppt/pptx-text.cxx
+++ b/sd/source/filter/eppt/pptx-text.cxx
@@ -1118,11 +1118,15 @@ void ParagraphObj::ImplGetParagraphValues( PPTExBulletProvider& rBuProv, sal_Boo
= *( (::com::sun::star::style::LineSpacing*)mAny.getValue() );
switch ( aLineSpacing.Mode )
{
+ case ::com::sun::star::style::LineSpacingMode::FIX :
+ mnLineSpacing = (sal_Int16)(-( aLineSpacing.Height ) );
+ mbFixedLineSpacing = sal_True;
+ break;
case ::com::sun::star::style::LineSpacingMode::MINIMUM :
case ::com::sun::star::style::LineSpacingMode::LEADING :
- case ::com::sun::star::style::LineSpacingMode::FIX :
mnLineSpacing = (sal_Int16)(-( aLineSpacing.Height ) );
- break;
+ mbFixedLineSpacing = sal_False;
+ break;
case ::com::sun::star::style::LineSpacingMode::PROP :
default:
diff --git a/sd/source/filter/ppt/propread.cxx b/sd/source/filter/ppt/propread.cxx
index 150acf381c4d..961c779a95a0 100644
--- a/sd/source/filter/ppt/propread.cxx
+++ b/sd/source/filter/ppt/propread.cxx
@@ -503,8 +503,12 @@ void Section::Read( SvStorageStream *pStrm )
break;
case VT_LPWSTR :
+ {
*pStrm >> nTemp;
- nPropSize += ( nTemp << 1 ) + 4;
+ // looks like these are aligned to 4 bytes
+ sal_uInt32 nLength = nPropOfs + nSecOfs + nPropSize + ( nTemp << 1 ) + 4;
+ nPropSize += ( nTemp << 1 ) + 4 + (nLength % 4);
+ }
break;
case VT_BLOB_OBJECT :
@@ -540,6 +544,9 @@ void Section::Read( SvStorageStream *pStrm )
break;
}
pStrm->Seek( nPropOfs + nSecOfs );
+ // make sure we don't overflow the section size
+ if( nPropSize > nSecSize - nSecOfs )
+ nPropSize = nSecSize - nSecOfs;
sal_uInt8* pBuf = new sal_uInt8[ nPropSize ];
pStrm->Read( pBuf, nPropSize );
AddProperty( nPropId, pBuf, nPropSize );
diff --git a/sd/source/filter/sdfilter.cxx b/sd/source/filter/sdfilter.cxx
index c92ccfb06351..56b13fe9247c 100644
--- a/sd/source/filter/sdfilter.cxx
+++ b/sd/source/filter/sdfilter.cxx
@@ -93,7 +93,8 @@ extern "C" { static void SAL_CALL thisModule() {} }
::osl::Module* SdFilter::OpenLibrary( const ::rtl::OUString& rLibraryName ) const
{
std::auto_ptr< osl::Module > mod(new osl::Module);
- return mod->loadRelative(&thisModule, ImplGetFullLibraryName(rLibraryName))
+ return mod->loadRelative(&thisModule, ImplGetFullLibraryName(rLibraryName),
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY)
? mod.release() : 0;
}
diff --git a/sd/source/ui/dlg/paragr.cxx b/sd/source/ui/dlg/paragr.cxx
index 75b21600b07b..36751843fb0f 100644
--- a/sd/source/ui/dlg/paragr.cxx
+++ b/sd/source/ui/dlg/paragr.cxx
@@ -192,4 +192,18 @@ SdParagraphDlg::SdParagraphDlg( Window* pParent, const SfxItemSet* pAttr )
AddTabPage( RID_SVXPAGE_TABULATOR );
}
+void SdParagraphDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
+{
+ SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
+ switch( nId )
+ {
+ case RID_SVXPAGE_STD_PARAGRAPH:
+ aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST, MM50/2));
+ rPage.PageCreated(aSet);
+ break;
+ default:
+ break;
+ }
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/sdabstdlg.cxx b/sd/source/ui/dlg/sdabstdlg.cxx
index e9497cc3ea26..e7e504bd5456 100644
--- a/sd/source/ui/dlg/sdabstdlg.cxx
+++ b/sd/source/ui/dlg/sdabstdlg.cxx
@@ -43,7 +43,8 @@ SdAbstractDialogFactory* SdAbstractDialogFactory::Create()
{
SdFuncPtrCreateDialogFactory fp = 0;
static ::osl::Module aDialogLibrary;
- if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( RTL_CONSTASCII_USTRINGPARAM( DLL_NAME ) ) ) )
+ if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( RTL_CONSTASCII_USTRINGPARAM( DLL_NAME ) ),
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY ) )
fp = ( SdAbstractDialogFactory* (__LOADONCALLAPI*)() )
aDialogLibrary.getFunctionSymbol( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDialogFactory")) );
if ( fp )
diff --git a/sd/source/ui/inc/paragr.hxx b/sd/source/ui/inc/paragr.hxx
index af801492672d..89d77c7b9d54 100644
--- a/sd/source/ui/inc/paragr.hxx
+++ b/sd/source/ui/inc/paragr.hxx
@@ -44,6 +44,8 @@ class SdParagraphDlg : public SfxTabDialog
private:
const SfxItemSet& rOutAttrs;
+ virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage );
+
public:
SdParagraphDlg( Window* pParent, const SfxItemSet* pAttr );
~SdParagraphDlg() {};
diff --git a/sd/source/ui/slideshow/slideshowviewimpl.cxx b/sd/source/ui/slideshow/slideshowviewimpl.cxx
index 0d0673d84414..1566e81c92e3 100644
--- a/sd/source/ui/slideshow/slideshowviewimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowviewimpl.cxx
@@ -353,11 +353,7 @@ geometry::AffineMatrix2D SAL_CALL SlideShowView::getTransformation( ) throw (Ru
return geometry::AffineMatrix2D (1,0,0,0,1,0);
}
- // Reduce available width by one, as the slides might actually
- // render one pixel wider and higher as aPageSize below specifies
- // (when shapes of page size have visible border lines)
- const Size aWindowSize( rTmpSize.Width()-1,
- rTmpSize.Height()-1 );
+ const Size aWindowSize( mrOutputWindow.GetSizePixel() );
Size aOutputSize( aWindowSize );
if( meAnimationMode != ANIMATIONMODE_SHOW )
@@ -384,6 +380,12 @@ geometry::AffineMatrix2D SAL_CALL SlideShowView::getTransformation( ) throw (Ru
Point aOutputOffset( ( aWindowSize.Width() - aOutputSize.Width() ) >> 1,
( aWindowSize.Height() - aOutputSize.Height() ) >> 1 );
+ // Reduce available width by one, as the slides might actually
+ // render one pixel wider and higher as aPageSize below specifies
+ // (when shapes of page size have visible border lines)
+ aOutputSize.Width() --;
+ aOutputSize.Height() --;
+
maPresentationArea = Rectangle( aOutputOffset, aOutputSize );
mrOutputWindow.SetPresentationArea( maPresentationArea );
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 9d3cc6f343f7..b9f86d91fb88 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -1942,7 +1942,9 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& r
// if necessary, the master page interactions will be exported first
sal_Bool bIsBackgroundObjectsVisible = sal_False; // #i39428# IsBackgroundObjectsVisible not available for Draw
const rtl::OUString sIsBackgroundObjectsVisible( RTL_CONSTASCII_USTRINGPARAM( "IsBackgroundObjectsVisible" ) );
- if ( mbImpressDoc && ( xPagePropSet->getPropertyValue( sIsBackgroundObjectsVisible ) >>= bIsBackgroundObjectsVisible ) && bIsBackgroundObjectsVisible )
+ if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sIsBackgroundObjectsVisible ) )
+ xPagePropSet->getPropertyValue( sIsBackgroundObjectsVisible ) >>= bIsBackgroundObjectsVisible;
+ if ( mbImpressDoc && bIsBackgroundObjectsVisible )
{
uno::Reference< drawing::XMasterPageTarget > xMasterPageTarget( xPage, uno::UNO_QUERY );
if ( xMasterPageTarget.is() )
@@ -1981,82 +1983,93 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& r
const rtl::OUString sSpeed ( RTL_CONSTASCII_USTRINGPARAM( "Speed" ) );
sal_Int32 nTime = 800;
presentation::AnimationSpeed aAs;
- aAny = xPagePropSet->getPropertyValue( sSpeed );
- if ( aAny >>= aAs )
+ if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sSpeed ) )
{
- switch( aAs )
+ aAny = xPagePropSet->getPropertyValue( sSpeed );
+ if ( aAny >>= aAs )
{
- case presentation::AnimationSpeed_SLOW : nTime = 1500; break;
- case presentation::AnimationSpeed_FAST : nTime = 300; break;
- default:
- case presentation::AnimationSpeed_MEDIUM : nTime = 800;
+ switch( aAs )
+ {
+ case presentation::AnimationSpeed_SLOW : nTime = 1500; break;
+ case presentation::AnimationSpeed_FAST : nTime = 300; break;
+ default:
+ case presentation::AnimationSpeed_MEDIUM : nTime = 800;
+ }
}
}
presentation::FadeEffect eFe;
- aAny = xPagePropSet->getPropertyValue( sEffect );
vcl::PDFWriter::PageTransition eType = vcl::PDFWriter::Regular;
- if ( aAny >>= eFe )
+ if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sEffect ) )
{
- switch( eFe )
+ aAny = xPagePropSet->getPropertyValue( sEffect );
+ if ( aAny >>= eFe )
{
- case presentation::FadeEffect_HORIZONTAL_LINES :
- case presentation::FadeEffect_HORIZONTAL_CHECKERBOARD :
- case presentation::FadeEffect_HORIZONTAL_STRIPES : eType = vcl::PDFWriter::BlindsHorizontal; break;
-
- case presentation::FadeEffect_VERTICAL_LINES :
- case presentation::FadeEffect_VERTICAL_CHECKERBOARD :
- case presentation::FadeEffect_VERTICAL_STRIPES : eType = vcl::PDFWriter::BlindsVertical; break;
-
- case presentation::FadeEffect_UNCOVER_TO_RIGHT :
- case presentation::FadeEffect_UNCOVER_TO_UPPERRIGHT :
- case presentation::FadeEffect_ROLL_FROM_LEFT :
- case presentation::FadeEffect_FADE_FROM_UPPERLEFT :
- case presentation::FadeEffect_MOVE_FROM_UPPERLEFT :
- case presentation::FadeEffect_FADE_FROM_LEFT :
- case presentation::FadeEffect_MOVE_FROM_LEFT : eType = vcl::PDFWriter::WipeLeftToRight; break;
-
- case presentation::FadeEffect_UNCOVER_TO_BOTTOM :
- case presentation::FadeEffect_UNCOVER_TO_LOWERRIGHT :
- case presentation::FadeEffect_ROLL_FROM_TOP :
- case presentation::FadeEffect_FADE_FROM_UPPERRIGHT :
- case presentation::FadeEffect_MOVE_FROM_UPPERRIGHT :
- case presentation::FadeEffect_FADE_FROM_TOP :
- case presentation::FadeEffect_MOVE_FROM_TOP : eType = vcl::PDFWriter::WipeTopToBottom; break;
-
- case presentation::FadeEffect_UNCOVER_TO_LEFT :
- case presentation::FadeEffect_UNCOVER_TO_LOWERLEFT :
- case presentation::FadeEffect_ROLL_FROM_RIGHT :
-
- case presentation::FadeEffect_FADE_FROM_LOWERRIGHT :
- case presentation::FadeEffect_MOVE_FROM_LOWERRIGHT :
- case presentation::FadeEffect_FADE_FROM_RIGHT :
- case presentation::FadeEffect_MOVE_FROM_RIGHT : eType = vcl::PDFWriter::WipeRightToLeft; break;
-
- case presentation::FadeEffect_UNCOVER_TO_TOP :
- case presentation::FadeEffect_UNCOVER_TO_UPPERLEFT :
- case presentation::FadeEffect_ROLL_FROM_BOTTOM :
- case presentation::FadeEffect_FADE_FROM_LOWERLEFT :
- case presentation::FadeEffect_MOVE_FROM_LOWERLEFT :
- case presentation::FadeEffect_FADE_FROM_BOTTOM :
- case presentation::FadeEffect_MOVE_FROM_BOTTOM : eType = vcl::PDFWriter::WipeBottomToTop; break;
-
- case presentation::FadeEffect_OPEN_VERTICAL : eType = vcl::PDFWriter::SplitHorizontalInward; break;
- case presentation::FadeEffect_CLOSE_HORIZONTAL : eType = vcl::PDFWriter::SplitHorizontalOutward; break;
-
- case presentation::FadeEffect_OPEN_HORIZONTAL : eType = vcl::PDFWriter::SplitVerticalInward; break;
- case presentation::FadeEffect_CLOSE_VERTICAL : eType = vcl::PDFWriter::SplitVerticalOutward; break;
-
- case presentation::FadeEffect_FADE_TO_CENTER : eType = vcl::PDFWriter::BoxInward; break;
- case presentation::FadeEffect_FADE_FROM_CENTER : eType = vcl::PDFWriter::BoxOutward; break;
-
- case presentation::FadeEffect_NONE : eType = vcl::PDFWriter::Regular; break;
-
- case presentation::FadeEffect_RANDOM :
- case presentation::FadeEffect_DISSOLVE :
- default: eType = vcl::PDFWriter::Dissolve; break;
+ switch( eFe )
+ {
+ case presentation::FadeEffect_HORIZONTAL_LINES :
+ case presentation::FadeEffect_HORIZONTAL_CHECKERBOARD :
+ case presentation::FadeEffect_HORIZONTAL_STRIPES : eType = vcl::PDFWriter::BlindsHorizontal; break;
+
+ case presentation::FadeEffect_VERTICAL_LINES :
+ case presentation::FadeEffect_VERTICAL_CHECKERBOARD :
+ case presentation::FadeEffect_VERTICAL_STRIPES : eType = vcl::PDFWriter::BlindsVertical; break;
+
+ case presentation::FadeEffect_UNCOVER_TO_RIGHT :
+ case presentation::FadeEffect_UNCOVER_TO_UPPERRIGHT :
+ case presentation::FadeEffect_ROLL_FROM_LEFT :
+ case presentation::FadeEffect_FADE_FROM_UPPERLEFT :
+ case presentation::FadeEffect_MOVE_FROM_UPPERLEFT :
+ case presentation::FadeEffect_FADE_FROM_LEFT :
+ case presentation::FadeEffect_MOVE_FROM_LEFT : eType = vcl::PDFWriter::WipeLeftToRight; break;
+
+ case presentation::FadeEffect_UNCOVER_TO_BOTTOM :
+ case presentation::FadeEffect_UNCOVER_TO_LOWERRIGHT :
+ case presentation::FadeEffect_ROLL_FROM_TOP :
+ case presentation::FadeEffect_FADE_FROM_UPPERRIGHT :
+ case presentation::FadeEffect_MOVE_FROM_UPPERRIGHT :
+ case presentation::FadeEffect_FADE_FROM_TOP :
+ case presentation::FadeEffect_MOVE_FROM_TOP : eType = vcl::PDFWriter::WipeTopToBottom; break;
+
+ case presentation::FadeEffect_UNCOVER_TO_LEFT :
+ case presentation::FadeEffect_UNCOVER_TO_LOWERLEFT :
+ case presentation::FadeEffect_ROLL_FROM_RIGHT :
+
+ case presentation::FadeEffect_FADE_FROM_LOWERRIGHT :
+ case presentation::FadeEffect_MOVE_FROM_LOWERRIGHT :
+ case presentation::FadeEffect_FADE_FROM_RIGHT :
+ case presentation::FadeEffect_MOVE_FROM_RIGHT : eType = vcl::PDFWriter::WipeRightToLeft; break;
+
+ case presentation::FadeEffect_UNCOVER_TO_TOP :
+ case presentation::FadeEffect_UNCOVER_TO_UPPERLEFT :
+ case presentation::FadeEffect_ROLL_FROM_BOTTOM :
+ case presentation::FadeEffect_FADE_FROM_LOWERLEFT :
+ case presentation::FadeEffect_MOVE_FROM_LOWERLEFT :
+ case presentation::FadeEffect_FADE_FROM_BOTTOM :
+ case presentation::FadeEffect_MOVE_FROM_BOTTOM : eType = vcl::PDFWriter::WipeBottomToTop; break;
+
+ case presentation::FadeEffect_OPEN_VERTICAL : eType = vcl::PDFWriter::SplitHorizontalInward; break;
+ case presentation::FadeEffect_CLOSE_HORIZONTAL : eType = vcl::PDFWriter::SplitHorizontalOutward; break;
+
+ case presentation::FadeEffect_OPEN_HORIZONTAL : eType = vcl::PDFWriter::SplitVerticalInward; break;
+ case presentation::FadeEffect_CLOSE_VERTICAL : eType = vcl::PDFWriter::SplitVerticalOutward; break;
+
+ case presentation::FadeEffect_FADE_TO_CENTER : eType = vcl::PDFWriter::BoxInward; break;
+ case presentation::FadeEffect_FADE_FROM_CENTER : eType = vcl::PDFWriter::BoxOutward; break;
+
+ case presentation::FadeEffect_NONE : eType = vcl::PDFWriter::Regular; break;
+
+ case presentation::FadeEffect_RANDOM :
+ case presentation::FadeEffect_DISSOLVE :
+ default: eType = vcl::PDFWriter::Dissolve; break;
+ }
}
}
- pPDFExtOutDevData->SetPageTransition( eType, nTime, -1 );
+
+ if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sEffect ) ||
+ xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sSpeed ) )
+ {
+ pPDFExtOutDevData->SetPageTransition( eType, nTime, -1 );
+ }
}
}
}
@@ -2103,7 +2116,7 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& r
}
//<--- #i56629, #i40318
}
- catch( uno::Exception& )
+ catch( uno::Exception& e )
{
}
diff --git a/set_soenv.in b/set_soenv.in
index 01865ded5f8a..a1bd947380de 100755
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -70,10 +70,11 @@ my ( $BIG_SVX, $COM, $ARCH, $CPU, $CPUNAME, $CVER, $GLIBC, $GUI, $GUIBASE,
my ( $USR, $ETC, $BIN, $LIB, $LIB64, $INC, $INCLUDE, $DEV, $OPT, $LOCAL, $SOLENV, $SOLVER, $CONFIG, $DEFIMGS,
$USR_BIN, $USR_LIB, $USR_LOCAL, $USR_CCS, $JAVA_BIN, $JAVA_LIB, $JAVA_INCLUDE,
$SOLARENVINC, $USR_DT, $USR_OPENWIN, $XLIB, $XINC,
- $CYGWIN_PATH, $language, $dict, $ASM_PATH, $NSIS_PATH, $PERL_PATH, $CL_X64 );
+ $CYGWIN_PATH, $language, @languages, $ASM_PATH, $NSIS_PATH, $PERL_PATH, $CL_X64 );
# Environment variables.
my ( $oldPATH, $SRC_ROOT, $SO_HOME, $JAVA_HOME, $JDK, $JAVAFLAGS, $OOO_SHELL,
+ $L10N_MODULE, $WITH_POOR_HELP_LOCALIZATIONS,
$UPD, $WORK_STAMP, $gb_REPOS, $BUILD_TYPE,
$SOLARSRC, $DEVROOT, $SOLARVER, $SOLARVERSION, $WORKDIR, $OUTDIR, $SOLARENV, $SOLARDEFIMG,
$STAR_INIROOT, $STAR_INIROOTOLD, $STAR_STANDLST, $STAR_SSCOMMON, $STAR_SSOLARINI,
@@ -1062,6 +1063,23 @@ $CLASSPATH = '$JAVA_HOME'.$ds.'jre'.$LIB.$ds."rt.jar".$wps.'.';
# see above for why the change
$XCLASSPATH = '$JAVA_HOME'.$ds.'jre'.$LIB.$ds."rt.jar".$wps.'.';
+# Location of the translations module
+$L10N_MODULE = PathFormat($SRC_ROOT."/translations");
+
+# Check for poor help localizations, i.e. no help translation at all...
+opendir(DIR,$L10N_MODULE . "/source");
+@languages = readdir(DIR);
+closedir(DIR);
+$WITH_POOR_HELP_LOCALIZATIONS = "";
+
+foreach $language (@languages)
+{
+ if ( ($language ne ".") && ($language ne "..") && (! -d $L10N_MODULE . "/source/" . $language . "/helpcontent2") )
+ {
+ $WITH_POOR_HELP_LOCALIZATIONS = $WITH_POOR_HELP_LOCALIZATIONS . " " . $language;
+ }
+}
+
# Location used by the linker to create libraries.
if ($platform =~ m/solaris/)
{ $SOLAREXTRALIB = $L.$par_dir.$LIB.
@@ -1555,6 +1573,7 @@ CreateFileHeader( *OUT, $UPD, $platform, "sh/bash/ksh", "#" );
ToFile( "SRC_ROOT", $SRC_ROOT, "e" );
ToFile( "OOO_SHELL", $OOO_SHELL, "e" );
ToFile( "JAVA_HOME", $JAVA_HOME, "e" );
+ToFile( "L10N_MODULE", $L10N_MODULE, "e" );
ToFile( "ANT_HOME", PathFormat("@ANT_HOME@"), "e" );
ToFile( "ANT_LIB", PathFormat("@ANT_LIB@"), "e" );
ToFile( "ANT", PathFormat("@ANT@"), "e" );
@@ -1574,7 +1593,7 @@ ToFile( "INTRO_BITMAP", "@INTRO_BITMAP@", "e" );
ToFile( "ABOUT_BITMAP", "@ABOUT_BITMAP@", "e" );
ToFile( "OOO_VENDOR", "@OOO_VENDOR@", "e" );
ToFile( "OOODMAKEMODE", "YES", "e" );
-ToFile( "WITH_POOR_HELP_LOCALIZATIONS", "@WITH_POOR_HELP_LOCALIZATIONS@", "e" );
+ToFile( "WITH_POOR_HELP_LOCALIZATIONS", $WITH_POOR_HELP_LOCALIZATIONS, "e" );
ToFile( "CALL_CDECL", $CALL_CDECL, "e" );
ToFile( "COMMON_OUTDIR", $COMMON_OUTDIR, "e" );
@@ -1939,6 +1958,7 @@ ToFile( "DB_LIB", "@DB_LIB@", "e" );
ToFile( "DB_CPPLIB", "@DB_CPPLIB@", "e" );
ToFile( "DB_INCLUDES", "@DB_INCLUDES@", "e" );
ToFile( "ENABLE_MYSQLC", "@ENABLE_MYSQLC@", "e" );
+ToFile( "ENABLE_LOMENUBAR", "@ENABLE_LOMENUBAR@", "e" );
ToFile( "SYSTEM_MYSQL", "@SYSTEM_MYSQL@", "e" );
ToFile( "SYSTEM_MYSQL_CPPCONN","@SYSTEM_MYSQL_CPPCONN@","e" );
ToFile( "MYSQL_INC", "@MYSQL_INC@", "e" );
diff --git a/setup_native/source/mac/ooo/DS_Store b/setup_native/source/mac/ooo/DS_Store
index af137c0e6c41..4f65b8132b00 100644
--- a/setup_native/source/mac/ooo/DS_Store
+++ b/setup_native/source/mac/ooo/DS_Store
Binary files differ
diff --git a/setup_native/source/mac/ooo/DS_Store_Langpack b/setup_native/source/mac/ooo/DS_Store_Langpack
index 21b08ffb18cc..3a8ad71a5660 100644
--- a/setup_native/source/mac/ooo/DS_Store_Langpack
+++ b/setup_native/source/mac/ooo/DS_Store_Langpack
Binary files differ
diff --git a/setup_native/source/packinfo/spellchecker_selection.txt b/setup_native/source/packinfo/spellchecker_selection.txt
index f5344b9860ef..34ea3b29e4a3 100644
--- a/setup_native/source/packinfo/spellchecker_selection.txt
+++ b/setup_native/source/packinfo/spellchecker_selection.txt
@@ -8,47 +8,107 @@
# shall be included into the language pack, the keyword "EMPTY" can
# be used as first entry.
-af = "af,en-US"
-ar = "EMPTY,en-US"
-ca = "ca,es,en-US,fr"
-cs = "cs,en-US"
-da = "da,de-DE,en-US"
-de = "de-DE,de-AT,de-CH,en-US,fr,it"
-en-US = "en-US,es,fr"
-en-GB = "en-US,es,fr"
-es = "es,en-US,fr,pt"
-et = "et,en-US"
-fr = "fr,en-US,es"
-gl = "gl,en-US,pt,es"
-he = "he,en-US"
-hu = "hu,de-DE,en-US"
-hr = "hr,de-DE,en-US"
-it = "it,de-DE,en-US,fr"
-ja = "EMPTY,en-US"
-ko = "EMPTY,en-US"
-ku = "ku-TR,en-US"
-lt = "lt,en-US"
-nb = "no,en-US,fr,de-DE,es"
-ne = "ne,en-US"
-nl = "nl,en-US,fr,de-DE"
-nn = "no,en-US,fr,de-DE,es"
-oc = "oc,fr,en-US"
-pl = "pl,de-DE,en-US,ru"
-pt-BR = "pt,en-US,es"
-pt = "pt,en-US,es"
-ro = "ro,en-US,de-DE,hu"
-ru = "ru,de-DE,en-US"
-sk = "sk,en-US"
-sl = "sl,en-US"
-sv = "sv,de-DE,en-US"
-sr = "sr,en-US"
-# ! Note the package 'sr' also holds the dictionaries for 'sh' !
-sh = "sr,en-US"
-sw = "sw,en-US"
-th = "th,en-US"
-uk = "uk,ru,en-US"
-vi = "vi,en-US,fr"
-zh-TW = "EMPTY,en-US"
-zh-CN = "EMPTY,en-US"
-zu = "zu,en-US"
-
+af = "EMPTY"
+ar = "EMPTY"
+as = "EMPTY"
+ast = "EMPTY"
+be = "EMPTY"
+bg = "EMPTY"
+bn = "EMPTY"
+bo = "EMPTY"
+br = "EMPTY"
+brx = "EMPTY"
+bs = "EMPTY"
+ca = "EMPTY"
+ca-XV = "EMPTY"
+cs = "EMPTY"
+cy = "EMPTY"
+da = "EMPTY"
+de = "EMPTY"
+dgo = "EMPTY"
+dz = "EMPTY"
+el = "EMPTY"
+en-GB = "EMPTY"
+en-US = "en,af,br,ca,cs,da,de-AT,de-CH,de-DE,es,et,fr,gl,he,hr,hu,it,ku-TR,lt,ne,nl,no,oc,pl,pt,ro,ru,sk,sl,sr,sv,sw,th,uk,vi,zu"
+en-ZA = "EMPTY"
+eo = "EMPTY"
+es = "EMPTY"
+et = "EMPTY"
+eu = "EMPTY"
+fa = "EMPTY"
+fi = "EMPTY"
+fr = "EMPTY"
+ga = "EMPTY"
+gl = "EMPTY"
+gu = "EMPTY"
+he = "EMPTY"
+hi = "EMPTY"
+hr = "EMPTY"
+hu = "EMPTY"
+id = "EMPTY"
+is = "EMPTY"
+it = "EMPTY"
+ja = "EMPTY"
+ka = "EMPTY"
+kk = "EMPTY"
+km = "EMPTY"
+kn = "EMPTY"
+ko = "EMPTY"
+kok = "EMPTY"
+ks = "EMPTY"
+ku = "EMPTY"
+lo = "EMPTY"
+lt = "EMPTY"
+lv = "EMPTY"
+mai = "EMPTY"
+mk = "EMPTY"
+ml = "EMPTY"
+mn = "EMPTY"
+mni = "EMPTY"
+mr = "EMPTY"
+my = "EMPTY"
+nb = "EMPTY"
+ne = "EMPTY"
+nl = "EMPTY"
+nn = "EMPTY"
+nr = "EMPTY"
+nso = "EMPTY"
+oc = "EMPTY"
+om = "EMPTY"
+or = "EMPTY"
+pa-IN = "EMPTY"
+pl = "EMPTY"
+pt = "EMPTY"
+pt-BR = "EMPTY"
+ro = "EMPTY"
+ru = "EMPTY"
+rw = "EMPTY"
+sa-IN = "EMPTY"
+sat = "EMPTY"
+sd = "EMPTY"
+sh = "EMPTY"
+si = "EMPTY"
+sk = "EMPTY"
+sl = "EMPTY"
+sq = "EMPTY"
+sr = "EMPTY"
+ss = "EMPTY"
+st = "EMPTY"
+sv = "EMPTY"
+sw-TZ = "EMPTY"
+ta = "EMPTY"
+te = "EMPTY"
+tg = "EMPTY"
+th = "EMPTY"
+tn = "EMPTY"
+tr = "EMPTY"
+ts = "EMPTY"
+ug = "EMPTY"
+uk = "EMPTY"
+uz = "EMPTY"
+ve = "EMPTY"
+vi = "EMPTY"
+xh = "EMPTY"
+zh-CN = "EMPTY"
+zh-TW = "EMPTY"
+zu = "EMPTY"
diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx b/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx
index 45fbed4819d2..5220b1ed6d0c 100644
--- a/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx
+++ b/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx
@@ -81,6 +81,14 @@ void Registrar::RegisterForMsWord() const
RegistrationContextInformation::Writer);
RegisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXWordDocumentFileExtension(),
+ m_ContextInformation.GetMOOXWordDocumentDisplayName(),
+ m_ContextInformation.GetWordDocumentDefaultIconEntry(),
+ m_ContextInformation.GetWordDocumentDefaultShellCommand(),
+ m_ContextInformation.ShellNewCommandDisplayName(),
+ RegistrationContextInformation::Writer);
+
+ RegisterForMsOfficeApplication(
m_ContextInformation.GetWordTemplateFileExtension(),
m_ContextInformation.GetWordTemplateDisplayName(),
m_ContextInformation.GetWordTemplateDefaultIconEntry(),
@@ -114,6 +122,14 @@ void Registrar::UnregisterForMsWord() const
try
{
UnregisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXWordDocumentFileExtension());
+ }
+ catch(RegistryKeyNotFoundException&)
+ {}
+
+ try
+ {
+ UnregisterForMsOfficeApplication(
m_ContextInformation.GetWordTemplateFileExtension());
}
catch(RegistryKeyNotFoundException&)
@@ -192,6 +208,14 @@ void Registrar::RegisterForMsExcel() const
RegistrationContextInformation::Calc);
RegisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXExcelSheetFileExtension(),
+ m_ContextInformation.GetMOOXExcelSheetDisplayName(),
+ m_ContextInformation.GetExcelSheetDefaultIconEntry(),
+ m_ContextInformation.GetExcelSheetDefaultShellCommand(),
+ m_ContextInformation.ShellNewCommandDisplayName(),
+ RegistrationContextInformation::Calc);
+
+ RegisterForMsOfficeApplication(
m_ContextInformation.GetExcelTemplateFileExtension(),
m_ContextInformation.GetExcelTemplateDisplayName(),
m_ContextInformation.GetExcelTemplateDefaultIconEntry(),
@@ -217,6 +241,22 @@ void Registrar::UnregisterForMsExcel() const
try
{
UnregisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXExcelSheetFileExtension());
+ }
+ catch(RegistryKeyNotFoundException&)
+ {}
+
+ try
+ {
+ UnregisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXPowerPointDocumentFileExtension());
+ }
+ catch(RegistryKeyNotFoundException&)
+ {}
+
+ try
+ {
+ UnregisterForMsOfficeApplication(
m_ContextInformation.GetExcelTemplateFileExtension());
}
catch(RegistryKeyNotFoundException&)
@@ -244,6 +284,14 @@ void Registrar::RegisterForMsPowerPoint() const
RegistrationContextInformation::Impress);
RegisterForMsOfficeApplication(
+ m_ContextInformation.GetMOOXPowerPointDocumentFileExtension(),
+ m_ContextInformation.GetMOOXPowerPointDocumentDisplayName(),
+ m_ContextInformation.GetPowerPointDocumentDefaultIconEntry(),
+ m_ContextInformation.GetPowerPointDocumentDefaultShellCommand(),
+ m_ContextInformation.ShellNewCommandDisplayName(),
+ RegistrationContextInformation::Impress);
+
+ RegisterForMsOfficeApplication(
m_ContextInformation.GetPowerPointShowFileExtension(),
m_ContextInformation.GetPowerPointShowDisplayName(),
m_ContextInformation.GetPowerPointShowDefaultIconEntry(),
diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx
index f07c35a4d988..2f04d319dd80 100644
--- a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx
+++ b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx
@@ -53,6 +53,18 @@ std::wstring RegistrationContextInformation::GetWordDocumentDefaultShellCommand(
return std::wstring(TEXT("open"));
}
+std::wstring RegistrationContextInformation::GetMOOXWordDocumentDisplayName() const
+{
+ std::wstring str;
+ str = TEXT("Microsoft Word 2007 Document");
+ return str;
+}
+
+std::wstring RegistrationContextInformation::GetMOOXWordDocumentFileExtension() const
+{
+ return std::wstring(TEXT(".docx"));
+}
+
std::wstring RegistrationContextInformation::GetWordTemplateDisplayName() const
{
std::wstring str;
@@ -125,6 +137,18 @@ std::wstring RegistrationContextInformation::GetExcelSheetDefaultShellCommand()
return std::wstring(TEXT("open"));
}
+std::wstring RegistrationContextInformation::GetMOOXExcelSheetDisplayName() const
+{
+ std::wstring str;
+ str = TEXT("Microsoft Excel 2007 Spreadsheet");
+ return str;
+}
+
+std::wstring RegistrationContextInformation::GetMOOXExcelSheetFileExtension() const
+{
+ return std::wstring(TEXT(".xlsx"));
+}
+
std::wstring RegistrationContextInformation::GetExcelTemplateDisplayName() const
{
std::wstring str;
@@ -173,6 +197,18 @@ std::wstring RegistrationContextInformation::GetPowerPointDocumentDefaultShellCo
return std::wstring(TEXT("open"));
}
+std::wstring RegistrationContextInformation::GetMOOXPowerPointDocumentDisplayName() const
+{
+ std::wstring str;
+ str = TEXT("Microsoft PowerPoint 2007 Presentation");
+ return str;
+}
+
+std::wstring RegistrationContextInformation::GetMOOXPowerPointDocumentFileExtension() const
+{
+ return std::wstring(TEXT(".pptx"));
+}
+
std::wstring RegistrationContextInformation::GetPowerPointTemplateDisplayName() const
{
std::wstring str;
diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx
index 91a42e6b58d7..d3297b14775c 100644
--- a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx
+++ b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx
@@ -47,6 +47,14 @@ public:
std::wstring GetWordDocumentDefaultIconEntry() const;
std::wstring GetWordDocumentDefaultShellCommand() const;
+ /** MOOX Word document information
+ The icon index is the index of the icon
+ in soffice.exe to be associated with
+ word document files
+ */
+ std::wstring GetMOOXWordDocumentDisplayName() const;
+ std::wstring GetMOOXWordDocumentFileExtension() const;
+
/** Word template information
The icon index is the index of the icon
in soffice.exe to be associated with
@@ -77,6 +85,9 @@ public:
std::wstring GetExcelSheetDefaultIconEntry() const;
std::wstring GetExcelSheetDefaultShellCommand() const;
+ std::wstring GetMOOXExcelSheetDisplayName() const;
+ std::wstring GetMOOXExcelSheetFileExtension() const;
+
/** Excel template information
The icon index is the index of the icon
in soffice.exe to be associated with
@@ -97,6 +108,9 @@ public:
std::wstring GetPowerPointDocumentDefaultIconEntry() const;
std::wstring GetPowerPointDocumentDefaultShellCommand() const;
+ std::wstring GetMOOXPowerPointDocumentDisplayName() const;
+ std::wstring GetMOOXPowerPointDocumentFileExtension() const;
+
/** PowerPoint template information
The icon index is the index of the icon
in soffice.exe to be associated with
diff --git a/setup_native/source/win32/nsis/brobanner.bmp b/setup_native/source/win32/nsis/brobanner.bmp
deleted file mode 100644
index 0a2961accbda..000000000000
--- a/setup_native/source/win32/nsis/brobanner.bmp
+++ /dev/null
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobanner.svg b/setup_native/source/win32/nsis/brobanner.svg
deleted file mode 100644
index 041386d7cea9..000000000000
--- a/setup_native/source/win32/nsis/brobanner.svg
+++ /dev/null
@@ -1,667 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="103"
- height="58"
- id="svg3229"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="Installation (banner_OOorg_standard).svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs3231">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3237" />
- <inkscape:perspective
- id="perspective2777"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4800" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3742" />
- <inkscape:perspective
- id="perspective3744"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2870" />
- <inkscape:perspective
- id="perspective2500"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2531" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2854" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective4034" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective3939" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective3852" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- id="perspective3771" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective59" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3532" />
- <inkscape:perspective
- id="perspective2543"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2818"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2521" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4715" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4717" />
- <inkscape:perspective
- id="perspective4719"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4721"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4723"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 21.26 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4725"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4727"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4729"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4731"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4733"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4735" />
- <inkscape:perspective
- id="perspective4737"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4739" />
- <inkscape:perspective
- id="perspective4741"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4743"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4211" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 12.41 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="391.03 : 12.41 : 1"
- inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
- id="perspective3301" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 12.41 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="399.49701 : 12.41 : 1"
- inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
- id="perspective3226" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="393.207 : 18.512501 : 1"
- inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
- id="perspective3158" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="393.207 : 18.512501 : 1"
- inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
- id="perspective3146" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2623" />
- <inkscape:perspective
- id="perspective2621"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2619"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2617"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 21.26 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2615"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2613"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2611"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2609"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2607"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2753" />
- <inkscape:perspective
- id="perspective2604"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2602" />
- <inkscape:perspective
- id="perspective2600"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2598"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="401.944 : 18.512501 : 1"
- inkscape:persp3d-origin="200.972 : 12.341667 : 1"
- id="perspective2645" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="385.51999 : 18.512501 : 1"
- inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
- id="perspective2633" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 48.070499 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="212.035 : 48.070499 : 1"
- inkscape:persp3d-origin="106.0175 : 32.047 : 1"
- id="perspective2474" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 48.070499 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="212.035 : 48.070499 : 1"
- inkscape:persp3d-origin="106.0175 : 32.047 : 1"
- id="perspective2426" />
- <inkscape:perspective
- id="perspective2592"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.8135634"
- inkscape:cx="47.884284"
- inkscape:cy="27.859947"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1264"
- inkscape:window-height="750"
- inkscape:window-x="0"
- inkscape:window-y="14"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="0,1"
- position="6.203125,39.566406"
- id="guide2462" />
- <sodipodi:guide
- orientation="1,0"
- position="6.4960938,39.835938"
- id="guide2464" />
- <sodipodi:guide
- orientation="0,1"
- position="7.8046875,17.640625"
- id="guide2466" />
- <sodipodi:guide
- orientation="1,0"
- position="98.285156,17.5"
- id="guide2468" />
- </sodipodi:namedview>
- <metadata
- id="metadata3234">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Camada 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-565.64286,-466.2193)">
- <text
- transform="scale(1.0168078,0.98347)"
- font-size="103.091"
- id="text43"
- style="font-size:48.89245605px;font-family:Vegur-Regular"
- x="1429.27"
- y="552.60571" />
- <text
- transform="scale(0.9979479,1.0020563)"
- font-size="103.091"
- id="text3748"
- style="font-size:91.03964996px;font-family:Vegur-Regular"
- x="1305.9132"
- y="429.15198" />
- <g
- id="g2905"
- inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (banner_OOorg_standard).png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/banner_OOorg_standard.bmp.png"
- y="466.2193"
- x="565.64288"
- height="58"
- width="103"
- id="rect12423"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <g
- transform="matrix(0.1694148,0,0,0.1694148,607.63264,451.4171)"
- id="g2870">
- <g
- id="g4513"
- transform="translate(-397.1353,-52.392239)">
- <g
- style="fill:#000000"
- transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)"
- id="g3252">
- <path
- style="fill:#000000"
- d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
- id="path3254" />
- <path
- style="fill:#000000"
- d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
- id="path3256" />
- <path
- style="fill:#000000"
- d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
- id="path3258" />
- <path
- style="fill:#000000"
- d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
- id="path3260" />
- <path
- style="fill:#000000"
- d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
- id="path3262" />
- <path
- style="fill:#000000"
- d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
- id="path3264" />
- <path
- style="fill:#000000"
- d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
- id="path3266" />
- <path
- style="fill:#000000"
- d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
- id="path3268" />
- <path
- style="fill:#000000"
- d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
- id="path3270" />
- <path
- style="fill:#000000"
- d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
- id="path3272" />
- <path
- style="fill:#000000"
- d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
- id="path3274" />
- <path
- style="fill:#000000"
- d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
- id="path3276" />
- <path
- style="fill:#000000"
- d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
- id="path3278" />
- <path
- style="fill:#000000"
- d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
- id="path3280" />
- <path
- style="fill:#000000"
- d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
- id="path3282" />
- <path
- style="fill:#000000"
- d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
- id="path3284" />
- <path
- style="fill:#000000"
- d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
- id="path3286" />
- <path
- style="fill:#000000"
- d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
- id="path3288" />
- <path
- style="fill:#000000"
- d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
- id="path3290" />
- <path
- style="fill:#000000"
- d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
- id="path3292" />
- <path
- style="fill:#000000"
- d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
- id="path3294" />
- </g>
- <g
- style="fill:#000000"
- transform="translate(0,-8.52e-3)"
- id="g2496">
- <path
- style="fill:#18a303;fill-opacity:1"
- d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
- id="path2451" />
- <path
- style="fill:#18a303;fill-opacity:1"
- d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
- id="path2453" />
- <path
- style="fill:#000000"
- d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
- id="path2455" />
- <path
- style="fill:#000000"
- d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
- id="path2457" />
- <path
- style="fill:#000000"
- d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
- id="path2459" />
- <path
- style="fill:#000000"
- d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
- id="path2461" />
- <path
- style="fill:#000000"
- d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
- id="path2463" />
- <path
- style="fill:#000000"
- d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
- id="path2465" />
- <path
- style="fill:#18a303;fill-opacity:1"
- d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
- id="path2467" />
- </g>
- </g>
- </g>
- </g>
- <g
- id="g4297"
- style="fill:#800000"
- transform="translate(-1144.4568,291.80656)" />
- <text
- transform="scale(1.0168078,0.98347)"
- font-size="103.091"
- id="text2722"
- style="font-size:48.89245605px;font-family:Vegur-Regular"
- x="1320.4735"
- y="360.42868" />
- <text
- transform="scale(0.9979479,1.0020563)"
- font-size="103.091"
- id="text2724"
- style="font-size:91.03964996px;font-family:Vegur-Regular"
- x="1195.0607"
- y="240.53946" />
- </g>
-</svg>
diff --git a/setup_native/source/win32/nsis/brobitmap.bmp b/setup_native/source/win32/nsis/brobitmap.bmp
deleted file mode 100644
index 75dc163eb719..000000000000
--- a/setup_native/source/win32/nsis/brobitmap.bmp
+++ /dev/null
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobitmap.svg b/setup_native/source/win32/nsis/brobitmap.svg
deleted file mode 100644
index 084b5cea73fe..000000000000
--- a/setup_native/source/win32/nsis/brobitmap.svg
+++ /dev/null
@@ -1,1011 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="163"
- height="312.00006"
- id="svg3270"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="Installation (install_OOorg3_standard).svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs3272">
- <linearGradient
- id="linearGradient7426">
- <stop
- id="stop7428"
- offset="0"
- style="stop-color:#f2f2f2;stop-opacity:1" />
- <stop
- id="stop7430"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3278" />
- <inkscape:perspective
- id="perspective2777"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2551"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
- x1="286.08203"
- y1="-1.6191231"
- x2="286.08203"
- y2="357.27634" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2576"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
- x1="275.5"
- y1="369.22446"
- x2="275.5"
- y2="-3.224514" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2648"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
- x1="275.5"
- y1="369.22446"
- x2="275.5"
- y2="-3.224514" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2650"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
- x1="286.08203"
- y1="-1.6191231"
- x2="286.08203"
- y2="357.27634" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2687"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
- x1="286.08203"
- y1="-1.6191231"
- x2="286.08203"
- y2="357.27634" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2712"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
- x1="275.5"
- y1="369.22446"
- x2="275.5"
- y2="-3.224514" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4800" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3742" />
- <inkscape:perspective
- id="perspective3744"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2870" />
- <inkscape:perspective
- id="perspective2558"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2531" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2854" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective4034" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective3939" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective3852" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- id="perspective3771" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- id="perspective59" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3532" />
- <inkscape:perspective
- id="perspective2543"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2818"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2557"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
- x1="286.08203"
- y1="-1.6191231"
- x2="286.08203"
- y2="357.27634" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7426"
- id="linearGradient2582"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
- x1="275.5"
- y1="369.22446"
- x2="275.5"
- y2="-3.224514" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2521" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4715" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4717" />
- <inkscape:perspective
- id="perspective4719"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4721"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4723"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 21.26 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4725"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4727"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4729"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4731"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4733"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4735" />
- <inkscape:perspective
- id="perspective4737"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4739" />
- <inkscape:perspective
- id="perspective4741"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4743"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4211" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 12.41 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="391.03 : 12.41 : 1"
- inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
- id="perspective3301" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 12.41 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="399.49701 : 12.41 : 1"
- inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
- id="perspective3226" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="393.207 : 18.512501 : 1"
- inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
- id="perspective3158" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="393.207 : 18.512501 : 1"
- inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
- id="perspective3146" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2738" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2736" />
- <inkscape:perspective
- id="perspective2734"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2732"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2730"
- inkscape:persp3d-origin="31.18 : 14.173333 : 1"
- inkscape:vp_z="62.360001 : 21.26 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 21.26 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2728"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2726"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2724"
- inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
- inkscape:vp_z="841.89001 : 297.64001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 297.64001 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2722"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2720"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2753" />
- <inkscape:perspective
- id="perspective2717"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2715" />
- <inkscape:perspective
- id="perspective2713"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2711"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="401.944 : 18.512501 : 1"
- inkscape:persp3d-origin="200.972 : 12.341667 : 1"
- id="perspective2645" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18.512501 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="385.51999 : 18.512501 : 1"
- inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
- id="perspective2633" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 48.070499 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="212.035 : 48.070499 : 1"
- inkscape:persp3d-origin="106.0175 : 32.047 : 1"
- id="perspective2474" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 48.070499 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="212.035 : 48.070499 : 1"
- inkscape:persp3d-origin="106.0175 : 32.047 : 1"
- id="perspective2426" />
- <inkscape:perspective
- id="perspective2705"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.86454968"
- inkscape:cx="61.810684"
- inkscape:cy="115.50357"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1264"
- inkscape:window-height="750"
- inkscape:window-x="0"
- inkscape:window-y="14"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="0,1"
- position="19.710938,118.07812"
- id="guide2516" />
- <sodipodi:guide
- orientation="1,0"
- position="20,118.55078"
- id="guide2518" />
- <sodipodi:guide
- orientation="0,1"
- position="21.710938,88.113281"
- id="guide2520" />
- <sodipodi:guide
- orientation="1,0"
- position="145.44141,87.875"
- id="guide2522" />
- </sodipodi:namedview>
- <metadata
- id="metadata3275">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Camada 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-464.21428,-256.36217)">
- <g
- id="g3083"
- inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (install_OOorg3_standard).png"
- inkscape:export-xdpi="89.956017"
- inkscape:export-ydpi="89.956017">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect11604"
- width="163"
- height="312"
- x="464.29398"
- y="256.65631"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <g
- transform="matrix(0.2304648,0,0,0.2304648,294.59926,364.26495)"
- id="g3049">
- <g
- id="g3252"
- transform="matrix(1.1041871,0,0,1.1275051,876.92792,475.41355)"
- style="fill:#000000">
- <path
- id="path3254"
- d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
- style="fill:#000000" />
- <path
- id="path3256"
- d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
- style="fill:#000000" />
- <path
- id="path3258"
- d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
- style="fill:#000000" />
- <path
- id="path3260"
- d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
- style="fill:#000000" />
- <path
- id="path3262"
- d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
- style="fill:#000000" />
- <path
- id="path3264"
- d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
- style="fill:#000000" />
- <path
- id="path3266"
- d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
- style="fill:#000000" />
- <path
- id="path3268"
- d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
- style="fill:#000000" />
- <path
- id="path3270"
- d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
- style="fill:#000000" />
- <path
- id="path3272"
- d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
- style="fill:#000000" />
- <path
- id="path3274"
- d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
- style="fill:#000000" />
- <path
- id="path3276"
- d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
- style="fill:#000000" />
- <path
- id="path3278"
- d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
- style="fill:#000000" />
- <path
- id="path3280"
- d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
- style="fill:#000000" />
- <path
- id="path3282"
- d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
- style="fill:#000000" />
- <path
- id="path3284"
- d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
- style="fill:#000000" />
- <path
- id="path3286"
- d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
- style="fill:#000000" />
- <path
- id="path3288"
- d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
- style="fill:#000000" />
- <path
- id="path3290"
- d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
- style="fill:#000000" />
- <path
- id="path3292"
- d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
- style="fill:#000000" />
- <path
- id="path3294"
- d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
- style="fill:#000000" />
- </g>
- <g
- id="g2496"
- transform="translate(636.32843,125.00871)"
- style="fill:#000000">
- <path
- id="path2451"
- d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
- style="fill:#18a303;fill-opacity:1" />
- <path
- id="path2453"
- d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
- style="fill:#18a303;fill-opacity:1" />
- <path
- id="path2455"
- d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
- style="fill:#000000" />
- <path
- id="path2457"
- d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
- style="fill:#000000" />
- <path
- id="path2459"
- d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
- style="fill:#000000" />
- <path
- id="path2461"
- d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
- style="fill:#000000" />
- <path
- id="path2463"
- d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
- style="fill:#000000" />
- <path
- id="path2465"
- d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
- style="fill:#000000" />
- <path
- id="path2467"
- d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
- style="fill:#18a303;fill-opacity:1" />
- </g>
- </g>
- <rect
- y="527.36218"
- x="464.21429"
- height="40"
- width="163"
- id="rect11610"
- style="fill:url(#linearGradient2582);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <g
- transform="translate(76.21425,-1536.3622)"
- id="g11680"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
- id="path11682"
- sodipodi:nodetypes="csccscccc" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
- id="path11684"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11686"
- d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
- id="path11688"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11690"
- d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
- id="path11692"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11694"
- d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
- id="path11696"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11698"
- d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
- id="path11700"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11702"
- d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
- id="path11704"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11706"
- d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
- id="path11708"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11710"
- d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
- id="path11712"
- sodipodi:nodetypes="csccscccc" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
- id="path11714"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11716"
- d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
- id="path11718"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11720"
- d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
- id="path11722"
- sodipodi:nodetypes="csccscccc" />
- </g>
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- style="fill:url(#linearGradient2557);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect11741"
- width="163"
- height="40"
- x="464.21429"
- y="256.36215" />
- <g
- transform="translate(464.21428,-2776.3622)"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- id="g11959">
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 101.93612,3032.725 C 101.18148,3032.706 100.43803,3033.1779 100.14306,3033.8632 C 99.848073,3034.5485 100.02025,3035.4039 100.55836,3035.9261 L 116.75462,3052.1736 C 117.27697,3052.6968 118.12749,3052.8703 118.81733,3052.5942 C 119.50718,3052.3182 119.99483,3051.6092 119.99999,3050.875 L 119.99999,3034.5974 C 120.00199,3033.6166 119.09611,3032.7233 118.10176,3032.725 L 101.93612,3032.725 L 101.93612,3032.725 z"
- id="path11745"
- sodipodi:nodetypes="csccscccc" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 1.9361232,3132.725 C 1.1814832,3132.706 0.4380332,3133.1779 0.1430632,3133.8632 C -0.1519268,3134.5485 0.0202532,3135.4039 0.5583632,3135.9261 L 16.754623,3152.1736 C 17.276973,3152.6968 18.127493,3152.8703 18.817333,3152.5942 C 19.507183,3152.3182 19.994833,3151.6092 19.999993,3150.875 L 19.999993,3134.5974 C 20.001993,3133.6166 19.096113,3132.7233 18.101763,3132.725 L 1.9361232,3132.725 L 1.9361232,3132.725 z"
- id="path11747"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11749"
- d="M 1.9361232,3032.725 C 1.1814832,3032.706 0.4380332,3033.1779 0.1430632,3033.8632 C -0.1519268,3034.5485 0.0202532,3035.4039 0.5583632,3035.9261 L 16.754623,3052.1736 C 17.276973,3052.6968 18.127493,3052.8703 18.817333,3052.5942 C 19.507183,3052.3182 19.994833,3051.6092 19.999993,3050.875 L 19.999993,3034.5974 C 20.001993,3033.6166 19.096113,3032.7233 18.101763,3032.725 L 1.9361232,3032.725 L 1.9361232,3032.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 21.936123,3032.725 C 21.181483,3032.706 20.438033,3033.1779 20.143063,3033.8632 C 19.848073,3034.5485 20.020253,3035.4039 20.558363,3035.9261 L 36.754623,3052.1736 C 37.276973,3052.6968 38.127493,3052.8703 38.817333,3052.5942 C 39.507183,3052.3182 39.994833,3051.6092 39.999993,3050.875 L 39.999993,3034.5974 C 40.001993,3033.6166 39.096113,3032.7233 38.101763,3032.725 L 21.936123,3032.725 L 21.936123,3032.725 z"
- id="path11751"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11753"
- d="M 41.936123,3032.725 C 41.181483,3032.706 40.438033,3033.1779 40.143063,3033.8632 C 39.848073,3034.5485 40.020253,3035.4039 40.558363,3035.9261 L 56.754623,3052.1736 C 57.276973,3052.6968 58.127493,3052.8703 58.817333,3052.5942 C 59.507183,3052.3182 59.994833,3051.6092 59.999993,3050.875 L 59.999993,3034.5974 C 60.001993,3033.6166 59.096113,3032.7233 58.101763,3032.725 L 41.936123,3032.725 L 41.936123,3032.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 61.936123,3032.725 C 61.181483,3032.706 60.438033,3033.1779 60.143063,3033.8632 C 59.848073,3034.5485 60.020253,3035.4039 60.558363,3035.9261 L 76.754623,3052.1736 C 77.276973,3052.6968 78.127493,3052.8703 78.817333,3052.5942 C 79.507183,3052.3182 79.994833,3051.6092 79.999993,3050.875 L 79.999993,3034.5974 C 80.001993,3033.6166 79.096113,3032.7233 78.101763,3032.725 L 61.936123,3032.725 L 61.936123,3032.725 z"
- id="path11755"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11757"
- d="M 81.936123,3032.725 C 81.181483,3032.706 80.438033,3033.1779 80.143063,3033.8632 C 79.848073,3034.5485 80.020253,3035.4039 80.558363,3035.9261 L 96.754623,3052.1736 C 97.276973,3052.6968 98.127493,3052.8703 98.817333,3052.5942 C 99.50718,3052.3182 99.99483,3051.6092 99.99999,3050.875 L 99.99999,3034.5974 C 100.00199,3033.6166 99.09611,3032.7233 98.101763,3032.725 L 81.936123,3032.725 L 81.936123,3032.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 1.9361232,3052.725 C 1.1814832,3052.706 0.4380332,3053.1779 0.1430632,3053.8632 C -0.1519268,3054.5485 0.0202532,3055.4039 0.5583632,3055.9261 L 16.754623,3072.1736 C 17.276973,3072.6968 18.127493,3072.8703 18.817333,3072.5942 C 19.507183,3072.3182 19.994833,3071.6092 19.999993,3070.875 L 19.999993,3054.5974 C 20.001993,3053.6166 19.096113,3052.7233 18.101763,3052.725 L 1.9361232,3052.725 L 1.9361232,3052.725 z"
- id="path11759"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11761"
- d="M 21.936123,3052.725 C 21.181483,3052.706 20.438033,3053.1779 20.143063,3053.8632 C 19.848073,3054.5485 20.020253,3055.4039 20.558363,3055.9261 L 36.754623,3072.1736 C 37.276973,3072.6968 38.127493,3072.8703 38.817333,3072.5942 C 39.507183,3072.3182 39.994833,3071.6092 39.999993,3070.875 L 39.999993,3054.5974 C 40.001993,3053.6166 39.096113,3052.7233 38.101763,3052.725 L 21.936123,3052.725 L 21.936123,3052.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 41.936123,3052.725 C 41.181483,3052.706 40.438033,3053.1779 40.143063,3053.8632 C 39.848073,3054.5485 40.020253,3055.4039 40.558363,3055.9261 L 56.754623,3072.1736 C 57.276973,3072.6968 58.127493,3072.8703 58.817333,3072.5942 C 59.507183,3072.3182 59.994833,3071.6092 59.999993,3070.875 L 59.999993,3054.5974 C 60.001993,3053.6166 59.096113,3052.7233 58.101763,3052.725 L 41.936123,3052.725 L 41.936123,3052.725 z"
- id="path11763"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11765"
- d="M 61.936123,3052.725 C 61.181483,3052.706 60.438033,3053.1779 60.143063,3053.8632 C 59.848073,3054.5485 60.020253,3055.4039 60.558363,3055.9261 L 76.754623,3072.1736 C 77.276973,3072.6968 78.127493,3072.8703 78.817333,3072.5942 C 79.507183,3072.3182 79.994833,3071.6092 79.999993,3070.875 L 79.999993,3054.5974 C 80.001993,3053.6166 79.096113,3052.7233 78.101763,3052.725 L 61.936123,3052.725 L 61.936123,3052.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 81.936123,3052.725 C 81.181483,3052.706 80.438033,3053.1779 80.143063,3053.8632 C 79.848073,3054.5485 80.020253,3055.4039 80.558363,3055.9261 L 96.754623,3072.1736 C 97.276973,3072.6968 98.127493,3072.8703 98.817333,3072.5942 C 99.50718,3072.3182 99.99483,3071.6092 99.99999,3070.875 L 99.99999,3054.5974 C 100.00199,3053.6166 99.09611,3052.7233 98.101763,3052.725 L 81.936123,3052.725 L 81.936123,3052.725 z"
- id="path11767"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11769"
- d="M 1.9361232,3072.725 C 1.1814832,3072.706 0.4380332,3073.1779 0.1430632,3073.8632 C -0.1519268,3074.5485 0.0202532,3075.4039 0.5583632,3075.9261 L 16.754623,3092.1736 C 17.276973,3092.6968 18.127493,3092.8703 18.817333,3092.5942 C 19.507183,3092.3182 19.994833,3091.6092 19.999993,3090.875 L 19.999993,3074.5974 C 20.001993,3073.6166 19.096113,3072.7233 18.101763,3072.725 L 1.9361232,3072.725 L 1.9361232,3072.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 21.936123,3072.725 C 21.181483,3072.706 20.438033,3073.1779 20.143063,3073.8632 C 19.848073,3074.5485 20.020253,3075.4039 20.558363,3075.9261 L 36.754623,3092.1736 C 37.276973,3092.6968 38.127493,3092.8703 38.817333,3092.5942 C 39.507183,3092.3182 39.994833,3091.6092 39.999993,3090.875 L 39.999993,3074.5974 C 40.001993,3073.6166 39.096113,3072.7233 38.101763,3072.725 L 21.936123,3072.725 L 21.936123,3072.725 z"
- id="path11771"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11773"
- d="M 41.936123,3072.725 C 41.181483,3072.706 40.438033,3073.1779 40.143063,3073.8632 C 39.848073,3074.5485 40.020253,3075.4039 40.558363,3075.9261 L 56.754623,3092.1736 C 57.276973,3092.6968 58.127493,3092.8703 58.817333,3092.5942 C 59.507183,3092.3182 59.994833,3091.6092 59.999993,3090.875 L 59.999993,3074.5974 C 60.001993,3073.6166 59.096113,3072.7233 58.101763,3072.725 L 41.936123,3072.725 L 41.936123,3072.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 61.936123,3072.725 C 61.181483,3072.706 60.438033,3073.1779 60.143063,3073.8632 C 59.848073,3074.5485 60.020253,3075.4039 60.558363,3075.9261 L 76.754623,3092.1736 C 77.276973,3092.6968 78.127493,3092.8703 78.817333,3092.5942 C 79.507183,3092.3182 79.994833,3091.6092 79.999993,3090.875 L 79.999993,3074.5974 C 80.001993,3073.6166 79.096113,3072.7233 78.101763,3072.725 L 61.936123,3072.725 L 61.936123,3072.725 z"
- id="path11775"
- sodipodi:nodetypes="csccscccc" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 1.9361232,3092.725 C 1.1814832,3092.706 0.4380332,3093.1779 0.1430632,3093.8632 C -0.1519268,3094.5485 0.0202532,3095.4039 0.5583632,3095.9261 L 16.754623,3112.1736 C 17.276973,3112.6968 18.127493,3112.8703 18.817333,3112.5942 C 19.507183,3112.3182 19.994833,3111.6092 19.999993,3110.875 L 19.999993,3094.5974 C 20.001993,3093.6166 19.096113,3092.7233 18.101763,3092.725 L 1.9361232,3092.725 L 1.9361232,3092.725 z"
- id="path11777"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11779"
- d="M 21.936123,3092.725 C 21.181483,3092.706 20.438033,3093.1779 20.143063,3093.8632 C 19.848073,3094.5485 20.020253,3095.4039 20.558363,3095.9261 L 36.754623,3112.1736 C 37.276973,3112.6968 38.127493,3112.8703 38.817333,3112.5942 C 39.507183,3112.3182 39.994833,3111.6092 39.999993,3110.875 L 39.999993,3094.5974 C 40.001993,3093.6166 39.096113,3092.7233 38.101763,3092.725 L 21.936123,3092.725 L 21.936123,3092.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 41.936123,3092.725 C 41.181483,3092.706 40.438033,3093.1779 40.143063,3093.8632 C 39.848073,3094.5485 40.020253,3095.4039 40.558363,3095.9261 L 56.754623,3112.1736 C 57.276973,3112.6968 58.127493,3112.8703 58.817333,3112.5942 C 59.507183,3112.3182 59.994833,3111.6092 59.999993,3110.875 L 59.999993,3094.5974 C 60.001993,3093.6166 59.096113,3092.7233 58.101763,3092.725 L 41.936123,3092.725 L 41.936123,3092.725 z"
- id="path11781"
- sodipodi:nodetypes="csccscccc" />
- <path
- sodipodi:nodetypes="csccscccc"
- id="path11783"
- d="M 1.9361232,3112.725 C 1.1814832,3112.706 0.4380332,3113.1779 0.1430632,3113.8632 C -0.1519268,3114.5485 0.0202532,3115.4039 0.5583632,3115.9261 L 16.754623,3132.1736 C 17.276973,3132.6968 18.127493,3132.8703 18.817333,3132.5942 C 19.507183,3132.3182 19.994833,3131.6092 19.999993,3130.875 L 19.999993,3114.5974 C 20.001993,3113.6166 19.096113,3112.7233 18.101763,3112.725 L 1.9361232,3112.725 L 1.9361232,3112.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 21.936123,3112.725 C 21.181483,3112.706 20.438033,3113.1779 20.143063,3113.8632 C 19.848073,3114.5485 20.020253,3115.4039 20.558363,3115.9261 L 36.754623,3132.1736 C 37.276973,3132.6968 38.127493,3132.8703 38.817333,3132.5942 C 39.507183,3132.3182 39.994833,3131.6092 39.999993,3130.875 L 39.999993,3114.5974 C 40.001993,3113.6166 39.096113,3112.7233 38.101763,3112.725 L 21.936123,3112.725 L 21.936123,3112.725 z"
- id="path11785"
- sodipodi:nodetypes="csccscccc" />
- </g>
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
- transform="translate(456.21428,-2742.3622)"
- id="g11984">
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 101.93612,3074.7256 C 101.18148,3074.7066 100.43803,3075.1785 100.14306,3075.8638 C 99.84807,3076.5491 100.02025,3077.4045 100.55836,3077.9267 L 116.75462,3094.1742 C 117.27697,3094.6974 118.12749,3094.8709 118.81733,3094.5948 C 119.50718,3094.3188 119.99483,3093.6098 119.99999,3092.8756 L 119.99999,3076.598 C 120.00199,3075.6172 119.09611,3074.7239 118.10176,3074.7256 L 101.93612,3074.7256 L 101.93612,3074.7256 z"
- id="path11734"
- sodipodi:nodetypes="csccscccc"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
- id="path11895"
- d="M 57.40206,3074.725 C 56.405981,3074.74 55.509994,3075.6501 55.51173,3076.6463 L 55.51173,3150.8032 C 55.51003,3151.7993 56.406014,3152.7099 57.40206,3152.7244 L 118.07864,3152.7244 C 119.08505,3152.7244 120.00156,3151.8096 119.99996,3150.8032 L 119.99996,3103.049 C 120.00296,3102.545 119.7975,3102.0429 119.44216,3101.6855 L 93.19443,3075.3138 C 92.84215,3074.9473 92.33924,3074.7301 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- sodipodi:nodetypes="ccccccccccc" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
- d="M 57.40206,3074.725 C 56.35235,3074.7402 55.509901,3075.5965 55.51173,3076.6463 L 55.51173,3150.8032 C 55.509956,3151.853 56.352389,3152.7092 57.40206,3152.7244 L 118.07864,3152.7244 C 118.58844,3152.7252 119.07761,3152.5231 119.4381,3152.1626 C 119.7986,3151.8022 120.00077,3151.313 119.99996,3150.8032 L 119.99996,3103.049 C 120.00293,3102.5384 119.80217,3102.0476 119.44216,3101.6855 L 93.19443,3075.3138 C 92.837431,3074.9424 92.346043,3074.7302 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z M 59.32339,3078.5676 L 91.02519,3078.5676 L 116.15732,3103.8238 L 116.15732,3148.8818 L 59.32339,3148.8818 L 59.32339,3078.5676 z"
- id="path11736"
- inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- </g>
- </g>
- <text
- transform="scale(1.0168078,0.98347)"
- font-size="103.091"
- id="text43"
- style="font-size:48.89245605px;font-family:Vegur-Regular"
- x="2336.854"
- y="540.82001" />
- <text
- transform="scale(0.9979479,1.0020563)"
- font-size="103.091"
- id="text3748"
- style="font-size:91.03964996px;font-family:Vegur-Regular"
- x="2230.6494"
- y="417.58487" />
- </g>
-</svg>
diff --git a/setup_native/source/win32/nsis/brosdkbanner.bmp b/setup_native/source/win32/nsis/brosdkbanner.bmp
deleted file mode 100644
index 0a2961accbda..000000000000
--- a/setup_native/source/win32/nsis/brosdkbanner.bmp
+++ /dev/null
Binary files differ
diff --git a/setup_native/source/win32/nsis/downloadtemplate.nsi b/setup_native/source/win32/nsis/downloadtemplate.nsi
index 6484ef901e50..90fcdfea5633 100644
--- a/setup_native/source/win32/nsis/downloadtemplate.nsi
+++ b/setup_native/source/win32/nsis/downloadtemplate.nsi
@@ -275,24 +275,10 @@ ALLLANGUAGESPLACEHOLDER
Function SetupBranding
File "/oname=$PLUGINSDIR\modern-header.bmp" BANNERBMPPLACEHOLDER
- File "/oname=$PLUGINSDIR\modern-header-br.bmp" BANNERBMPPLACEHOLDER_BR
File "/oname=$PLUGINSDIR\modern-wizard.bmp" WELCOMEBMPPLACEHOLDER
- File "/oname=$PLUGINSDIR\modern-wizard-br.bmp" WELCOMEBMPPLACEHOLDER_BR
-
- ; use broffice specific branding if we are in Brazil
-; messageBox MB_OK "Language: $LANGUAGE"
- StrCmp $LANGUAGE "1046" BrOfficeSplash DefaultSplash
- DefaultSplash:
-; messageBox MB_OK "LibreOffice"
- SetBrandingImage /IMGID=1046 "$PLUGINSDIR\modern-header.bmp"
- !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 1" "Text" "$PLUGINSDIR\modern-wizard.bmp"
- GoTo atEnd
- BrOfficeSplash:
-; messageBox MB_OK "BrOffice"
- SetBrandingImage /IMGID=1046 "$PLUGINSDIR\modern-header-br.bmp"
- !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 1" "Text" "$PLUGINSDIR\modern-wizard-br.bmp"
- GoTo atEnd
- atEnd:
+
+ SetBrandingImage /IMGID=1046 "$PLUGINSDIR\modern-header.bmp"
+ !insertmacro INSTALLOPTIONS_WRITE "ioSpecial.ini" "Field 1" "Text" "$PLUGINSDIR\modern-wizard.bmp"
FunctionEnd
; Reserve files
diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx
index a3ad4fbf917c..48f938626e6e 100644
--- a/sfx2/inc/sfx2/objsh.hxx
+++ b/sfx2/inc/sfx2/objsh.hxx
@@ -228,6 +228,9 @@ protected:
/// template method, called by FlushDocInfo; this implementation is empty
virtual void DoFlushDocInfo();
+ // helper method
+ void AddToRecentlyUsedList();
+
public:
TYPEINFO();
SFX_DECL_INTERFACE(SFX_INTERFACE_SFXDOCSH)
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index 03897b24531a..dedc88f183b5 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -48,6 +48,7 @@
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/beans/XPropertyContainer.hpp>
#include <com/sun/star/beans/StringPair.hpp>
+#include <com/sun/star/util/XMacroExpander.hpp>
#include <com/sun/star/container/XContainerQuery.hpp>
#include <com/sun/star/document/XTypeDetection.hpp>
#include <com/sun/star/document/XStandaloneDocumentInfo.hpp>
@@ -593,11 +594,45 @@ void SfxDocTplService_Impl::getDirList()
maTemplateDirs = Sequence< OUString >( nCount );
+ uno::Reference< XComponentContext > xCtx;
+ uno::Reference< util::XMacroExpander > xExpander;
+ uno::Reference< XPropertySet > xPropSet( mxFactory, UNO_QUERY );
+ const rtl::OUString aPrefix(
+ RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.expand:" ) );
+
+ if ( xPropSet.is() )
+ {
+ xPropSet->getPropertyValue(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) )
+ >>= xCtx;
+ }
+
+ if ( xCtx.is() )
+ {
+ xCtx->getValueByName(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "/singletons/com.sun.star.util.theMacroExpander" ) ) )
+ >>= xExpander;
+
+ OSL_ENSURE( xExpander.is(),
+ "Unable to obtain macro expander singleton!" );
+ }
+
for ( sal_uInt16 i=0; i<nCount; i++ )
{
aURL.SetSmartProtocol( INET_PROT_FILE );
aURL.SetURL( aDirs.GetToken( i, C_DELIM ) );
maTemplateDirs[i] = aURL.GetMainURL( INetURLObject::NO_DECODE );
+
+ sal_Int32 nIndex = maTemplateDirs[i].indexOf( aPrefix );
+ if ( nIndex != -1 && xExpander.is() )
+ {
+ maTemplateDirs[i] = maTemplateDirs[i].replaceAt(nIndex,
+ aPrefix.getLength(),
+ rtl::OUString());
+ maTemplateDirs[i] = xExpander->expandMacros( maTemplateDirs[i] );
+ }
}
aValue <<= maTemplateDirs;
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index d570e0b3e028..954df88eb949 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -797,15 +797,7 @@ sal_Bool SfxObjectShell::DoLoad( SfxMedium *pMed )
&& !( pPreviewItem && pPreviewItem->GetValue() )
&& !( pHiddenItem && pHiddenItem->GetValue() ) )
{
- INetURLObject aUrl( pMedium->GetOrigURL() );
-
- if ( aUrl.GetProtocol() == INET_PROT_FILE )
- {
- const SfxFilter* pOrgFilter = pMedium->GetOrigFilter();
- Application::AddToRecentDocumentList(
- aUrl.GetURLNoPass( INetURLObject::NO_DECODE ),
- (pOrgFilter) ? pOrgFilter->GetMimeType() : String() );
- }
+ AddToRecentlyUsedList();
}
}
@@ -2121,9 +2113,23 @@ sal_Bool SfxObjectShell::DoSaveCompleted( SfxMedium* pNewMed )
pMedium->ClearBackup_Impl();
pMedium->LockOrigFileOnDemand( sal_True, sal_False );
+ AddToRecentlyUsedList();
+
return bOk;
}
+void SfxObjectShell::AddToRecentlyUsedList()
+{
+ INetURLObject aUrl( pMedium->GetOrigURL() );
+
+ if ( aUrl.GetProtocol() == INET_PROT_FILE )
+ {
+ const SfxFilter* pOrgFilter = pMedium->GetOrigFilter();
+ Application::AddToRecentDocumentList( aUrl.GetURLNoPass( INetURLObject::NO_DECODE ),
+ (pOrgFilter) ? pOrgFilter->GetMimeType() : String() );
+ }
+}
+
//-------------------------------------------------------------------------
sal_Bool SfxObjectShell::ConvertFrom
diff --git a/solenv/bin/ooinstall b/solenv/bin/ooinstall
index 83717fa68e1e..4afdb23d0133 100755
--- a/solenv/bin/ooinstall
+++ b/solenv/bin/ooinstall
@@ -29,8 +29,10 @@ for $arg (@ARGV) {
$help = 1;
} else {
# Cwd::realpath does not work if the path does not exist
- mkpath($arg) unless -d $arg;
- $path = Cwd::realpath( $arg );
+ mkpath($ENV{DESTDIR} . $arg) unless -d $ENV{DESTDIR} . $arg;
+ $path = Cwd::realpath( $ENV{DESTDIR} . $arg );
+ my $destdir = Cwd::realpath( $ENV{DESTDIR} );
+ $path =~ s|$destdir||;
}
}
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
index d7ec6f04ad1f..5c33719a2edb 100644
--- a/solenv/gbuild/CppunitTest.mk
+++ b/solenv/gbuild/CppunitTest.mk
@@ -36,7 +36,7 @@ export DBGSV_ERROR_OUT
# gb_CppunitTest_TARGETTYPE
# gb_CppunitTest_get_filename
gb_CppunitTest_CPPTESTTARGET := $(call gb_Executable_get_target,cppunit/cppunittester)
-gb_CppunitTest_CPPTESTCOMMAND := $(gb_CppunitTest_CPPTESTPRECOMMAND) $(gb_CppunitTest_GDBTRACE) STAR_RESOURCEPATH=$(dir $(call gb_ResTarget_get_outdir_target,example)) $(gb_CppunitTest_CPPTESTTARGET)
+gb_CppunitTest_CPPTESTCOMMAND := $(gb_CppunitTest_CPPTESTPRECOMMAND) STAR_RESOURCEPATH=$(dir $(call gb_ResTarget_get_outdir_target,example)) LANG=en_US.UTF-8 $(gb_CppunitTest_GDBTRACE) $(gb_CppunitTest_CPPTESTTARGET)
gb_CppunitTest__get_linktargetname = CppunitTest/$(call gb_CppunitTest_get_filename,$(1))
.PHONY : $(call gb_CppunitTest_get_clean_target,%)
diff --git a/solenv/gbuild/platform/openbsd.mk b/solenv/gbuild/platform/openbsd.mk
index 92654afa5923..d82a54d812ce 100755
--- a/solenv/gbuild/platform/openbsd.mk
+++ b/solenv/gbuild/platform/openbsd.mk
@@ -41,6 +41,8 @@ gb_STDLIBS := pthread
include $(GBUILDDIR)/platform/unxgcc.mk
+gb_LinkTarget_NOEXCEPTIONFLAGS += -DBOOST_NO_EXCEPTIONS
+
define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) && \
diff --git a/solenv/inc/langlist.mk b/solenv/inc/langlist.mk
index 18680e77ce38..31b5ba2e8736 100644
--- a/solenv/inc/langlist.mk
+++ b/solenv/inc/langlist.mk
@@ -25,10 +25,10 @@
#
#*************************************************************************
+# Complete list of all supported localizations (ISO codes)
completelangiso=af \
ar \
as \
-as-IN \
ast \
be \
bo \
@@ -36,10 +36,7 @@ bg \
br \
brx \
bn \
-bn-BD \
-bn-IN \
bs \
-by \
ca \
ca-XV \
cs \
@@ -59,26 +56,18 @@ eu \
fa \
fi \
fr \
-fur \
ga \
-gd \
gl \
gu \
-gu-IN \
he \
hi \
-hi-IN \
hr \
-ht \
hu \
+id \
is \
it \
ja \
-jbo \
-kid \
-ky \
ka \
-kab \
kk \
km \
kn \
@@ -93,11 +82,8 @@ mai \
mk \
mn \
mni \
-ms \
ml \
-ml-IN \
mr \
-mr-IN \
my \
ne \
nb \
@@ -105,56 +91,37 @@ nl \
nn \
nr \
nso \
-ny \
om \
-oms \
oc \
or \
-or-IN \
-pap \
-pa \
pa-IN \
pl \
-ps \
pt \
pt-BR \
-gug \
-pyg \
ro \
ru \
rw \
sat \
-sa \
sa-IN \
si \
-sc \
sd \
sq \
sk \
sl \
sh \
-so \
sr \
ss \
st \
sv \
-sw \
sw-TZ \
te \
-te-IN \
-ti \
-ti-ER \
ta \
-ta-IN \
-tlh \
th \
tn \
tr \
ts \
tg \
ug \
-ur \
-ur-IN \
uk \
uz \
ve \
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index f3346e78066b..fafb78820522 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,5 +1,5 @@
RSCVERSION=300
-RSCREVISION=300m103(Build:3)
-BUILD=3
+RSCREVISION=300m103(Build:4)
+BUILD=4
LAST_MINOR=m103
SOURCEVERSION=DEV300
diff --git a/solenv/inc/postset.mk b/solenv/inc/postset.mk
index 487cc8f2d559..3d4f4158d08f 100644
--- a/solenv/inc/postset.mk
+++ b/solenv/inc/postset.mk
@@ -29,110 +29,7 @@
# This language will be always included!
defaultlangiso=en-US
-# Complete list of all supported ISO codes
-completelangiso=af \
-ar \
-as \
-ast \
-be \
-bo \
-bg \
-br \
-brx \
-bn \
-bs \
-ca \
-ca-XV \
-cs \
-cy \
-da \
-de \
-dgo \
-dz \
-el \
-en-GB \
-en-US \
-en-ZA \
-eo \
-es \
-et \
-eu \
-fa \
-fi \
-fr \
-ga \
-gl \
-gu \
-he \
-hi \
-hr \
-hu \
-id \
-is \
-it \
-ja \
-ka \
-kk \
-km \
-kn \
-ko \
-kok \
-ks \
-ku \
-lo \
-lt \
-lv \
-mai \
-mk \
-mn \
-mni \
-ml \
-mr \
-my \
-ne \
-nb \
-nl \
-nn \
-nr \
-nso \
-om \
-oc \
-or \
-pa-IN \
-pl \
-pt \
-pt-BR \
-ro \
-ru \
-rw \
-sat \
-sa-IN \
-si \
-sd \
-sq \
-sk \
-sl \
-sh \
-sr \
-ss \
-st \
-sv \
-sw-TZ \
-te \
-ta \
-th \
-tn \
-tr \
-ts \
-tg \
-ug \
-uk \
-uz \
-ve \
-vi \
-xh \
-zh-CN \
-zh-TW \
-zu
+# Complete list of all supported localizations (ISO codes)
+.INCLUDE : langlist.mk
alllangiso=$(strip $(defaultlangiso) $(subst,$(defaultlangiso), $(uniq $(subst,ALL,$(completelangiso) $(WITH_LANG)))))
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 356bda2c9d90..e15a8e0921f3 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -809,23 +809,9 @@ SOLARCOMMONSDFDIR=$(SOLARSDFDIR)
.EXPORT : SOLARBINDIR
-.IF "$(GUI)" == "WNT"
-L10N_MODULE*=$(shell cygpath -m $(SRC_ROOT)/translations)
-.ELSE
-L10N_MODULE*=$(SRC_ROOT)/translations
-.ENDIF
-ALT_L10N_MODULE*=$(SOLARSRC)$/l10n_so
-
.IF "$(WITH_LANG)"!=""
.INCLUDE .IGNORE: $(L10N_MODULE)/$(COMMON_OUTDIR)$(PROEXT)/inc/localization_present.mk
-.INCLUDE .IGNORE: $(ALT_L10N_MODULE)/$(COMMON_OUTDIR)$(PROEXT)/inc/localization_present.mk
-
-# check for localizations not hosted in l10n module. if a file exists there
-# it won't in l10n
-.IF "$(ALT_LOCALIZATION_FOUND)"!=""
-TRYALTSDF:=$(ALT_L10N_MODULE)$/$(COMMON_OUTDIR)$(PROEXT)$/misc/sdf$/$(PRJNAME)$/$(PATH_IN_MODULE)$/localize.sdf
-LOCALIZESDF:=$(strip $(shell @+$(IFEXIST) $(TRYALTSDF) $(THEN) echo $(TRYALTSDF) $(FI)))
-.ENDIF # "$(ALT_LOCALIZATION_FOUND)"!=""
+
# if the l10n module exists, use split localize.sdf directly from there
.IF "$(LOCALIZATION_FOUND)"!="" && "$(LOCALIZESDF)"==""
# still check for existence as there may be no localization yet
diff --git a/svtools/inc/svtools/fileview.hxx b/svtools/inc/svtools/fileview.hxx
index 3c78e1d48706..a1a539224b81 100644
--- a/svtools/inc/svtools/fileview.hxx
+++ b/svtools/inc/svtools/fileview.hxx
@@ -47,6 +47,7 @@
#define FILEVIEW_SHOW_SIZE 0x0020
#define FILEVIEW_SHOW_DATE 0x0040
#define FILEVIEW_SHOW_ALL 0x0070
+#define FILEVIEW_SHOW_NONE 0x00A0
class ViewTabListBox_Impl;
class SvtFileView_Impl;
@@ -80,6 +81,7 @@ class SVT_DLLPUBLIC SvtFileView : public Control
{
private:
SvtFileView_Impl* mpImp;
+ sal_Bool bSortColumn;
::com::sun::star::uno::Sequence< ::rtl::OUString > mpBlackList;
@@ -108,6 +110,8 @@ public:
void SetSizePixel( const Size& rNewSize );
using Window::SetPosSizePixel;
virtual void SetPosSizePixel( const Point& rNewPos, const Size& rNewSize );
+ void SetSortColumn( sal_Bool bValue ) { bSortColumn = bValue; }
+ sal_Bool GetSortColumn() { return bSortColumn; }
/** initialize the view with the content of a folder given by URL, and aply an immediate filter
diff --git a/svtools/source/contnr/fileview.cxx b/svtools/source/contnr/fileview.cxx
index b0d92e3fd9aa..1cdf90c2a82a 100644
--- a/svtools/source/contnr/fileview.cxx
+++ b/svtools/source/contnr/fileview.cxx
@@ -98,6 +98,8 @@ using ::rtl::OUString;
#define COLUMN_SIZE 3
#define COLUMN_DATE 4
+#define aSeparatorStr "----------------------------------"
+
#define ROW_HEIGHT 17 // the height of a row has to be a little higher than the bitmap
#define QUICK_SEARCH_TIMEOUT 1500 // time in mSec before the quicksearch string will be reseted
@@ -724,6 +726,7 @@ ViewTabListBox_Impl::ViewTabListBox_Impl( Window* pParentWin,
mbEnableRename ( sal_True )
{
+ sal_Bool bViewHeader = true;
Size aBoxSize = pParentWin->GetSizePixel();
mpHeaderBar = new HeaderBar( pParentWin, WB_BUTTONSTYLE | WB_BOTTOMBORDER );
mpHeaderBar->SetPosSizePixel( Point( 0, 0 ), mpHeaderBar->CalcWindowSizePixel() );
@@ -736,6 +739,8 @@ ViewTabListBox_Impl::ViewTabListBox_Impl( Window* pParentWin,
mpHeaderBar->InsertItem( COLUMN_SIZE, String( SvtResId( STR_SVT_FILEVIEW_COLUMN_SIZE ) ), 80, nBits );
mpHeaderBar->InsertItem( COLUMN_DATE, String( SvtResId( STR_SVT_FILEVIEW_COLUMN_DATE ) ), 500, nBits );
}
+ if( ( nFlags & FILEVIEW_SHOW_NONE ) == FILEVIEW_SHOW_NONE )
+ bViewHeader = false;
else
mpHeaderBar->InsertItem( COLUMN_TITLE, String( SvtResId( STR_SVT_FILEVIEW_COLUMN_TITLE ) ), 600, nBits );
@@ -747,7 +752,8 @@ ViewTabListBox_Impl::ViewTabListBox_Impl( Window* pParentWin,
SetEntryHeight( ROW_HEIGHT );
Show();
- mpHeaderBar->Show();
+ if( bViewHeader )
+ mpHeaderBar->Show();
maResetQuickSearch.SetTimeout( QUICK_SEARCH_TIMEOUT );
maResetQuickSearch.SetTimeoutHdl( LINK( this, ViewTabListBox_Impl, ResetQuickSearch_Impl ) );
@@ -1219,6 +1225,7 @@ SvtFileView::SvtFileView( Window* pParent, const ResId& rResId,
mpImp = new SvtFileView_Impl( this, xCmdEnv, nFlags, bOnlyFolder );
mpImp->mpView->ForbidEmptyText();
+ SetSortColumn( true );
long pTabs[] = { 5, 20, 180, 320, 400, 600 };
mpImp->mpView->SetTabs( &pTabs[0], MAP_PIXEL );
@@ -1241,6 +1248,7 @@ SvtFileView::SvtFileView( Window* pParent, const ResId& rResId, sal_Int8 nFlags
Reference < XCommandEnvironment > xCmdEnv = new ::ucbhelper::CommandEnvironment( xInteractionHandler, Reference< XProgressHandler >() );
mpImp = new SvtFileView_Impl( this, xCmdEnv, nFlags,
( nFlags & FILEVIEW_ONLYFOLDER ) == FILEVIEW_ONLYFOLDER );
+ SetSortColumn( true );
if ( ( nFlags & FILEVIEW_SHOW_ALL ) == FILEVIEW_SHOW_ALL )
{
@@ -1254,7 +1262,8 @@ SvtFileView::SvtFileView( Window* pParent, const ResId& rResId, sal_Int8 nFlags
long pTabs[] = { 2, 20, 600 };
mpImp->mpView->SetTabs( &pTabs[0], MAP_PIXEL );
}
-
+ if ( ( nFlags & FILEVIEW_SHOW_NONE ) == FILEVIEW_SHOW_NONE )
+ SetSortColumn( false );
if ( ( nFlags & FILEVIEW_MULTISELECTION ) == FILEVIEW_MULTISELECTION )
mpImp->mpView->SetSelectionMode( MULTIPLE_SELECTION );
@@ -1512,7 +1521,8 @@ sal_Bool SvtFileView::Initialize( const Sequence< OUString >& aContents )
mpImp->Clear();
mpImp->CreateVector_Impl( aContents );
- mpImp->SortFolderContent_Impl();
+ if( GetSortColumn() )
+ mpImp->SortFolderContent_Impl();
mpImp->OpenFolder_Impl();
@@ -2416,9 +2426,11 @@ void SvtFileView_Impl::CreateVector_Impl( const Sequence < OUString > &rList )
pEntry->maDisplayText = aDisplayText;
// detect the image
- INetURLObject aObj( pEntry->maImageURL.getLength() ? pEntry->maImageURL : pEntry->maTargetURL );
- pEntry->maImage = SvFileInformationManager::GetImage( aObj, sal_False );
-
+ if( aValue != rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(aSeparatorStr) ) )
+ {
+ INetURLObject aObj( pEntry->maImageURL.getLength() ? pEntry->maImageURL : pEntry->maTargetURL );
+ pEntry->maImage = SvFileInformationManager::GetImage( aObj, sal_False );
+ }
maContent.push_back( pEntry );
}
}
diff --git a/svtools/source/contnr/templwin.cxx b/svtools/source/contnr/templwin.cxx
index ea768918e460..19dcdb26dd87 100644
--- a/svtools/source/contnr/templwin.cxx
+++ b/svtools/source/contnr/templwin.cxx
@@ -100,6 +100,7 @@ using namespace ::com::sun::star::view;
using namespace svtools;
extern ::rtl::OUString CreateExactSizeText_Impl( sal_Int64 nSize ); // fileview.cxx
+#define aSeparatorStr "----------------------------------"
#define SPLITSET_ID 0
#define COLSET_ID 1
@@ -594,7 +595,7 @@ SvtFileViewWindow_Impl::SvtFileViewWindow_Impl( SvtTemplateWindow* pParent ) :
Window( pParent, WB_DIALOGCONTROL | WB_TABSTOP | WB_BORDER | WB_3DLOOK ),
rParent ( *pParent ),
- aFileView ( this, SvtResId( CTRL_FILEVIEW ), FILEVIEW_SHOW_TITLE ),
+ aFileView ( this, SvtResId( CTRL_FILEVIEW ), FILEVIEW_SHOW_NONE ),
bIsTemplateFolder ( sal_False )
{
@@ -651,9 +652,14 @@ Sequence< ::rtl::OUString > SvtFileViewWindow_Impl::GetNewDocContents() const
for ( i = 0; i < nCount; ++i )
{
GetMenuEntry_Impl( aDynamicMenuEntries[i], aTitle, aURL, aTargetFrame, aImageURL );
-
- if ( aURL == sSeparator || aURL == sSlotURL )
+ if( aURL == sSlotURL )
continue;
+ if( aURL == sSeparator )
+ {
+ String aSeparator( ASCII_STR( aSeparatorStr ) );
+ ::rtl::OUString* pSeparator = new ::rtl::OUString( aSeparator );
+ aNewDocs.push_back( pSeparator );
+ }
else
{
// title
diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx
index 0455df6b4b26..bc0ee75a845b 100644
--- a/svtools/source/control/tabbar.cxx
+++ b/svtools/source/control/tabbar.cxx
@@ -1838,6 +1838,7 @@ void TabBar::InsertPage( sal_uInt16 nPageId, const XubString& rText,
} else {
mpItemList->push_back( pItem );
}
+ mbSizeFormat = sal_True;
// CurPageId gegebenenfalls setzen
if ( !mnCurPageId )
diff --git a/svtools/source/filter.vcl/wmf/winmtf.cxx b/svtools/source/filter.vcl/wmf/winmtf.cxx
index b0625567d5d6..b60ae0676cc9 100644
--- a/svtools/source/filter.vcl/wmf/winmtf.cxx
+++ b/svtools/source/filter.vcl/wmf/winmtf.cxx
@@ -377,6 +377,19 @@ Point WinMtfOutput::ImplMap( const Point& rPt )
{
switch( mnMapMode )
{
+ case MM_TEXT:
+ fX2 -= mnWinOrgX;
+ fY2 -= mnWinOrgY;
+ if( mnDevWidth != 1 || mnDevHeight != 1 ) {
+ fX2 *= 2540.0/mnUnitsPerInch;
+ fY2 *= 2540.0/mnUnitsPerInch;
+ }
+ fX2 += mnDevOrgX;
+ fY2 += mnDevOrgY;
+ fX2 *= (double)mnMillX * 100.0 / (double)mnPixX;
+ fY2 *= (double)mnMillY * 100.0 / (double)mnPixY;
+
+ break;
case MM_LOENGLISH :
{
fX2 -= mnWinOrgX;
@@ -452,6 +465,15 @@ Size WinMtfOutput::ImplMap( const Size& rSz )
{
switch( mnMapMode )
{
+ case MM_TEXT:
+ if( mnDevWidth != 1 && mnDevHeight != 1 ) {
+ fWidth *= 2540.0/mnUnitsPerInch;
+ fHeight*= 2540.0/mnUnitsPerInch;
+ } else {
+ fWidth *= (double)mnMillX * 100 / (double)mnPixX;
+ fHeight *= (double)mnMillY * 100 / (double)mnPixY;
+ }
+ break;
case MM_LOENGLISH :
{
fWidth *= 25.40;
@@ -894,6 +916,7 @@ WinMtfOutput::WinMtfOutput( GDIMetaFile& rGDIMetaFile ) :
mbComplexClip ( false ),
mnGfxMode ( GM_COMPATIBLE ),
mnMapMode ( MM_TEXT ),
+ mnUnitsPerInch ( 96 ),
mnDevOrgX ( 0 ),
mnDevOrgY ( 0 ),
mnDevWidth ( 1 ),
@@ -2014,6 +2037,14 @@ void WinMtfOutput::SetMapMode( sal_uInt32 nMapMode )
//-----------------------------------------------------------------------------------
+void WinMtfOutput::SetUnitsPerInch( sal_uInt16 nUnitsPerInch )
+{
+ if( nUnitsPerInch != 0 )
+ mnUnitsPerInch = nUnitsPerInch;
+}
+
+//-----------------------------------------------------------------------------------
+
void WinMtfOutput::SetWorldTransform( const XForm& rXForm )
{
maXForm.eM11 = rXForm.eM11;
diff --git a/svtools/source/filter.vcl/wmf/winmtf.hxx b/svtools/source/filter.vcl/wmf/winmtf.hxx
index bd2293fe108b..d0b4e42cbed4 100644
--- a/svtools/source/filter.vcl/wmf/winmtf.hxx
+++ b/svtools/source/filter.vcl/wmf/winmtf.hxx
@@ -581,6 +581,8 @@ class WinMtfOutput
sal_uInt32 mnGfxMode;
sal_uInt32 mnMapMode;
+ sal_uInt16 mnUnitsPerInch;
+
XForm maXForm;
sal_Int32 mnDevOrgX, mnDevOrgY;
sal_Int32 mnDevWidth, mnDevHeight;
@@ -627,6 +629,7 @@ class WinMtfOutput
sal_uInt32 GetMapMode() const { return mnMapMode; };
void SetMapMode( sal_uInt32 mnMapMode );
+ void SetUnitsPerInch( sal_uInt16 nUnitsPerInch );
void SetWorldTransform( const XForm& rXForm );
void ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode );
diff --git a/svtools/source/filter.vcl/wmf/winwmf.cxx b/svtools/source/filter.vcl/wmf/winwmf.cxx
index c7d33a824adf..095b1c45eb68 100644
--- a/svtools/source/filter.vcl/wmf/winwmf.cxx
+++ b/svtools/source/filter.vcl/wmf/winwmf.cxx
@@ -1036,6 +1036,7 @@ sal_Bool WMFReader::ReadHeader()
pWMF->Seek( nStrmPos );
}
+ pOut->SetUnitsPerInch( nUnitsPerInch );
pOut->SetWinOrg( aPlaceableBound.TopLeft() );
aWMFSize = Size( labs( aPlaceableBound.GetWidth() ), labs( aPlaceableBound.GetHeight() ) );
pOut->SetWinExt( aWMFSize );
diff --git a/svx/AllLangResTarget_svx.mk b/svx/AllLangResTarget_svx.mk
index 3ae26647309b..8b976275694a 100644
--- a/svx/AllLangResTarget_svx.mk
+++ b/svx/AllLangResTarget_svx.mk
@@ -110,6 +110,7 @@ $(WORKDIR)/inc/svx/globlmn.hrc : $(SRCDIR)/svx/inc/globlmn_tmpl.hrc
echo copying $@
-mkdir -p $(WORKDIR)/inc/svx
cp $(SRCDIR)/svx/inc/globlmn_tmpl.hrc $(WORKDIR)/inc/svx/globlmn.hrc
+ cp $(SRCDIR)/svx/inc/globlmn_tmpl.hrc $(OUTDIR)/inc/svx/globlmn.hrc
rm -f $(WORKDIR)/inc/svx/lastrun.mk
else
-include $(WORKDIR)/inc/svx/lastrun.mk
@@ -125,6 +126,7 @@ $(WORKDIR)/inc/svx/globlmn.hrc : $(SRCDIR)/svx/inc/globlmn_tmpl.hrc $(gb_SrsPart
$(gb_SrsPartMergeTarget_TRANSEXCOMMAND) \
-p svx \
-i $< -o $@ -m $(gb_SrsPartMergeTarget_SDFLOCATION)/svx/inc/localize.sdf -l all)
+ cp $(WORKDIR)/inc/svx/globlmn.hrc $(OUTDIR)/inc/svx/globlmn.hrc
endif
.PHONY : $(WORKDIR)/inc/svx/globlmn.hrc_clean
diff --git a/svx/Package_inc.mk b/svx/Package_inc.mk
index d5ffc3cb1aa4..9be0b4b5dce9 100644
--- a/svx/Package_inc.mk
+++ b/svx/Package_inc.mk
@@ -556,5 +556,4 @@ $(eval $(call gb_Package_add_file,svx_inc,inc/svx/svxdllapi.h,svx/svxdllapi.h))
$(eval $(call gb_Package_add_file,svx_inc,inc/svx/colrctrl.hxx,svx/colrctrl.hxx))
$(eval $(call gb_Package_add_file,svx_inc,inc/svx/fmdpage.hxx,svx/fmdpage.hxx))
$(eval $(call gb_Package_add_file,svx_inc,inc/svx/sxmtpitm.hxx,svx/sxmtpitm.hxx))
-$(eval $(call gb_Package_add_file,svx_inc,inc/svx/globlmn.hrc,globlmn_tmpl.hrc))
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index d0cb45fe3d61..18876c50a14d 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -454,8 +454,9 @@ OutlinerView* SdrObjEditView::ImpMakeOutlinerView(Window* pWin, sal_Bool /*bNoPa
pOutlView->SetAnchorMode((EVAnchorMode)(pText->GetOutlinerViewAnchorMode()));
pTextEditOutliner->SetFixedCellHeight(((const SdrTextFixedCellHeightItem&)pText->GetMergedItem(SDRATTR_TEXT_USEFIXEDCELLHEIGHT)).GetValue());
}
- pOutlView->SetOutputArea(aTextEditArea);
+ // do update before setting output area so that aTextEditArea can be recalculated
pTextEditOutliner->SetUpdateMode(sal_True);
+ pOutlView->SetOutputArea(aTextEditArea);
ImpInvalidateOutlinerView(*pOutlView);
return pOutlView;
}
diff --git a/svx/util/svxcore.component b/svx/util/svxcore.component
index 2f829cb52a77..d266e06188c1 100755
--- a/svx/util/svxcore.component
+++ b/svx/util/svxcore.component
@@ -25,9 +25,7 @@
* for a copy of the LGPLv3 License.
*
**********************************************************************-->
-
-<component loader="com.sun.star.loader.SharedLibrary"
- xmlns="http://openoffice.org/2010/uno-components">
+<component xmlns="http://openoffice.org/2010/uno-components" loader="com.sun.star.loader.SharedLibrary">
<implementation name="com.sun.star.comp.svx.ExtrusionDepthController">
<service name="com.sun.star.frame.PopupMenuController"/>
</implementation>
@@ -40,10 +38,10 @@
<implementation name="com.sun.star.comp.svx.ExtrusionSurfaceController">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
- <implementation name="com.sun.star.comp.svx.FontWorkAlignmentController">
+ <implementation name="com.sun.star.comp.svx.FontworkAlignmentController">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
- <implementation name="com.sun.star.comp.svx.FontWorkCharacterSpacingController">
+ <implementation name="com.sun.star.comp.svx.FontworkCharacterSpacingController">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
</component>
diff --git a/sw/inc/rcid.hrc b/sw/inc/rcid.hrc
index f392c05a07db..ada047c51d07 100644
--- a/sw/inc/rcid.hrc
+++ b/sw/inc/rcid.hrc
@@ -103,7 +103,7 @@
// Page frame
#define RC_PAGEFRM_BEGIN RC_PAGEFRM
-#define RC_PAGEFRM_EN (RC_PAGEFRM + 99)
+#define RC_PAGEFRM_END (RC_PAGEFRM + 99)
// SW/Web
#define RC_WEB_BEGIN RC_WEB
diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx
index ca115007c9eb..5212f709f1ee 100644
--- a/sw/source/core/doc/poolfmt.cxx
+++ b/sw/source/core/doc/poolfmt.cxx
@@ -1308,7 +1308,7 @@ SwFmt* SwDoc::GetFmtFromPool( sal_uInt16 nId )
aSet.Put( SwFmtAnchor( FLY_AT_PARA ));
aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::CENTER, text::RelOrientation::FRAME ));
aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::FRAME ));
- aSet.Put( SwFmtSurround( SURROUND_NONE ));
+ aSet.Put( SwFmtSurround( SURROUND_IDEAL ));
}
break;
case RES_POOLFRM_FORMEL:
diff --git a/sw/source/core/inc/frmtool.hxx b/sw/source/core/inc/frmtool.hxx
index 0cc9898089b6..ba1b0f43d539 100644
--- a/sw/source/core/inc/frmtool.hxx
+++ b/sw/source/core/inc/frmtool.hxx
@@ -72,7 +72,7 @@ void MA_FASTCALL DrawGraphic( const SvxBrushItem *, OutputDevice *,
// - method to align rectangle
// Created declaration here to avoid <extern> declarations
-void MA_FASTCALL SwAlignRect( SwRect &rRect, ViewShell *pSh );
+void MA_FASTCALL SwAlignRect( SwRect &rRect, const ViewShell *pSh );
// - method to align graphic rectangle
// Created declaration here to avoid <extern> declarations
diff --git a/sw/source/core/inc/pagefrm.hrc b/sw/source/core/inc/pagefrm.hrc
index 302ba9a76b16..b8f89e091c15 100644
--- a/sw/source/core/inc/pagefrm.hrc
+++ b/sw/source/core/inc/pagefrm.hrc
@@ -31,13 +31,11 @@
#include "rcid.hrc"
// Bitmaps for page shadow
-#define BMP_PAGE_RIGHT_SHADOW_MASK RC_PAGEFRM_BEGIN + 0
-#define BMP_PAGE_BOTTOM_RIGHT_SHADOW_MASK RC_PAGEFRM_BEGIN + 1
-#define BMP_PAGE_BOTTOM_SHADOW_MASK RC_PAGEFRM_BEGIN + 2
+#define BMP_PAGE_SHADOW_MASK RC_PAGEFRM_BEGIN + 0
// If you add resources, don't forget to update this
-#define PAGEFRM_ACT_END BMP_PAGE_BOTTOMLEFT_SHADOW
+#define PAGEFRM_ACT_END BMP_PAGE_SHADOW_MASK
// Sanity check
#if PAGEFRM_ACT_END > RC_PAGEFRM_END
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 92b11aed27ea..1fb456dea39d 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -95,29 +95,7 @@ class SwPageFrm: public SwFtnBossFrm
// Anpassen der max. Fussnotenhoehen in den einzelnen Spalten
void SetColMaxFtnHeight();
- /** determine rectangle for right page shadow
-
- #i9719#
-
- @param _rPageRect
- input parameter - constant instance reference of the page rectangle.
- Generally, it's the frame area of the page, but for empty pages in print
- preview, this parameter is useful.
-
- @param _pViewShell
- input parameter - instance of the view shell, for which the rectangle
- has to be generated.
-
- @param _orRightShadowRect
- output parameter - instance reference of the right shadow rectangle for
- the given page rectangle
- */
- static void GetRightShadowRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
- SwRect& _orRightShadowRect,
- bool bRightSidebar );
-
- /** determine rectangle for bottom page shadow
+ /** determine rectangle for horizontal page shadow
#i9719#
@@ -135,10 +113,11 @@ class SwPageFrm: public SwFtnBossFrm
the given page rectangle
*/
- static void GetBottomShadowRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
+ static void GetHorizontalShadowRect( const SwRect& _rPageRect,
+ const ViewShell* _pViewShell,
SwRect& _orBottomShadowRect,
- bool bFullBottomShadow,
+ bool bPaintLeftShadow,
+ bool bPaintRightShadow,
bool bRightSidebar );
/** adds the sidebar used for notes to right and left border
@@ -193,6 +172,8 @@ public:
inline const SwCntntFrm *FindFirstBodyCntnt() const;
inline const SwCntntFrm *FindLastBodyCntnt() const;
+ SwRect GetBoundRect() const;
+
//Spezialisiertes GetCntntPos() fuer Felder in Rahmen.
void GetCntntPosition( const Point &rPt, SwPosition &rPos ) const;
@@ -267,6 +248,8 @@ public:
inline void ValidateWordCount() const;
inline sal_Bool IsInvalid() const;
inline sal_Bool IsInvalidFly() const;
+ sal_Bool IsRightShadowNeeded() const;
+ sal_Bool IsLeftShadowNeeded() const;
sal_Bool IsInvalidFlyLayout() const { return bInvalidFlyLayout; }
sal_Bool IsInvalidFlyCntnt() const { return bInvalidFlyCntnt; }
sal_Bool IsInvalidFlyInCnt() const { return bInvalidFlyInCnt; }
@@ -328,9 +311,9 @@ public:
shadow with & position).
*/
static void PaintBorderAndShadow( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
+ const ViewShell* _pViewShell,
+ bool bPaintLeftShadow,
bool bPaintRightShadow,
- bool bFullBottomShadow,
bool bRightSidebar );
/** get bound rectangle of border and shadow for repaints
@@ -351,9 +334,12 @@ public:
rectangle for the given page rectangle
*/
static void GetBorderAndShadowBoundRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
+ const ViewShell* _pViewShell,
SwRect& _orBorderAndShadowBoundRect,
- const bool bRightSidebar );
+ const bool bLeftShadow,
+ const bool bRightShadow,
+ const bool bRightSidebar
+ );
static void PaintNotesSidebar(const SwRect& _rPageRect, ViewShell* _pViewShell, sal_uInt16 nPageNum, bool bRight);
static void PaintNotesSidebarArrows(const Point &aMiddleFirst, const Point &aMiddleSecond, ViewShell* _pViewShell, const Color aColorUp, const Color aColorDown);
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index e19e086c8b47..e0b4cd7432dc 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -1399,9 +1399,15 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
if ( pLay->GetPrev() && !pLay->GetPrev()->IsValid() )
pLay->GetPrev()->SetCompletePaint();
- SwRect aOldRect( pLay->Frm() );
+ SwRect aOldFrame( pLay->Frm() );
+ SwRect aOldRect( aOldFrame );
+ if( pLay->IsPageFrm() )
+ {
+ aOldRect = static_cast<SwPageFrm*>(pLay)->GetBoundRect();
+ }
+
pLay->Calc();
- if ( aOldRect != pLay->Frm() )
+ if ( aOldFrame != pLay->Frm() )
bChanged = sal_True;
sal_Bool bNoPaint = sal_False;
@@ -1424,30 +1430,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
if ( pLay->IsPageFrm() )
{
SwPageFrm* pPageFrm = static_cast<SwPageFrm*>(pLay);
- const int nShadowWidth =
- pImp->GetShell()->GetOut()->PixelToLogic( Size( pPageFrm->ShadowPxWidth(), 0 ) ).Width();
-
- //mod #i6193# added sidebar width
- const SwPostItMgr* pPostItMgr = pImp->GetShell()->GetPostItMgr();
- const int nSidebarWidth = pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() ? pPostItMgr->GetSidebarWidth() + pPostItMgr->GetSidebarBorderWidth() : 0;
- switch ( pPageFrm->SidebarPosition() )
- {
- case sw::sidebarwindows::SIDEBAR_LEFT:
- {
- aPaint.Left( aPaint.Left() - nSidebarWidth);
- aPaint.Right( aPaint.Right() + nShadowWidth);
- }
- break;
- case sw::sidebarwindows::SIDEBAR_RIGHT:
- {
- aPaint.Right( aPaint.Right() + nShadowWidth + nSidebarWidth);
- }
- break;
- case sw::sidebarwindows::SIDEBAR_NONE:
- // nothing to do
- break;
- }
- aPaint.Bottom( aPaint.Bottom() + nShadowWidth );
+ aPaint = pPageFrm->GetBoundRect();
}
sal_Bool bPageInBrowseMode = pLay->IsPageFrm();
@@ -1499,38 +1482,50 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
const bool bLeftToRightViewLayout = pRoot->IsLeftToRightViewLayout();
const bool bPrev = bLeftToRightViewLayout ? pLay->GetPrev() : pLay->GetNext();
const bool bNext = bLeftToRightViewLayout ? pLay->GetNext() : pLay->GetPrev();
+ SwPageFrm* pPageFrm = static_cast<SwPageFrm*>(pLay);
+ const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell();
+ SwRect aPageRect( pLay->Frm() );
+
+ if(pSh)
+ {
+ SwPageFrm::GetBorderAndShadowBoundRect(aPageRect, pSh,
+ aPageRect, pPageFrm->IsLeftShadowNeeded(), pPageFrm->IsRightShadowNeeded(),
+ pPageFrm->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
+ }
if ( bPrev )
{
// top
- SwRect aSpaceToPrevPage( pLay->Frm() );
- const SwTwips nTop = aSpaceToPrevPage.Top() - nHalfDocBorder;
- if ( nTop >= 0 )
- aSpaceToPrevPage.Top( nTop );
+ SwRect aSpaceToPrevPage( aPageRect );
+ aSpaceToPrevPage.Top( aSpaceToPrevPage.Top() - nHalfDocBorder );
aSpaceToPrevPage.Bottom( pLay->Frm().Top() );
- pImp->GetShell()->AddPaintRect( aSpaceToPrevPage );
+ if(aSpaceToPrevPage.Height() > 0 && aSpaceToPrevPage.Width() > 0)
+ pImp->GetShell()->AddPaintRect( aSpaceToPrevPage );
+
+ pSh->GetOut()->DrawRect( aSpaceToPrevPage.SVRect() );
// left
- aSpaceToPrevPage = pLay->Frm();
- const SwTwips nLeft = aSpaceToPrevPage.Left() - nHalfDocBorder;
- if ( nLeft >= 0 )
- aSpaceToPrevPage.Left( nLeft );
+ aSpaceToPrevPage = aPageRect;
+ aSpaceToPrevPage.Left( aSpaceToPrevPage.Left() - nHalfDocBorder );
aSpaceToPrevPage.Right( pLay->Frm().Left() );
- pImp->GetShell()->AddPaintRect( aSpaceToPrevPage );
+ if(aSpaceToPrevPage.Height() > 0 && aSpaceToPrevPage.Width() > 0)
+ pImp->GetShell()->AddPaintRect( aSpaceToPrevPage );
}
if ( bNext )
{
// bottom
- SwRect aSpaceToNextPage( pLay->Frm() );
+ SwRect aSpaceToNextPage( aPageRect );
aSpaceToNextPage.Bottom( aSpaceToNextPage.Bottom() + nHalfDocBorder );
aSpaceToNextPage.Top( pLay->Frm().Bottom() );
- pImp->GetShell()->AddPaintRect( aSpaceToNextPage );
+ if(aSpaceToNextPage.Height() > 0 && aSpaceToNextPage.Width() > 0)
+ pImp->GetShell()->AddPaintRect( aSpaceToNextPage );
// right
- aSpaceToNextPage = pLay->Frm();
+ aSpaceToNextPage = aPageRect;
aSpaceToNextPage.Right( aSpaceToNextPage.Right() + nHalfDocBorder );
aSpaceToNextPage.Left( pLay->Frm().Right() );
- pImp->GetShell()->AddPaintRect( aSpaceToNextPage );
+ if(aSpaceToNextPage.Height() > 0 && aSpaceToNextPage.Width() > 0)
+ pImp->GetShell()->AddPaintRect( aSpaceToNextPage );
}
}
}
@@ -1585,12 +1580,14 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
// OD 11.11.2002 #104414# - add complete frame area as paint area, if frame
// area has been already added and after formating its lowers the frame area
// is enlarged.
+ SwRect aBoundRect(pLay->IsPageFrm() ? static_cast<SwPageFrm*>(pLay)->GetBoundRect() : pLay->Frm() );
+
if ( bAlreadyPainted &&
- ( pLay->Frm().Width() > aFrmAtCompletePaint.Width() ||
- pLay->Frm().Height() > aFrmAtCompletePaint.Height() )
+ ( aBoundRect.Width() > aFrmAtCompletePaint.Width() ||
+ aBoundRect.Height() > aFrmAtCompletePaint.Height() )
)
{
- pImp->GetShell()->AddPaintRect( pLay->Frm() );
+ pImp->GetShell()->AddPaintRect( aBoundRect );
}
return bChanged || bTabChanged;
}
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index 948efb8452c5..aa7aa23e02c0 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -310,7 +310,7 @@ SwPageFrm::~SwPageFrm()
// including border and shadow area.
const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aRetoucheRect;
- SwPageFrm::GetBorderAndShadowBoundRect( Frm(), pSh, aRetoucheRect, bRightSidebar );
+ SwPageFrm::GetBorderAndShadowBoundRect( Frm(), pSh, aRetoucheRect, IsLeftShadowNeeded(), IsRightShadowNeeded(), bRightSidebar );
pSh->AddPaintRect( aRetoucheRect );
}
}
@@ -674,7 +674,8 @@ void SwPageFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
// page frame for determine 'old' rectangle - it's used for invalidating.
const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aOldRectWithBorderAndShadow;
- SwPageFrm::GetBorderAndShadowBoundRect( aOldPageFrmRect, pSh, aOldRectWithBorderAndShadow, bRightSidebar );
+ SwPageFrm::GetBorderAndShadowBoundRect( aOldPageFrmRect, pSh, aOldRectWithBorderAndShadow,
+ IsLeftShadowNeeded(), IsRightShadowNeeded(), bRightSidebar );
pSh->InvalidateWindows( aOldRectWithBorderAndShadow );
}
rInvFlags |= 0x03;
diff --git a/sw/source/core/layout/pagefrm.src b/sw/source/core/layout/pagefrm.src
index 83b80e4714f9..1c5cafc38c4d 100644
--- a/sw/source/core/layout/pagefrm.src
+++ b/sw/source/core/layout/pagefrm.src
@@ -1,17 +1,7 @@
#include "pagefrm.hrc"
-Bitmap BMP_PAGE_RIGHT_SHADOW_MASK
+Bitmap BMP_PAGE_SHADOW_MASK
{
- File = "page-right-shadow-mask.png";
-};
-
-Bitmap BMP_PAGE_BOTTOM_RIGHT_SHADOW_MASK
-{
- File = "page-bottomright-shadow-mask.png";
-};
-
-Bitmap BMP_PAGE_BOTTOM_SHADOW_MASK
-{
- File = "page-bottom-shadow-mask.png";
+ File = "page-shadow-mask.png";
};
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 82513c75d32c..8744151ef0e2 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -102,6 +102,7 @@
#include <drawinglayer/processor2d/baseprocessor2d.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/borderlineprimitive2d.hxx>
+#include <drawinglayer/primitive2d/discreteshadowprimitive2d.hxx>
#include <svx/sdr/contact/objectcontacttools.hxx>
#include <svx/unoapi.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
@@ -1037,7 +1038,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
// OD 29.04.2003 #107169# - correction: adjust rectangle on pixel level in order
// to assure, that the border 'leaves its original pixel', if it has to.
// No prior adjustments for odd relation between pixel and twip.
-void MA_FASTCALL SwAlignRect( SwRect &rRect, ViewShell *pSh )
+void MA_FASTCALL SwAlignRect( SwRect &rRect, const ViewShell *pSh )
{
if( !rRect.HasArea() )
return;
@@ -2838,8 +2839,6 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
if ( bBookMode && pPage->GetPrev() && static_cast<const SwPageFrm*>(pPage->GetPrev())->IsEmptyPage() )
pPage = static_cast<const SwPageFrm*>(pPage->GetPrev());
- const bool bLTR = IsLeftToRightViewLayout();
-
// #i68597#
const bool bGridPainting(pSh->GetWin() && pSh->Imp()->HasDrawView() && pSh->Imp()->GetDrawView()->IsGridVisible());
@@ -2848,22 +2847,15 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
while ( pPage )
// <--
{
- // Paint right shadow in single page mode, or if we're on last page of
- // the doc, or if ???Lower()??? or if we're on a page with no right
- // sibling (OnRightPage should be renamed as OnEvenPage since it does
- // not take reading direction into account)
- const bool bPaintRightShadow = !bBookMode || (!pPage->GetNext()) || (pPage == Lower()) || (!bLTR && !pPage->OnRightPage()) || (bLTR && pPage->OnRightPage());
- // Have a full bottom shadow on side by side pages.
- // TODO Do not draw full shadow if our sibling hasn't the
- // same orientation
- const bool bFullBottomShadow = bBookMode && pPage->GetPrev() &&
- ((!bLTR && !pPage->OnRightPage()) || (bLTR && pPage->OnRightPage()));
+ const bool bPaintRightShadow = pPage->IsRightShadowNeeded();
+ const bool bPaintLeftShadow = pPage->IsLeftShadowNeeded();
const bool bRightSidebar = pPage->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT;
if ( !pPage->IsEmptyPage() )
{
SwRect aPaintRect;
- SwPageFrm::GetBorderAndShadowBoundRect( pPage->Frm(), pSh, aPaintRect, bRightSidebar );
+ SwPageFrm::GetBorderAndShadowBoundRect( pPage->Frm(), pSh, aPaintRect,
+ bPaintLeftShadow, bPaintRightShadow, bRightSidebar );
if ( aRect.IsOver( aPaintRect ) )
// <--
@@ -2963,7 +2955,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
{
// OD 12.02.2003 #i9719#, #105645# - use new method
// <SwPageFrm::PaintBorderAndShadow(..)>.
- SwPageFrm::PaintBorderAndShadow( pPage->Frm(), pSh, bPaintRightShadow, bFullBottomShadow, bRightSidebar );
+ SwPageFrm::PaintBorderAndShadow( pPage->Frm(), pSh, bPaintLeftShadow, bPaintRightShadow, bRightSidebar );
SwPageFrm::PaintNotesSidebar( pPage->Frm(), pSh, pPage->GetPhyPageNum(), bRightSidebar);
}
@@ -3016,7 +3008,8 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
const SwPageFrm& rFormatPage = pPage->GetFormatPage();
aEmptyPageRect.SSize() = rFormatPage.Frm().SSize();
- SwPageFrm::GetBorderAndShadowBoundRect( aEmptyPageRect, pSh, aPaintRect, bRightSidebar );
+ SwPageFrm::GetBorderAndShadowBoundRect( aEmptyPageRect, pSh, aPaintRect,
+ bPaintLeftShadow, bPaintRightShadow, bRightSidebar );
aPaintRect._Intersection( aRect );
if ( aRect.IsOver( aEmptyPageRect ) )
@@ -3055,7 +3048,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
// paint shadow and border for empty page
// OD 19.02.2003 #107369# - use new method to paint page border and
// shadow
- SwPageFrm::PaintBorderAndShadow( aEmptyPageRect, pSh, bPaintRightShadow, bFullBottomShadow, bRightSidebar );
+ SwPageFrm::PaintBorderAndShadow( aEmptyPageRect, pSh, bPaintLeftShadow, bPaintRightShadow, bRightSidebar );
SwPageFrm::PaintNotesSidebar( aEmptyPageRect, pSh, pPage->GetPhyPageNum(), bRightSidebar);
{
@@ -5213,35 +5206,31 @@ void SwPageFrm::PaintMarginArea( const SwRect& _rOutputRect,
}
}
-const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
-
-/** determine rectangle for right page shadow
-
- OD 12.02.2003 for #i9719# and #105645#
+const sal_Int8 SwPageFrm::mnShadowPxWidth = 9;
- @author OD
-*/
-/*static*/ void SwPageFrm::GetRightShadowRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
- SwRect& _orRightShadowRect,
- bool bRightSidebar )
+sal_Bool SwPageFrm::IsRightShadowNeeded() const
{
- SwRect aAlignedPageRect( _rPageRect );
- ::SwAlignRect( aAlignedPageRect, _pViewShell );
- SwRect aPagePxRect =
- _pViewShell->GetOut()->LogicToPixel( aAlignedPageRect.SVRect() );
- const SwPostItMgr *pMgr = _pViewShell ? _pViewShell->GetPostItMgr() : 0;
+ const ViewShell *pSh = getRootFrm()->GetCurrShell();
+ const bool bIsLTR = getRootFrm()->IsLeftToRightViewLayout();
- _orRightShadowRect.Chg(
- Point( aPagePxRect.Right() + 1, aPagePxRect.Top() + mnShadowPxWidth + 1 ),
- Size( mnShadowPxWidth, aPagePxRect.Height() - mnShadowPxWidth - 1 ) );
+ // We paint the right shadow if we're not in book mode
+ // or if we've no sibling or are the last page of the "row"
+ return !pSh || (!pSh->GetViewOptions()->IsViewLayoutBookMode()) || !GetNext()
+ || (this == Lower()) || (bIsLTR && OnRightPage())
+ || (!bIsLTR && !OnRightPage());
- if (bRightSidebar && pMgr && pMgr->ShowNotes() && pMgr->HasNotes())
- {
- _orRightShadowRect.Pos(_orRightShadowRect.Left() + pMgr->GetSidebarWidth(true)
- + pMgr->GetSidebarBorderWidth(true), _orRightShadowRect.Top());
- }
+}
+sal_Bool SwPageFrm::IsLeftShadowNeeded() const
+{
+ const ViewShell *pSh = getRootFrm()->GetCurrShell();
+ const bool bIsLTR = getRootFrm()->IsLeftToRightViewLayout();
+
+ // We paint the left shadow if we're not in book mode
+ // or if we've no sibling or are the last page of the "row"
+ return !pSh || (!pSh->GetViewOptions()->IsViewLayoutBookMode()) || !GetPrev()
+ || (bIsLTR && !OnRightPage())
+ || (!bIsLTR && OnRightPage());
}
/** determine rectangle for bottom page shadow
@@ -5250,10 +5239,11 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
@author OD
*/
-/*static*/ void SwPageFrm::GetBottomShadowRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
- SwRect& _orBottomShadowRect,
- bool bFullBottomShadow,
+/*static*/ void SwPageFrm::GetHorizontalShadowRect( const SwRect& _rPageRect,
+ const ViewShell* _pViewShell,
+ SwRect& _orHorizontalShadowRect,
+ bool bPaintLeftShadow,
+ bool bPaintRightShadow,
bool bRightSidebar )
{
const SwPostItMgr *pMgr = _pViewShell ? _pViewShell->GetPostItMgr() : 0;
@@ -5262,21 +5252,21 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
SwRect aPagePxRect =
_pViewShell->GetOut()->LogicToPixel( aAlignedPageRect.SVRect() );
- // Shadow is shifted when not full
- long lShadowAdjustment = (bFullBottomShadow ? 0 : 1 + mnShadowPxWidth);
+ long lShadowAdjustment = mnShadowPxWidth - 1; // TODO extract this
- _orBottomShadowRect.Chg(
- Point( aPagePxRect.Left() + lShadowAdjustment, aPagePxRect.Bottom() + 1 ),
- Size( aPagePxRect.Width() - lShadowAdjustment, mnShadowPxWidth ) );
+ _orHorizontalShadowRect.Chg(
+ Point( aPagePxRect.Left() + (bPaintLeftShadow ? lShadowAdjustment : 0), 0 ),
+ Size( aPagePxRect.Width() - ( (bPaintLeftShadow ? lShadowAdjustment : 0) + (bPaintRightShadow ? lShadowAdjustment : 0) ),
+ mnShadowPxWidth ) );
if(pMgr && pMgr->ShowNotes() && pMgr->HasNotes())
{
// Notes are displayed, we've to extend borders
SwTwips aSidebarTotalWidth = pMgr->GetSidebarWidth(true) + pMgr->GetSidebarBorderWidth(true);
if(bRightSidebar)
- _orBottomShadowRect.Right( _orBottomShadowRect.Right() + aSidebarTotalWidth );
+ _orHorizontalShadowRect.Right( _orHorizontalShadowRect.Right() + aSidebarTotalWidth );
else
- _orBottomShadowRect.Left( _orBottomShadowRect.Left() - aSidebarTotalWidth );
+ _orHorizontalShadowRect.Left( _orHorizontalShadowRect.Left() - aSidebarTotalWidth );
}
}
@@ -5288,9 +5278,9 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
@author OD
*/
/*static*/ void SwPageFrm::PaintBorderAndShadow( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
+ const ViewShell* _pViewShell,
+ bool bPaintLeftShadow,
bool bPaintRightShadow,
- bool bFullBottomShadow,
bool bRightSidebar )
{
// No shadow in prefs
@@ -5300,60 +5290,102 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
SwTaggedPDFHelper aTaggedPDFHelper( 0, 0, 0, *_pViewShell->GetOut() );
// <--
+ static drawinglayer::primitive2d::DiscreteShadow shadowMask( SW_RES( BMP_PAGE_SHADOW_MASK ) );
static BitmapEx aPageTopRightShadow;
static BitmapEx aPageBottomRightShadow;
static BitmapEx aPageBottomLeftShadow;
static BitmapEx aPageBottomShadowBase;
static BitmapEx aPageRightShadowBase;
- static Color aShadowColor;
+ static BitmapEx aPageTopShadowBase;
+ static BitmapEx aPageTopLeftShadow;
+ static BitmapEx aPageLeftShadowBase;
+ static Color aShadowColor( COL_AUTO );
+
+ SwRect aAlignedPageRect( _rPageRect );
+ ::SwAlignRect( aAlignedPageRect, _pViewShell );
+ SwRect aPagePxRect =
+ _pViewShell->GetOut()->LogicToPixel( aAlignedPageRect.SVRect() );
if(aShadowColor != SwViewOption::GetShadowColor() ) {
aShadowColor = SwViewOption::GetShadowColor();
- AlphaMask aMask( SW_RES( BMP_PAGE_BOTTOM_RIGHT_SHADOW_MASK ) );
- Bitmap aFilledSquare( Size( mnShadowPxWidth, mnShadowPxWidth ), 24 );
- aFilledSquare.Erase( aShadowColor );
+ AlphaMask aMask( shadowMask.getBottomRight().GetBitmap() );
+ Bitmap aFilledSquare( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
aPageBottomRightShadow = BitmapEx( aFilledSquare, aMask );
- aMask.Rotate( 900, 255 );
- aPageTopRightShadow = BitmapEx( aFilledSquare, aMask );
- aMask.Rotate( 1800, 255);
+
+ aMask = AlphaMask( shadowMask.getBottomLeft().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
aPageBottomLeftShadow = BitmapEx( aFilledSquare, aMask );
- aFilledSquare = Bitmap( Size( 1, mnShadowPxWidth ), 24 );
+ aMask = AlphaMask( shadowMask.getBottom().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
aFilledSquare.Erase( aShadowColor );
- aMask = Bitmap( SW_RES( BMP_PAGE_BOTTOM_SHADOW_MASK ) );
aPageBottomShadowBase = BitmapEx( aFilledSquare, aMask );
- aFilledSquare = Bitmap( Size( mnShadowPxWidth, 1 ), 24 );
+ aMask = AlphaMask( shadowMask.getTop().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
+ aPageTopShadowBase = BitmapEx( aFilledSquare, aMask );
+
+ aMask = AlphaMask( shadowMask.getTopRight().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
+ aPageTopRightShadow = BitmapEx( aFilledSquare, aMask );
+
+ aMask = AlphaMask( shadowMask.getRight().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
aFilledSquare.Erase( aShadowColor );
- aMask = Bitmap( SW_RES( BMP_PAGE_RIGHT_SHADOW_MASK ) );
aPageRightShadowBase = BitmapEx( aFilledSquare, aMask );
+
+ aMask = AlphaMask( shadowMask.getTopLeft().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
+ aPageTopLeftShadow = BitmapEx( aFilledSquare, aMask );
+
+ aMask = AlphaMask( shadowMask.getLeft().GetBitmap() );
+ aFilledSquare = Bitmap( aMask.GetSizePixel(), 24 );
+ aFilledSquare.Erase( aShadowColor );
+ aPageLeftShadowBase = BitmapEx( aFilledSquare, aMask );
}
SwRect aPaintRect;
OutputDevice *pOut = _pViewShell->GetOut();
- // paint right shadow
+ SwPageFrm::GetHorizontalShadowRect( _rPageRect, _pViewShell, aPaintRect, bPaintLeftShadow, bPaintRightShadow, bRightSidebar );
+
+ // Right shadow & corners
if ( bPaintRightShadow )
{
- SwPageFrm::GetRightShadowRect( _rPageRect, _pViewShell, aPaintRect, bRightSidebar );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() + 1, aPagePxRect.Bottom() + 1 - (aPageBottomRightShadow.GetSizePixel().Height() - mnShadowPxWidth) ) ),
+ aPageBottomRightShadow );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() + 1, aPagePxRect.Top() - mnShadowPxWidth ) ),
+ aPageTopRightShadow );
BitmapEx aPageRightShadow = aPageRightShadowBase;
- aPageRightShadow.Scale( 1, aPaintRect.Height() );
- pOut->DrawBitmapEx( pOut->PixelToLogic( aPaintRect.Pos() ), aPageRightShadow );
- pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Left(), aPaintRect.Top() - mnShadowPxWidth ) ), aPageTopRightShadow );
- pOut->DrawBitmapEx( pOut->PixelToLogic( aPaintRect.BottomLeft() ), aPageBottomRightShadow );
+ aPageRightShadow.Scale( 1, aPagePxRect.Height() - 2 * (mnShadowPxWidth - 1) );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Right() + mnShadowPxWidth, aPagePxRect.Top() + mnShadowPxWidth - 1) ), aPageRightShadow );
}
- // paint bottom shadow
- SwPageFrm::GetBottomShadowRect( _rPageRect, _pViewShell, aPaintRect, bFullBottomShadow, bRightSidebar );
- if(!bFullBottomShadow)
+ // Left shadows and corners
+ if(bPaintLeftShadow)
{
- pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Left() - mnShadowPxWidth, aPaintRect.Top() ) ), aPageBottomLeftShadow );
+ const long lLeft = aPaintRect.Left() - aPageBottomLeftShadow.GetSizePixel().Width();
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( lLeft,
+ aPagePxRect.Bottom() + 1 + mnShadowPxWidth - aPageBottomLeftShadow.GetSizePixel().Height() ) ), aPageBottomLeftShadow );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( lLeft, aPagePxRect.Top() - mnShadowPxWidth ) ), aPageTopLeftShadow );
+ BitmapEx aPageLeftShadow = aPageLeftShadowBase;
+ aPageLeftShadow.Scale( 1, aPagePxRect.Height() - 2 * (mnShadowPxWidth - 1) );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( lLeft, aPagePxRect.Top() + mnShadowPxWidth - 1) ), aPageLeftShadow );
}
+
BitmapEx aPageBottomShadow = aPageBottomShadowBase;
aPageBottomShadow.Scale( aPaintRect.Width(), 1 );
- pOut->DrawBitmapEx( pOut->PixelToLogic( aPaintRect.Pos() ), aPageBottomShadow);
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Left(), aPagePxRect.Bottom() + 1 ) ), aPageBottomShadow);
+ BitmapEx aPageTopShadow = aPageTopShadowBase;
+ aPageTopShadow.Scale( aPaintRect.Width(), 1 );
+ pOut->DrawBitmapEx( pOut->PixelToLogic( Point( aPaintRect.Left(), aPagePxRect.Top() - mnShadowPxWidth ) ), aPageTopShadow );
}
//mod #i6193# paint sidebar for notes
@@ -5480,28 +5512,47 @@ const sal_Int8 SwPageFrm::mnShadowPxWidth = 10;
author OD
*/
/*static*/ void SwPageFrm::GetBorderAndShadowBoundRect( const SwRect& _rPageRect,
- ViewShell* _pViewShell,
+ const ViewShell* _pViewShell,
SwRect& _orBorderAndShadowBoundRect,
- bool bRightSidebar )
+ bool bLeftShadow,
+ bool bRightShadow,
+ bool bRightSidebar
+ )
{
SwRect aAlignedPageRect( _rPageRect );
::SwAlignRect( aAlignedPageRect, _pViewShell );
SwRect aPagePxRect =
_pViewShell->GetOut()->LogicToPixel( aAlignedPageRect.SVRect() );
+ aPagePxRect.Bottom( aPagePxRect.Bottom() + mnShadowPxWidth + 1 );
+ aPagePxRect.Top( aPagePxRect.Top() - mnShadowPxWidth - 1 );
SwRect aTmpRect;
- SwPageFrm::GetRightShadowRect( _rPageRect, _pViewShell, aTmpRect, bRightSidebar );
- aPagePxRect.Right( aTmpRect.Right() );
+ // Always ask for full shadow since we want a bounding rect
+ // including at least the page frame
+ SwPageFrm::GetHorizontalShadowRect( _rPageRect, _pViewShell, aTmpRect, false, false, bRightSidebar );
- // Always ask for full shadow
- SwPageFrm::GetBottomShadowRect( _rPageRect, _pViewShell, aTmpRect, true, bRightSidebar );
- aPagePxRect.Bottom( aTmpRect.Bottom() );
- aPagePxRect.Left( aTmpRect.Left() );
+ if(bLeftShadow) aPagePxRect.Left( aTmpRect.Left() - mnShadowPxWidth - 1);
+ if(bRightShadow) aPagePxRect.Right( aTmpRect.Right() + mnShadowPxWidth + 1);
_orBorderAndShadowBoundRect = _pViewShell->GetOut()->PixelToLogic( aPagePxRect.SVRect() );
}
+SwRect SwPageFrm::GetBoundRect() const
+{
+ const ViewShell *pSh = getRootFrm()->GetCurrShell();
+ SwRect aPageRect( Frm() );
+ SwRect aResult;
+
+ if(!pSh) {
+ return SwRect( Point(0, 0), Size(0, 0) );
+ }
+
+ SwPageFrm::GetBorderAndShadowBoundRect( aPageRect, pSh, aResult,
+ IsLeftShadowNeeded(), IsRightShadowNeeded(), SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT );
+ return aResult;
+}
+
/*static*/ void SwPageFrm::AddSidebarBorders(SwRect &aRect, ViewShell* _pViewShell, bool bRightSidebar, bool bPx)
{
const SwPostItMgr *pMgr = _pViewShell ? _pViewShell->GetPostItMgr() : 0;
diff --git a/sw/source/core/view/pagepreviewlayout.cxx b/sw/source/core/view/pagepreviewlayout.cxx
index eae56dde8d50..fc24047a0b91 100644
--- a/sw/source/core/view/pagepreviewlayout.cxx
+++ b/sw/source/core/view/pagepreviewlayout.cxx
@@ -1073,7 +1073,8 @@ bool SwPagePreviewLayout::Paint( const Rectangle _aOutRect ) const
// #i80691# paint page border and shadow
{
SwRect aPageBorderRect;
- SwPageFrm::GetBorderAndShadowBoundRect( SwRect( aPageRect ), &mrParentViewShell, aPageBorderRect, true );
+ SwPageFrm::GetBorderAndShadowBoundRect( SwRect( aPageRect ), &mrParentViewShell, aPageBorderRect,
+ (*aPageIter)->pPage->IsLeftShadowNeeded(), (*aPageIter)->pPage->IsRightShadowNeeded(), true );
const Region aDLRegion(aPageBorderRect.SVRect());
mrParentViewShell.DLPrePaint2(aDLRegion);
SwPageFrm::PaintBorderAndShadow( aPageRect, &mrParentViewShell, true, false, true );
diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx
index 96cef3170ece..c3ca3f655ae1 100644
--- a/sw/source/core/view/viewimp.cxx
+++ b/sw/source/core/view/viewimp.cxx
@@ -190,17 +190,17 @@ void SwViewImp::SetFirstVisPage()
const bool bBookMode = pSwViewOption->IsViewLayoutBookMode();
SwPageFrm *pPage = (SwPageFrm*)pSh->GetLayout()->Lower();
- SwRect aPageRect = pPage->Frm();
+ SwRect aPageRect = pPage->GetBoundRect();
while ( pPage && !aPageRect.IsOver( pSh->VisArea() ) )
{
pPage = (SwPageFrm*)pPage->GetNext();
if ( pPage )
{
- aPageRect = pPage->Frm();
+ aPageRect = pPage->GetBoundRect();
if ( bBookMode && pPage->IsEmptyPage() )
{
const SwPageFrm& rFormatPage = pPage->GetFormatPage();
- aPageRect.SSize() = rFormatPage.Frm().SSize();
+ aPageRect.SSize() = rFormatPage.GetBoundRect().SSize();
}
}
}
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index fba37f34809d..797ed01a3287 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -991,45 +991,29 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
SwTwips nMinLeft = LONG_MAX;
SwTwips nMaxRight= 0;
- const SwTwips nSidebarWidth = pPostItMgr && pPostItMgr->ShowNotes() && pPostItMgr->HasNotes() ?
- pPostItMgr->GetSidebarWidth() + pPostItMgr->GetSidebarBorderWidth() :
- 0;
const bool bBookMode = GetViewOptions()->IsViewLayoutBookMode();
while ( pPage && pPage->Frm().Top() <= nBottom )
{
- SwRect aPageRect( pPage->Frm() );
+ SwRect aPageRect( pPage->GetBoundRect() );
if ( bBookMode )
{
const SwPageFrm& rFormatPage = static_cast<const SwPageFrm*>(pPage)->GetFormatPage();
- aPageRect.SSize() = rFormatPage.Frm().SSize();
+ aPageRect.SSize() = rFormatPage.GetBoundRect().SSize();
}
if ( aPageRect.IsOver( aBoth ) )
{
- const SwTwips nShadowWidth =
- GetOut()->PixelToLogic( Size( pPage->ShadowPxWidth(), 0 ) ).Width();
-
SwTwips nPageLeft = 0;
SwTwips nPageRight = 0;
- switch ( pPage->SidebarPosition() )
+ const sw::sidebarwindows::SidebarPosition aSidebarPos = pPage->SidebarPosition();
+
+ if( aSidebarPos != sw::sidebarwindows::SIDEBAR_NONE )
{
- case sw::sidebarwindows::SIDEBAR_LEFT:
- {
- nPageLeft = aPageRect.Left() - nSidebarWidth;
- nPageRight = aPageRect.Right() + nShadowWidth;
- }
- break;
- case sw::sidebarwindows::SIDEBAR_RIGHT:
- {
- nPageLeft = aPageRect.Left();
- nPageRight = aPageRect.Right() + nShadowWidth + nSidebarWidth;
- }
- break;
- case sw::sidebarwindows::SIDEBAR_NONE:
- // nothing to do
- break;
+ nPageLeft = aPageRect.Left();
+ nPageRight = aPageRect.Right();
}
+
if( nPageLeft < nMinLeft )
nMinLeft = nPageLeft;
if( nPageRight > nMaxRight )
diff --git a/sw/source/filter/basflt/fltini.cxx b/sw/source/filter/basflt/fltini.cxx
index f584b0476565..632d5c183e08 100644
--- a/sw/source/filter/basflt/fltini.cxx
+++ b/sw/source/filter/basflt/fltini.cxx
@@ -822,11 +822,11 @@ extern "C" { static void SAL_CALL thisModule() {} }
static oslGenericFunction GetMswordLibSymbol( const char *pSymbol )
{
static ::osl::Module aModule;
- static sal_Bool bLoaded = sal_False;
+ static sal_Bool bLoaded = sal_False;
static ::rtl::OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "msword" ) ) );
- if (!bLoaded)
- bLoaded = SvLibrary::LoadModule( aModule, aLibName, &thisModule );
- if (bLoaded)
+ if (!bLoaded)
+ bLoaded = SvLibrary::LoadModule( aModule, aLibName, &thisModule, SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY );
+ if (bLoaded)
return aModule.getFunctionSymbol( ::rtl::OUString::createFromAscii( pSymbol ) );
return NULL;
}
diff --git a/sw/source/ui/dialog/swabstdlg.cxx b/sw/source/ui/dialog/swabstdlg.cxx
index 1f97f9ddf717..2a3dedd83028 100644
--- a/sw/source/ui/dialog/swabstdlg.cxx
+++ b/sw/source/ui/dialog/swabstdlg.cxx
@@ -44,7 +44,8 @@ SwAbstractDialogFactory* SwAbstractDialogFactory::Create()
SwFuncPtrCreateDialogFactory fp = 0;
static ::osl::Module aDialogLibrary;
static const ::rtl::OUString sLibName(::vcl::unohelper::CreateLibraryName("swui", sal_True));
- if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( sLibName ) ) )
+ if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( sLibName ),
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY ) )
fp = ( SwAbstractDialogFactory* (__LOADONCALLAPI*)() )
aDialogLibrary.getFunctionSymbol( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDialogFactory")));
if ( fp )
diff --git a/unoxml/source/dom/node.cxx b/unoxml/source/dom/node.cxx
index 7ab6336aefdf..b4645bc0b578 100644
--- a/unoxml/source/dom/node.cxx
+++ b/unoxml/source/dom/node.cxx
@@ -87,8 +87,9 @@ namespace DOM
// add node's namespaces to current context
for (xmlNsPtr pNs = pNode->nsDef; pNs != 0; pNs = pNs->next) {
const xmlChar *pPrefix = pNs->prefix;
+ // prefix can be NULL when xmlns attribute is empty (xmlns="")
OString prefix(reinterpret_cast<const sal_Char*>(pPrefix),
- strlen(reinterpret_cast<const char*>(pPrefix)));
+ pPrefix ? strlen(reinterpret_cast<const char*>(pPrefix)) : 0);
const xmlChar *pHref = pNs->href;
OUString val(reinterpret_cast<const sal_Char*>(pHref),
strlen(reinterpret_cast<const char*>(pHref)),
diff --git a/vcl/inc/vcl/cursor.hxx b/vcl/inc/vcl/cursor.hxx
index 46f17b367412..d87d2201bfd4 100644
--- a/vcl/inc/vcl/cursor.hxx
+++ b/vcl/inc/vcl/cursor.hxx
@@ -69,8 +69,10 @@ public:
SAL_DLLPRIVATE void ImplDraw();
SAL_DLLPRIVATE void ImplRestore();
DECL_DLLPRIVATE_LINK( ImplTimerHdl, AutoTimer* );
- SAL_DLLPRIVATE void ImplShow( bool bDrawDirect = true, bool bRestore = false );
- SAL_DLLPRIVATE bool ImplHide();
+ SAL_DLLPRIVATE void ImplShow( bool bDrawDirect = true );
+ SAL_DLLPRIVATE void ImplHide();
+ SAL_DLLPRIVATE void ImplResume( bool bRestore = false );
+ SAL_DLLPRIVATE bool ImplSuspend();
SAL_DLLPRIVATE void ImplNew();
public:
@@ -113,6 +115,10 @@ public:
sal_Bool operator==( const Cursor& rCursor ) const;
sal_Bool operator!=( const Cursor& rCursor ) const
{ return !(Cursor::operator==( rCursor )); }
+
+private:
+ void ImplDoShow( bool bDrawDirect, bool bRestore );
+ bool ImplDoHide( bool bStop );
};
#endif // _SV_CURSOR_HXX
diff --git a/vcl/source/gdi/outdevnative.cxx b/vcl/source/gdi/outdevnative.cxx
index 4ac1d4610b3f..5ae7baaa9d89 100644
--- a/vcl/source/gdi/outdevnative.cxx
+++ b/vcl/source/gdi/outdevnative.cxx
@@ -236,7 +236,14 @@ sal_Bool OutputDevice::DrawNativeControl( ControlType nType,
if ( mbInitClipRegion )
ImplInitClipRegion();
- if ( mbOutputClipped || rControlRegion.IsEmpty() )
+ if ( mbOutputClipped
+#ifndef WNT
+ // This check causes spin buttons to not be drawn on Windows,
+ // see fdo#36481 . Presumably it is useful on other plaforms,
+ // though.
+ || rControlRegion.IsEmpty()
+#endif
+ )
return sal_True;
if ( mbInitLineColor )
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 66072a48d392..b9d76cd4faa5 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -3359,9 +3359,9 @@ std::map< sal_Int32, sal_Int32 > PDFWriterImpl::emitEmbeddedFont( const ImplFont
throw FontException();
// nLength3 is the rest of the file - excluding any section headers
- // nIndex now points to the first of the 512 '0' characters marking the
+ // nIndex now points before the first of the 512 '0' characters marking the
// fixed content portion
- sal_Int32 nLength3 = nFontLen - nIndex;
+ sal_Int32 nLength3 = nFontLen - nIndex - 1;
for( it = aSections.begin(); it != aSections.end(); ++it )
{
if( *it >= nIndex )
diff --git a/vcl/source/window/abstdlg.cxx b/vcl/source/window/abstdlg.cxx
index d60dbb83b6c5..7b9988888502 100644
--- a/vcl/source/window/abstdlg.cxx
+++ b/vcl/source/window/abstdlg.cxx
@@ -43,7 +43,8 @@ VclAbstractDialogFactory* VclAbstractDialogFactory::Create()
{
FuncPtrCreateDialogFactory fp = 0;
static ::osl::Module aDialogLibrary;
- if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( RTL_CONSTASCII_USTRINGPARAM( DLL_NAME ) ) ) )
+ if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, String( RTL_CONSTASCII_USTRINGPARAM( DLL_NAME ) ),
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY ) )
fp = ( VclAbstractDialogFactory* (__LOADONCALLAPI*)() )
aDialogLibrary.getFunctionSymbol( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDialogFactory")) );
if ( fp )
diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx
index 659f7df31fa7..e7542d9b07ec 100644
--- a/vcl/source/window/cursor.cxx
+++ b/vcl/source/window/cursor.cxx
@@ -170,9 +170,7 @@ void Cursor::ImplRestore()
}
}
-// -----------------------------------------------------------------------
-
-void Cursor::ImplShow( bool bDrawDirect, bool bRestore )
+void Cursor::ImplDoShow( bool bDrawDirect, bool bRestore )
{
if ( mbVisible )
{
@@ -215,9 +213,7 @@ void Cursor::ImplShow( bool bDrawDirect, bool bRestore )
}
}
-// -----------------------------------------------------------------------
-
-bool Cursor::ImplHide()
+bool Cursor::ImplDoHide( bool bSuspend )
{
bool bWasCurVisible = false;
if ( mpData && mpData->mpWindow )
@@ -225,11 +221,35 @@ bool Cursor::ImplHide()
bWasCurVisible = mpData->mbCurVisible;
if ( mpData->mbCurVisible )
ImplRestore();
+
+ if ( !bSuspend )
+ {
+ mpData->maTimer.Stop();
+ mpData->mpWindow = NULL;
+ }
}
return bWasCurVisible;
}
-// -----------------------------------------------------------------------
+void Cursor::ImplShow( bool bDrawDirect )
+{
+ ImplDoShow( bDrawDirect, false );
+}
+
+void Cursor::ImplHide()
+{
+ ImplDoHide( false );
+}
+
+void Cursor::ImplResume( bool bRestore )
+{
+ ImplDoShow( false, bRestore );
+}
+
+bool Cursor::ImplSuspend()
+{
+ return ImplDoHide( true );
+}
void Cursor::ImplNew()
{
@@ -330,12 +350,6 @@ void Cursor::Hide()
{
mbVisible = sal_False;
ImplHide();
-
- if( mpData )
- {
- mpData->maTimer.Stop();
- mpData->mpWindow = NULL;
- }
}
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index fdb86cb07303..e7fd025f2aae 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -2404,7 +2404,7 @@ void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags )
{
bool bRestoreCursor = false;
if ( mpWindowImpl->mpCursor )
- bRestoreCursor = mpWindowImpl->mpCursor->ImplHide();
+ bRestoreCursor = mpWindowImpl->mpCursor->ImplSuspend();
mbInitClipRegion = sal_True;
mpWindowImpl->mbInPaint = sal_True;
@@ -2451,7 +2451,7 @@ void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags )
mbInitClipRegion = sal_True;
mpWindowImpl->mpPaintRegion = NULL;
if ( mpWindowImpl->mpCursor )
- mpWindowImpl->mpCursor->ImplShow( false, bRestoreCursor );
+ mpWindowImpl->mpCursor->ImplResume( bRestoreCursor );
}
}
else
diff --git a/wizards/source/importwizard/FilesModul.xba b/wizards/source/importwizard/FilesModul.xba
index cb999252b24c..e35e0b3a3ba9 100644
--- a/wizards/source/importwizard/FilesModul.xba
+++ b/wizards/source/importwizard/FilesModul.xba
@@ -41,6 +41,7 @@ Dim NewContentList() as String
Dim XMLTemplateContentString as String
Dim ApplIndex as Integer
Dim bAssignFileName as Boolean
+Dim bInterruptSearch as Boolean
bInterruptSearch = False
For i = 0 To MaxCollectIndex
SearchDir = PathCollection(i,0)