Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


I'm sorry this is a little late. But I think we're still fine, as this should until now only have hit master towards LO 5.1, and not any libreoffice-5-0 or earlier.

On 06/22/2015 06:59 AM, Laurent Godard wrote:
commit a64999511ae654131d997eec9a3d78478cfc1c75
Author: Laurent Godard <lgodard.libre@laposte.net>
Date:   Thu Apr 30 16:56:14 2015 +0200

     new uno sidebar api tdf#91806

     the entry point is SfxBaseController::getSidebar()

     the Decks and panels are now per SidebarController and not global anymore

     ' macro example
     Sub testSidebarApi

        controller =  thisComponent.currentcontroller
        frameIni =  thisComponent.currentcontroller.frame
        sidebar =  thisComponent.currentcontroller.getSidebar()

        sidebar.setVisible(true)

        frame = sidebar.getFrame()

        decks = sidebar.getdecks()

        c = decks.count

        h = decks.hasElements()

        e = decks.getElementNames()

        a =  decks.hasByName("MyDeck")

        deck = decks.getByName("MyDeck")
        deck.activate(true)

        t = deck.getTitle()
        deck.setTitle("new deck title")

             deck.moveFirst()
             deck.moveLast()
             deck.moveUp()
             deck.moveDown()

             index = deck.getOrderIndex()

        panels = deck.getPanels()
        ep = panels.getElementnames()

        ap = panels.hasByName("aPanelName")

        panel = panels.getByName("aPanelName")
        panel.setTitle("new panel title")

        panel.collapse()

        panel.expand(true) ' expand and collapse other

             index = panel.getOrderIndex()

             panel.moveLast()
             panel.moveFirst()
             panel.moveDown()
             panel.moveUp()

     End Sub

     Change-Id: I7a4b953f2277dea483bb296ba6ead35de7205ace
     Reviewed-on: https://gerrit.libreoffice.org/15856
     Tested-by: Jenkins <ci@libreoffice.org>
     Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
     Tested-by: Tomaž Vajngerl <quikee@gmail.com>

[...]
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 97f4f3e..fd1b03a 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -4020,6 +4020,11 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/ui,\
        XModuleUIConfigurationManagerSupplier \
        XSidebar \
        XSidebarPanel \
+       XPanel \
+       XPanels \
+       XDeck \
+       XDecks \
+       XSidebarProvider \

Please keep the list sorted lexicographically.

        XStatusbarItem \
        XToolPanel \
        XUIConfiguration \
diff --git a/offapi/com/sun/star/frame/XController2.idl b/offapi/com/sun/star/frame/XController2.idl
index bd4eaba..400b7ae 100644
--- a/offapi/com/sun/star/frame/XController2.idl
+++ b/offapi/com/sun/star/frame/XController2.idl
@@ -23,6 +23,7 @@
  #include <com/sun/star/frame/XController.idl>
  #include <com/sun/star/awt/XWindow.idl>
  #include <com/sun/star/beans/PropertyValue.idl>
+#include <com/sun/star/ui/XSidebarProvider.idl>


  module com {  module sun {  module star {  module frame {
@@ -60,6 +61,10 @@ interface XController2 : XController
      */
      [readonly, attribute] sequence< ::com::sun::star::beans::PropertyValue >
                                                              CreationArguments;
+
+    /** get the sidebar if exists
+    */
+    ::com::sun::star::ui::XSidebarProvider getSidebar();

XController2 is unpublished, so it is probably fine to add this. Nevertheless, please list this at <https://wiki.documentfoundation.org/ReleaseNotes/5.1#API_changes>. And please add a @since tag here.

  };


diff --git a/offapi/com/sun/star/ui/XDeck.idl b/offapi/com/sun/star/ui/XDeck.idl
new file mode 100644
index 0000000..53b7397
--- /dev/null
+++ b/offapi/com/sun/star/ui/XDeck.idl
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+#ifndef __com_sun_star_ui_XDeck_idl__
+#define __com_sun_star_ui_XDeck_idl__
+
+#include <com/sun/star/ui/XPanels.idl>
+
+
+ module com {  module sun {  module star {  module ui {
+
+/** provides access to Desk */

What does the above mean?  And please add a @since tag here.

+
+interface XDeck
+
+{
+    /** The deck identifier
+    */
+    string getId();
+
+    /** Get the deck title string
+    */
+    string getTitle();
+
+    /** Set the deck title string
+
+        @param newTitle
+            The new title string
+    */
+    void setTitle( [in] string newTitle );

Is setTitle necessary and/or useful? (At least, none of the code in this commit appears to use it.)

+
+    /** Is the deck the active one
+    */
+    boolean isActive();
+
+    /** Activate the deck and isplays its content

Typo "isplays".

+
+        @param bActivate
+            The requested state for the deck
+            <ul>
+            <li>TRUE sets the deck as the active one</li>
+            <li>FALSE hide the deck and defaults to the first deck of the sidebar</li>
+            </ul>
+    */
+    void activate( [in] boolean bActivate );
+
+    /** Get the ordering index of the deck button in sidebar
+    */
+    long getOrderIndex();
+
+    /** Set the ordering index of the deck button in sidebar
+
+        @param newOrderIndex
+        The new position
+    */
+    void setOrderIndex( [in] long newOrderIndex );

Is setOrderIndex necessary and/or useful? (At least, none of the code in this commit appears to use it.) Is setOrderIndex(0) the same as moveFirst()?

+
+    /** Move deck button at first position in sidebar
+    */
+    void moveFirst();
+
+    /** Move deck button at last position in sidebar
+    */
+    void moveLast();
+
+    /** Move deck one step up in the sidebar
+    */
+    void moveUp();
+
+    /** Move deck one step down in the sidebar
+    */
+    void moveDown();
+
+    /** Panels collection attached to the deck
+    */
+    com::sun::star::ui::XPanels getPanels();
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/offapi/com/sun/star/ui/XDecks.idl b/offapi/com/sun/star/ui/XDecks.idl
new file mode 100644
index 0000000..ba7c3a7
--- /dev/null
+++ b/offapi/com/sun/star/ui/XDecks.idl
@@ -0,0 +1,32 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+#ifndef __com_sun_star_ui_XDecks_idl__
+#define __com_sun_star_ui_XDecks_idl__
+
+#include <com/sun/star/container/XIndexAccess.idl>
+#include <com/sun/star/container/XNameAccess.idl>
+
+ module com {  module sun {  module star {  module ui {
+
+/** provides access to Desks of a Sidebar.*/

Typo "Desks".  And please add a @since tag here.

+
+interface XDecks
+
+{
+    interface com::sun::star::container::XIndexAccess;
+    interface com::sun::star::container::XNameAccess;

The downside of reusing such generic interfaces is that it doesn't make it clear that the returned ANYs are actually of type XDeck (I assume). So at least document that, or, if the full set of XIndex+XNameAccess is not really necessary and/or useful, consider replacing this with a (handful of) more specific method(s).

+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/offapi/com/sun/star/ui/XPanel.idl b/offapi/com/sun/star/ui/XPanel.idl
new file mode 100644
index 0000000..0070d23
--- /dev/null
+++ b/offapi/com/sun/star/ui/XPanel.idl
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+#ifndef __com_sun_star_ui_XPanel_idl__
+#define __com_sun_star_ui_XPanel_idl__
+
+#include <com/sun/star/ui/XPanel.idl>
+#include <com/sun/star/awt/XWindow.idl>
+
+
+ module com {  module sun {  module star {  module ui {
+
+/** provides access to Desk */

What does the above mean?  And please add a @since tag here.

There is also css.ui.XSidebarPanel; can you clarify why there's two?

+
+interface XPanel
+
+{
+    /** The panel identifier
+    */
+    string getId();
+
+    /** Get the panel title string
+    */
+    string getTitle();
+
+    /** Set the panel title string
+
+        @param newTitle
+            The new title string
+    */
+    void setTitle( [in] string newTitle );

Is setTitle necessary and/or useful? (At least, none of the code in this commit appears to use it.)

+
+    /** Is the panel expanded
+    */
+    boolean isExpanded();
+
+    /** Collapse the panel to only show its title bar
+    */
+    void collapse ();
+
+    /** Expand and display the panel
+
+        @param bCollapseOther
+            <ul>
+            <li>TRUE collapse all other panels of the deck</li>
+            <li>FALSE do not change other panels state</li>
+            </ul>
+    */
+    void expand ( [in] boolean bCollapseOther );
+
+    /** Get the ordering index of the panel in the deck
+    */
+    long getOrderIndex();
+
+    /** Set the ordering index of the panel in the deck
+    */
+    void setOrderIndex( [in] long newOrderIndex );

Is setOrderIndex necessary and/or useful? (At least, none of the code in this commit appears to use it.) Is setOrderIndex(0) the same as moveFirst()?

+
+    /** Move panel as first item of the deck
+    */
+    void moveFirst();
+
+    /** Move panel as last item of the deck
+    **/
+    void moveLast();
+
+    /** Move panel one step up in the deck
+    */
+    void moveUp();
+
+    /** Move the panel one step down in the deck
+    */
+    void moveDown();
+
+    /** Get the panel dialog element
+    */
+    com::sun::star::awt::XWindow getDialog();
+
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/offapi/com/sun/star/ui/XPanels.idl b/offapi/com/sun/star/ui/XPanels.idl
new file mode 100644
index 0000000..a2aa851
--- /dev/null
+++ b/offapi/com/sun/star/ui/XPanels.idl
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+#ifndef __com_sun_star_ui_XPanels_idl__
+#define __com_sun_star_ui_XPanels_idl__
+
+#include <com/sun/star/container/XIndexAccess.idl>
+#include <com/sun/star/container/XNameAccess.idl>
+
+ module com {  module sun {  module star {  module ui {
+
+/** provides access to Panels of a Deck.*/

Please add a @since tag here.

+
+interface XPanels
+
+{
+    interface com::sun::star::container::XIndexAccess;
+    interface com::sun::star::container::XNameAccess;

The downside of reusing such generic interfaces is that it doesn't make it clear that the returned ANYs are actually of type XPanel (I assume). So at least document that, or, if the full set of XIndex+XNameAccess is not really necessary and/or useful, consider replacing this with a (handful of) more specific method(s).

+
+    string getDeckId();
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/offapi/com/sun/star/ui/XSidebarProvider.idl 
b/offapi/com/sun/star/ui/XSidebarProvider.idl
new file mode 100644
index 0000000..370925e
--- /dev/null
+++ b/offapi/com/sun/star/ui/XSidebarProvider.idl
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+#ifndef __com_sun_star_ui_XSidebarProvider_idl__
+#define __com_sun_star_ui_XSidebarProvider_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/frame/XFrame.idl>
+#include <com/sun/star/awt/XWindow2.idl>
+
+#include <com/sun/star/ui/XDecks.idl>
+
+
+module com { module sun { module star { module ui {
+
+/** Interface of the sidebar

Please add a @since tag here.

+*/
+interface XSidebarProvider: com::sun::star::uno::XInterface
+{
+    /** Display the sidebar
+
+        @param bVisible
+            the requested visible state
+    */
+    void setVisible ( [in] boolean bVisible);
+
+    /** Is the sidebar visible
+    */
+    boolean isVisible();
+
+    /** Get the XFrame owner
+    */
+    com::sun::star::frame::XFrame getFrame();
+
+    /* Decks collection attached to the sidebar
+    */
+    com::sun::star::ui::XDecks getDecks();
+
+    /** Decks container visibility
+
+        @param bVisible
+            the requested visible state
+            <ul>
+            <li>FALSE collapses the deck container horizontally. Then Only shows the deck TabBar 
selector</li>
+            <li>TRUE  expands the deck container and show active Deck content</li>
+            </ul>
+    */
+    void showDecks([in] boolean bVisible);
+} ;
+
+} ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
[...]

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.