summaryrefslogtreecommitdiff
path: root/source/global.cxx
blob: 39e63a0bdc2fdf4f2a3083bb14812449f00269f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

#include "global.hxx"
#include "cppuhelper/bootstrap.hxx"
#include "rtl/ustring.hxx"
#include "rtl/textenc.h"

#include <com/sun/star/frame/XDesktop.hpp>
#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>

#include <cstring>
#include <iostream>

using ::com::sun::star::beans::PropertyValue;
using ::com::sun::star::frame::XDesktop;
using ::com::sun::star::frame::XComponentLoader;
using ::com::sun::star::sheet::XSpreadsheetDocument;
using ::com::sun::star::uno::XComponentContext;
using ::com::sun::star::lang::XMultiComponentFactory;;
using ::com::sun::star::lang::XComponent;;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::Sequence;
using ::rtl::OUString;

using namespace ::std;

namespace test {

OUString ascii(const sal_Char* str)
{
    return ::rtl::OUString::intern(str, ::std::strlen(str), RTL_TEXTENCODING_ASCII_US);
}

Reference<XDesktop> bootstrap()
{
    Reference<XSpreadsheetDocument> xSpDoc;
    Reference<XComponentContext> xCC = ::cppu::bootstrap();
    Reference<XMultiComponentFactory> xFactory = xCC->getServiceManager();

    Reference<XDesktop> xDesktop(xFactory->createInstanceWithContext(
        ascii("com.sun.star.frame.Desktop"), xCC), UNO_QUERY_THROW);

    return xDesktop;
}

Reference<XSpreadsheetDocument> loadComponent(const Reference<XDesktop>& xDesktop, const OUString& rPath)
{
    Reference<XSpreadsheetDocument> xSpDoc;
    Reference<XComponentLoader> xLoader(xDesktop, UNO_QUERY_THROW);
    Sequence<PropertyValue> args;
    Reference<XComponent> xComponent = xLoader->loadComponentFromURL( 
        rPath, ascii("_default"), 0, args);

    if (!xComponent.is())
    {
        error("component failed to load");
        return xSpDoc;
    }

    xSpDoc.set(xComponent, UNO_QUERY_THROW);
    return xSpDoc;
}

void info(const string& msg)
{
    cout << "info: " << msg << endl;
}

void error(const string& msg)
{
    cerr << "error: " << msg << endl;
}

}