Example #1
0
static void ui_layout_save_load(void** state)
{
    UILayout layout;
    (void)state;

    assert_true(UILayout_saveLayout(&s_layout, "t2-output/temp_layout.json"));
    assert_true(UILayout_loadLayout(&layout, "t2-output/temp_layout.json"));

    compareLayouts(&layout, &s_layout);
}
Example #2
0
static void ui_session_layout(void** state)
{
    UILayout layout;
    UILayout layout2;
    (void)state;

    PluginHandler_addStaticPlugin(&s_pluginData);
    imguiSetup(1024, 768);

    ImGuiIO& io = ImGui::GetIO();

    Session* session = Session_create();
    Session* session2 = Session_create();

    PluginData* registersPlugin = PluginHandler_findPlugin(0, "registers_plugin", "Registers View", true);
    PluginData* sourcecodePlugin = PluginHandler_findPlugin(0, "sourcecode_plugin", "Source Code View", true);

    ViewPluginInstance* i0 = PluginInstance_createViewPlugin(registersPlugin);
    ViewPluginInstance* i1 = PluginInstance_createViewPlugin(sourcecodePlugin);

    Session_addViewPlugin(session, i0);
    Session_addViewPlugin(session, i1);

    PluginUI_setWindowRect(i0, &s_t0);
    PluginUI_setWindowRect(i1, &s_t1);

    Session_getLayout(session, &layout, io.DisplaySize.x, io.DisplaySize.y);
    UILayout_saveLayout(&layout, "t2-output/temp_layout2.json");

    // Tear down

    Session_removeViewPlugin(session, i0);
    Session_removeViewPlugin(session, i1);
    PluginHandler_unloadAllPlugins();

    // Load the layout

    UILayout_loadLayout(&layout2, "t2-output/temp_layout2.json");
    compareLayouts(&layout, &layout2);

    int count = 0;

    Session_setLayout(session2, &layout2, io.DisplaySize.x, io.DisplaySize.y);

    ViewPluginInstance** plugins = Session_getViewPlugins(session2, &count);

    assert_int_equal(layout.layoutItemCount, count);

    for (int i = 0; i < layout.layoutItemCount; ++i)
    {
        FloatRect rect;

        PluginUI_getWindowRect(plugins[i], &rect);

        const LayoutItem* item = &layout2.layoutItems[i];

        assert_int_equal((int)(item->rect.x * io.DisplaySize.x), (int)rect.x);
        assert_int_equal((int)(item->rect.y * io.DisplaySize.y), (int)rect.y);
        assert_int_equal((int)(item->rect.width * io.DisplaySize.x), (int)rect.width);
        assert_int_equal((int)(item->rect.height * io.DisplaySize.y), (int)rect.height);
    }
}
Example #3
0
bool KPrPageLayouts::loadOdf( KoPALoadingContext & context )
{
    QHash<QString, KoXmlElement*> layouts = context.odfLoadingContext().stylesReader().presentationPageLayouts();
    QHash<QString, KoXmlElement*>::iterator it( layouts.begin() );

    // TODO need to use the correct page size
    // we should check which layouts are already loaded
    const QMap<QString, KoPAMasterPage *> & masterPages = context.masterPages();
    if ( ! masterPages.isEmpty() ) {
        KoPageLayout & layout = masterPages.begin().value()->pageLayout();
        QRectF pageRect( 0, 0, layout.width, layout.height );
        for ( ; it != layouts.end(); ++it ) {
            KPrPageLayout * pageLayout = new KPrPageLayout();
            if ( pageLayout->loadOdf( *( it.value() ), pageRect ) ) {
                QMap<KPrPageLayoutWrapper, KPrPageLayout *>::const_iterator it( m_pageLayouts.constFind( KPrPageLayoutWrapper( pageLayout ) ) );
                if ( it != m_pageLayouts.constEnd() ) {
                    delete pageLayout;
                }
                else {
                    m_pageLayouts.insert( KPrPageLayoutWrapper( pageLayout ), pageLayout );
                }
            }
            else {
                delete pageLayout;
            }
        }
    }

    // handel default styles
    layouts = context.odfLoadingContext().defaultStylesReader().presentationPageLayouts();
    it = layouts.begin();
    QList<KPrPageLayout *> defaultLayouts;
    for ( ; it != layouts.end(); ++it ) {
        KPrPageLayout * pageLayout = new KPrPageLayout();
        // this is not used but needed
        QRectF pageRect( 0, 0, 800, 600 );
        if ( pageLayout->loadOdf( *( it.value() ), pageRect ) ) {
            defaultLayouts.append( pageLayout );
        }
        else {
            delete pageLayout;
        }
    }
    QList<KPrPageLayout *> documentLayouts = m_pageLayouts.values();

    qSort( documentLayouts.begin(), documentLayouts.end(), compareLayouts );
    qSort( defaultLayouts.begin(), defaultLayouts.end(), compareLayouts );

    QList<KPrPageLayout *>::const_iterator docIt = documentLayouts.constBegin();
    QList<KPrPageLayout *>::const_iterator defaultIt = defaultLayouts.constBegin();
    while ( defaultIt != defaultLayouts.constEnd() ) {
        if ( docIt == documentLayouts.constEnd() || compareLayouts( *defaultIt, *docIt ) ) {
            m_pageLayouts.insert( KPrPageLayoutWrapper( *defaultIt ), *defaultIt );
            ++defaultIt;
        }
        else if ( compareLayouts( *docIt, *defaultIt ) ) {
            ++docIt;
        }
        else {
            // it already exist
            ++docIt;
            ++defaultIt;
        }
    }

    return true;
}