[Libreoffice-commits] core.git: Branch 'feature/lok_sofficemain' - 9 commits - desktop/source include/LibreOfficeKit include/vcl libreofficekit/qa libreofficekit/source sd/source sw/inc sw/source
Andrzej Hunt
andrzej.hunt at collabora.com
Tue Jul 29 08:22:32 PDT 2014
Rebased ref, commits from common ancestor:
commit dacbc71cb3671b84e47019eeafcf92aa55f3dcc1
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 17:01:48 2014 +0200
gtktiledviewer: add part mode selector.
Change-Id: Ia1e78df1d833f9b0fbda0b78136590c9c960fa27
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index d74eb96..a96e1e3 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -151,6 +151,29 @@ void changePart( GtkWidget* pSelector, gpointer /* pItem */ )
lok_docview_set_part( LOK_DOCVIEW(pDocView), nPart );
}
}
+
+void populatePartModeSelector( GtkComboBoxText* pSelector )
+{
+ gtk_combo_box_text_append_text( pSelector, "Default" );
+ gtk_combo_box_text_append_text( pSelector, "Slide" );
+ gtk_combo_box_text_append_text( pSelector, "Notes" );
+ gtk_combo_box_text_append_text( pSelector, "Combined (SlideNotes)" );
+ gtk_combo_box_text_append_text( pSelector, "Embedded Objects" );
+ gtk_combo_box_set_active( GTK_COMBO_BOX(pSelector), 0 );
+}
+
+void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ )
+{
+ // Just convert directly back to the LibreOfficeKitPartMode enum.
+ // I.e. the ordering above should match the enum member ordering.
+ LibreOfficeKitPartMode ePartMode =
+ LibreOfficeKitPartMode( gtk_combo_box_get_active( GTK_COMBO_BOX(pSelector) ) );
+
+ if ( pDocView )
+ {
+ lok_docview_set_partmode( LOK_DOCVIEW(pDocView), ePartMode );
+ }
+}
#endif
int main( int argc, char* argv[] )
@@ -207,11 +230,20 @@ int main( int argc, char* argv[] )
gtk_container_add( GTK_CONTAINER(pPartSelectorToolItem), pComboBox );
gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pPartSelectorToolItem, -1 );
g_signal_connect( G_OBJECT(pComboBox), "changed", G_CALLBACK(changePart), NULL );
-#endif
GtkToolItem* pSeparator2 = gtk_separator_tool_item_new();
gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pSeparator2, -1);
+ GtkToolItem* pPartModeSelectorToolItem = gtk_tool_item_new();
+ GtkWidget* pPartModeComboBox = gtk_combo_box_text_new();
+ gtk_container_add( GTK_CONTAINER(pPartModeSelectorToolItem), pPartModeComboBox );
+ gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pPartModeSelectorToolItem, -1 );
+ g_signal_connect( G_OBJECT(pPartModeComboBox), "changed", G_CALLBACK(changePartMode), NULL );
+#endif
+
+ GtkToolItem* pSeparator3 = gtk_separator_tool_item_new();
+ gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pSeparator3, -1);
+
GtkToolItem* pEnableQuadView = gtk_toggle_tool_button_new();
gtk_tool_button_set_label( GTK_TOOL_BUTTON(pEnableQuadView), "Use Quad View" );
gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pEnableQuadView, -1 );
@@ -233,6 +265,7 @@ int main( int argc, char* argv[] )
// GtkComboBox requires gtk 2.24 or later
#if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2
populatePartSelector( GTK_COMBO_BOX_TEXT(pComboBox), LOK_DOCVIEW(pDocView) );
+ populatePartModeSelector( GTK_COMBO_BOX_TEXT(pPartModeComboBox) );
#endif
gtk_main();
commit 7d0fb0c2707f72cffcc1c2d51956174782a4164d
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 17:01:20 2014 +0200
Protect setPartMode and ensure we actually show the new mode.
Change-Id: I3642702c5bf268f3c9ab04162166078052804270
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index e35232d..f12e841 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -510,7 +510,31 @@ static void doc_setPartMode(LibreOfficeKitDocument* pThis,
return;
}
- pDoc->setPartMode(ePartMode);
+ Application::AcquireSolarMutex(1);
+ {
+ int nCurrentPart = pDoc->getPart();
+
+ pDoc->setPartMode(ePartMode);
+
+ // We need to make sure the internal state is updated, just changing the mode
+ // might not update the relevant shells (i.e. impress will keep rendering the
+ // previous mode unless we do this).
+ // TODO: we might want to do this within the relevant components rather than
+ // here, but that's also dependent on how we implement embedded object
+ // rendering I guess?
+ // TODO: we could be clever and e.g. set to 0 when we change to/from
+ // embedded object mode, and not when changing between slide/notes/combined
+ // modes?
+ if ( nCurrentPart < pDoc->getParts() )
+ {
+ pDoc->setPart( nCurrentPart );
+ }
+ else
+ {
+ pDoc->setPart( 0 );
+ }
+ }
+ Application::ReleaseSolarMutex();
}
void doc_paintTile (LibreOfficeKitDocument* pThis,
commit 817791a1e94de965d5507fabad3f1b8fef1d6bad
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 17:00:56 2014 +0200
Impress/Tiled Rendering: implement setPartMode.
Change-Id: I831953ac3fa1d0a15b64aa008cc3bfb79e72575a
diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx
index 8fa1904..e620ca5 100644
--- a/sd/source/ui/inc/unomodel.hxx
+++ b/sd/source/ui/inc/unomodel.hxx
@@ -234,6 +234,7 @@ public:
virtual int getPart() SAL_OVERRIDE;
virtual int getParts() SAL_OVERRIDE;
virtual OUString getPartName( int nPart ) SAL_OVERRIDE;
+ virtual void setPartMode( LibreOfficeKitPartMode ePartMode ) SAL_OVERRIDE;
// XComponent
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 7726de4..6c1661b 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2239,7 +2239,6 @@ void SdXImpressDocument::setPart( int nPart )
// only possible to select page 0 in this mode, I have no idea how you
// then actually select what is on the handout page, which defaults to
// a 4x4 grid of empty pages).
- pViewSh->SetPageKind( PK_STANDARD );
pViewSh->SwitchPage( nPart );
}
}
@@ -2269,6 +2268,40 @@ OUString SdXImpressDocument::getPartName( int nPart )
return pPage->GetName();
}
+void SdXImpressDocument::setPartMode( LibreOfficeKitPartMode ePartMode )
+{
+ DrawViewShell* pViewSh = dynamic_cast< DrawViewShell* >( mpDoc->GetDocSh()->GetViewShell() );
+ if (!pViewSh)
+ {
+ return;
+ }
+
+ PageKind aPageKind;
+ switch ( ePartMode )
+ {
+ case LOK_PARTMODE_EMBEDDEDOBJ:
+ // This will probably be handled higher up, i.e.
+ // we probably shouldn't be handling this here.
+ // (However we don't offer embedded object-only
+ // rendering anywhere yet, so this may be a
+ // completely incorrect comment.)
+ assert( false );
+ // And let's fall through in a normal build.
+ case LOK_PARTMODE_DEFAULT:
+ case LOK_PARTMODE_SLIDE:
+ aPageKind = PK_STANDARD;
+ break;
+ case LOK_PARTMODE_SLIDENOTES:
+ aPageKind = PK_NOTES;
+ break;
+ case LOK_PARTMODE_NOTES:
+ // TODO: this shows combined slides + notes
+ aPageKind = PK_NOTES;
+ break;
+ }
+ pViewSh->SetPageKind( aPageKind );
+}
+
Size SdXImpressDocument::getDocumentSize()
{
SdrPageView* pCurPageView = mpDoc->GetDocSh()->GetViewShell()->GetView()->GetSdrPageView();
commit 18b1fdfb6b250ad1f85bdbc1b4ed126020a07763
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 17:00:33 2014 +0200
LOKDocView: add set_part_mode.
Change-Id: I0e14a535124e93979ef05431255911245a11aa29
diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h
index a73f98d..522d74d 100644
--- a/include/LibreOfficeKit/LibreOfficeKitGtk.h
+++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h
@@ -64,6 +64,8 @@ void lok_docview_set_part (LOKDocView* pDocView,
int nPart);
char* lok_docview_get_part_name (LOKDocView* pDocView,
int nPart);
+void lok_docview_set_partmode (LOKDocView* pDocView,
+ LibreOfficeKitPartMode ePartMode);
#ifdef __cplusplus
}
#endif
diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c
index 17c0a1c..76faa3b 100644
--- a/libreofficekit/source/gtk/lokdocview.c
+++ b/libreofficekit/source/gtk/lokdocview.c
@@ -194,4 +194,11 @@ SAL_DLLPUBLIC_EXPORT char* lok_docview_get_part_name( LOKDocView* pDocView, int
{
return pDocView->pDocument->pClass->getPartName( pDocView->pDocument, nPart );
}
+
+SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView,
+ LibreOfficeKitPartMode ePartMode )
+{
+ pDocView->pDocument->pClass->setPartMode( pDocView->pDocument, ePartMode );
+ renderDocument( pDocView );
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit afdbf7dbd95653831ac3edff1eecdc77f85ad873
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 16:59:10 2014 +0200
Impress/Tiled Rendering: return correct number for getPart.
It looks like page ids begin with 1.
Change-Id: I367285b8cfa1fcc9b8f22a9bb3c679d7e9579099
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index b6754ec..7726de4 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2256,7 +2256,8 @@ int SdXImpressDocument::getPart()
DrawViewShell* pViewSh = dynamic_cast< DrawViewShell* >( mpDoc->GetDocSh()->GetViewShell() );
if (pViewSh)
{
- return pViewSh->GetCurPageId();
+ // curPageId seems to start at 1
+ return pViewSh->GetCurPageId() - 1;
}
return 0;
}
commit 248f5679783d442479f1e966228c759f0e139b91
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 13:28:49 2014 +0200
ITiledRenderable: provide default implementations for some methods.
Writer doesn't understand the concept of parts at the moment, it
makes most sense to keep these dummy implementations central.
Change-Id: Iafbd89864b753ba2bed28a05b0f59df85f364feb
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index a872713..a57053e 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -47,18 +47,27 @@ public:
* Set the document "part", i.e. slide for a slideshow, and
* tab for a spreadsheet.
*/
- virtual void setPart( int nPart ) = 0;
+ virtual void setPart( int nPart )
+ {
+ (void) nPart;
+ }
/**
* Get the number of parts -- see setPart for further details.
*/
- virtual int getParts() = 0;
+ virtual int getParts()
+ {
+ return 1;
+ }
/**
* Get the currently displayed/selected part -- see setPart for further
* details.
*/
- virtual int getPart() = 0;
+ virtual int getPart()
+ {
+ return 0;
+ }
/**
* Get the name of the currently displayed part, i.e. sheet in a spreadsheet
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index 1318071..a48a8f3 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -439,9 +439,6 @@ public:
long nTileWidth,
long nTileHeight ) SAL_OVERRIDE;
virtual Size getDocumentSize() SAL_OVERRIDE;
- virtual void setPart( int nPart ) SAL_OVERRIDE;
- virtual int getPart() SAL_OVERRIDE;
- virtual int getParts() SAL_OVERRIDE;
void Invalidate();
void Reactivate(SwDocShell* pNewDocShell);
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 8208814..1dc5f54 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -3139,21 +3139,6 @@ Size SwXTextDocument::getDocumentSize()
return pViewShell->GetDocSize();
}
-void SwXTextDocument::setPart( int /*nPart*/ )
-{
-}
-
-int SwXTextDocument::getPart()
-{
- return 0;
-}
-
-int SwXTextDocument::getParts()
-{
- // For now we treat the document as one large piece.
- return 1;
-}
-
void * SAL_CALL SwXTextDocument::operator new( size_t t) throw()
{
return SwXTextDocumentBaseClass::operator new(t);
commit 487019b69874904366a08eeca5fb6feffb8021d6
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 13:19:44 2014 +0200
Impress: Implement getPartName.
Change-Id: I614838505fef901fc37e8d3906bb59c60b034453
diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx
index 6887663..8fa1904 100644
--- a/sd/source/ui/inc/unomodel.hxx
+++ b/sd/source/ui/inc/unomodel.hxx
@@ -233,6 +233,7 @@ public:
virtual void setPart( int nPart ) SAL_OVERRIDE;
virtual int getPart() SAL_OVERRIDE;
virtual int getParts() SAL_OVERRIDE;
+ virtual OUString getPartName( int nPart ) SAL_OVERRIDE;
// XComponent
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 5a162f2..b6754ec 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2261,6 +2261,13 @@ int SdXImpressDocument::getPart()
return 0;
}
+OUString SdXImpressDocument::getPartName( int nPart )
+{
+ SdPage* pPage = mpDoc->GetSdPage( nPart, PK_STANDARD );
+ assert( pPage );
+ return pPage->GetName();
+}
+
Size SdXImpressDocument::getDocumentSize()
{
SdrPageView* pCurPageView = mpDoc->GetDocSh()->GetViewShell()->GetView()->GetSdrPageView();
commit 90bb3e457d36343ff951d7305fdb7ed51fe33223
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 13:17:45 2014 +0200
gtktiledviewer: show part names in selector.
Change-Id: I02ae5b729f96e36b3f226218b32495907cb63cf3
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index 21cb179..d74eb96 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <assert.h>
#include <stdio.h>
#include <string.h>
@@ -122,10 +123,17 @@ void changeQuadView( GtkWidget* /*pButton*/, gpointer /* pItem */ )
#if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2
void populatePartSelector( GtkComboBoxText* pSelector, LOKDocView* pView )
{
- char sText[10];
- for ( int i = 0; i < lok_docview_get_parts(pView); i++ )
+ const int nMaxLength = 50;
+ char sText[nMaxLength];
+
+ int nParts = lok_docview_get_parts(pView);
+ for ( int i = 0; i < nParts; i++ )
{
- sprintf( sText, "%i", i+1 );
+ char* pName = lok_docview_get_part_name( pView, i );
+ assert( pName );
+ snprintf( sText, nMaxLength, "%i (%s)", i+1, pName );
+ free( pName );
+
gtk_combo_box_text_append_text( pSelector, sText );
}
gtk_combo_box_set_active( GTK_COMBO_BOX(pSelector), 0 );
@@ -219,8 +227,10 @@ int main( int argc, char* argv[] )
gtk_widget_show_all( pWindow );
pFileName = argv[2];
- lok_docview_open_document( LOK_DOCVIEW(pDocView), argv[2] );
-// GtkComboBox requires gtk 2.24 or later
+ assert( lok_docview_open_document( LOK_DOCVIEW(pDocView), argv[2] ) );
+ assert( LOK_DOCVIEW(pDocView)->pDocument );
+
+ // GtkComboBox requires gtk 2.24 or later
#if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2
populatePartSelector( GTK_COMBO_BOX_TEXT(pComboBox), LOK_DOCVIEW(pDocView) );
#endif
commit 7c465793f6d970dd5c7a7fb0ac6bdfa9b2a32e58
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Tue Jul 29 13:17:30 2014 +0200
LOKDocView: add part name retrieval.
Change-Id: Iac31de0410d7f6187e5884152c329375047a23f4
diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h
index 37d21f0..a73f98d 100644
--- a/include/LibreOfficeKit/LibreOfficeKitGtk.h
+++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h
@@ -62,7 +62,8 @@ int lok_docview_get_parts (LOKDocView* pDocView);
int lok_docview_get_part (LOKDocView* pDocView);
void lok_docview_set_part (LOKDocView* pDocView,
int nPart);
-
+char* lok_docview_get_part_name (LOKDocView* pDocView,
+ int nPart);
#ifdef __cplusplus
}
#endif
diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c
index cdc2339..17c0a1c 100644
--- a/libreofficekit/source/gtk/lokdocview.c
+++ b/libreofficekit/source/gtk/lokdocview.c
@@ -190,5 +190,8 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_part( LOKDocView* pDocView, int nPart)
renderDocument( pDocView );
}
-
+SAL_DLLPUBLIC_EXPORT char* lok_docview_get_part_name( LOKDocView* pDocView, int nPart )
+{
+ return pDocView->pDocument->pClass->getPartName( pDocView->pDocument, nPart );
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list