lok jsdialogs: Introduce dumping of widgets hierarchy to vcl::Window.
Change-Id: Ie3267e1f888df371d281e81ead437a150aa8dc1c Reviewed-on: https://gerrit.libreoffice.org/79796 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
This commit is contained in:
committed by
Szymon Kłos
parent
9590e8d0a2
commit
75b8db7fa7
@@ -395,7 +395,7 @@ namespace oglcanvas
|
||||
|
||||
setupGraphicsState( rAct, viewState, renderState );
|
||||
rAct.maFunction = std::bind(&lcl_drawLine,
|
||||
_1, _2, _3, _4, _5,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
|
||||
aStartPoint, aEndPoint);
|
||||
}
|
||||
}
|
||||
@@ -415,7 +415,7 @@ namespace oglcanvas
|
||||
|
||||
// TODO(F2): subdivide&render whole curve
|
||||
rAct.maFunction = std::bind(&lcl_drawLine,
|
||||
_1,_2,_3,_4,_5,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
|
||||
geometry::RealPoint2D(
|
||||
aBezierSegment.Px,
|
||||
aBezierSegment.Py),
|
||||
@@ -568,10 +568,10 @@ namespace oglcanvas
|
||||
pGradient->getValues() );
|
||||
|
||||
rAct.maFunction = std::bind(&lcl_fillGradientPolyPolygon,
|
||||
_1,_2,_3,_4,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4,
|
||||
rValues,
|
||||
textures[0],
|
||||
_6);
|
||||
std::placeholders::_6);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -611,14 +611,14 @@ namespace oglcanvas
|
||||
canvas::tools::getStdColorSpace()));
|
||||
|
||||
rAct.maFunction = std::bind(&lcl_fillTexturedPolyPolygon,
|
||||
_1,_2,_3,_4,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4,
|
||||
textures[0],
|
||||
aSize,
|
||||
aARGBBytes,
|
||||
rtl_crc32(0,
|
||||
aARGBBytes.getConstArray(),
|
||||
aARGBBytes.getLength()),
|
||||
_6);
|
||||
std::placeholders::_6);
|
||||
}
|
||||
// TODO(F1): handle non-integer case
|
||||
}
|
||||
@@ -791,7 +791,7 @@ namespace oglcanvas
|
||||
|
||||
setupGraphicsState( rAct, viewState, renderState );
|
||||
rAct.maFunction = std::bind(&lcl_drawOwnBitmap,
|
||||
_1,_2,_3,_4,_5,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
|
||||
*pOwnBitmap);
|
||||
}
|
||||
else
|
||||
@@ -820,7 +820,7 @@ namespace oglcanvas
|
||||
|
||||
setupGraphicsState( rAct, viewState, renderState );
|
||||
rAct.maFunction = std::bind(&lcl_drawGenericBitmap,
|
||||
_1,_2,_3,_4,_5,
|
||||
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
|
||||
aSize, aARGBBytes,
|
||||
rtl_crc32(0,
|
||||
aARGBBytes.getConstArray(),
|
||||
|
@@ -34,6 +34,8 @@
|
||||
#include <com/sun/star/uno/Reference.hxx>
|
||||
#include <memory>
|
||||
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
|
||||
class VirtualDevice;
|
||||
struct ImplSVEvent;
|
||||
struct ImplWinData;
|
||||
@@ -1213,6 +1215,9 @@ public:
|
||||
/// Find an existing Window based on the LOKWindowId.
|
||||
static VclPtr<vcl::Window> FindLOKWindow(vcl::LOKWindowId nWindowId);
|
||||
|
||||
/// Dumps itself and potentially its children to a property tree, to be written easily to JSON.
|
||||
virtual boost::property_tree::ptree DumpAsPropertyTree();
|
||||
|
||||
/// Dialog / window tunneling related methods.
|
||||
Size PaintActiveFloatingWindow(VirtualDevice& rDevice) const;
|
||||
|
||||
|
@@ -3251,6 +3251,120 @@ VclPtr<vcl::Window> Window::GetParentWithLOKNotifier()
|
||||
return pWindow;
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
const char* windowTypeName(WindowType nWindowType)
|
||||
{
|
||||
switch (nWindowType)
|
||||
{
|
||||
case WindowType::NONE: return "none";
|
||||
case WindowType::MESSBOX: return "messagebox";
|
||||
case WindowType::INFOBOX: return "infobox";
|
||||
case WindowType::WARNINGBOX: return "warningbox";
|
||||
case WindowType::ERRORBOX: return "errorbox";
|
||||
case WindowType::QUERYBOX: return "querybox";
|
||||
case WindowType::WINDOW: return "window";
|
||||
case WindowType::WORKWINDOW: return "workwindow";
|
||||
case WindowType::CONTAINER: return "container";
|
||||
case WindowType::FLOATINGWINDOW: return "floatingwindow";
|
||||
case WindowType::DIALOG: return "dialog";
|
||||
case WindowType::MODELESSDIALOG: return "modelessdialog";
|
||||
case WindowType::MODALDIALOG: return "modaldialog";
|
||||
case WindowType::CONTROL: return "control";
|
||||
case WindowType::PUSHBUTTON: return "pushbutton";
|
||||
case WindowType::OKBUTTON: return "okbutton";
|
||||
case WindowType::CANCELBUTTON: return "cancelbutton";
|
||||
case WindowType::HELPBUTTON: return "helpbutton";
|
||||
case WindowType::IMAGEBUTTON: return "imagebutton";
|
||||
case WindowType::MENUBUTTON: return "menubutton";
|
||||
case WindowType::MOREBUTTON: return "morebutton";
|
||||
case WindowType::SPINBUTTON: return "spinbutton";
|
||||
case WindowType::RADIOBUTTON: return "radiobutton";
|
||||
case WindowType::CHECKBOX: return "checkbox";
|
||||
case WindowType::TRISTATEBOX: return "tristatebox";
|
||||
case WindowType::EDIT: return "edit";
|
||||
case WindowType::MULTILINEEDIT: return "multilineedit";
|
||||
case WindowType::COMBOBOX: return "combobox";
|
||||
case WindowType::LISTBOX: return "listbox";
|
||||
case WindowType::MULTILISTBOX: return "multilistbox";
|
||||
case WindowType::FIXEDTEXT: return "fixedtext";
|
||||
case WindowType::FIXEDLINE: return "fixedline";
|
||||
case WindowType::FIXEDBITMAP: return "fixedbitmap";
|
||||
case WindowType::FIXEDIMAGE: return "fixedimage";
|
||||
case WindowType::GROUPBOX: return "groupbox";
|
||||
case WindowType::SCROLLBAR: return "scrollbar";
|
||||
case WindowType::SCROLLBARBOX: return "scrollbarbox";
|
||||
case WindowType::SPLITTER: return "splitter";
|
||||
case WindowType::SPLITWINDOW: return "splitwindow";
|
||||
case WindowType::SPINFIELD: return "spinfield";
|
||||
case WindowType::PATTERNFIELD: return "patternfield";
|
||||
case WindowType::NUMERICFIELD: return "numericfield";
|
||||
case WindowType::METRICFIELD: return "metricfield";
|
||||
case WindowType::CURRENCYFIELD: return "currencyfield";
|
||||
case WindowType::DATEFIELD: return "datefield";
|
||||
case WindowType::TIMEFIELD: return "timefield";
|
||||
case WindowType::PATTERNBOX: return "patternbox";
|
||||
case WindowType::NUMERICBOX: return "numericbox";
|
||||
case WindowType::METRICBOX: return "metricbox";
|
||||
case WindowType::CURRENCYBOX: return "currencybox";
|
||||
case WindowType::DATEBOX: return "datebox";
|
||||
case WindowType::TIMEBOX: return "timebox";
|
||||
case WindowType::LONGCURRENCYFIELD: return "longcurrencyfield";
|
||||
case WindowType::LONGCURRENCYBOX: return "longcurrencybox";
|
||||
case WindowType::SCROLLWINDOW: return "scrollwindow";
|
||||
case WindowType::TOOLBOX: return "toolbox";
|
||||
case WindowType::DOCKINGWINDOW: return "dockingwindow";
|
||||
case WindowType::STATUSBAR: return "statusbar";
|
||||
case WindowType::TABPAGE: return "tabpage";
|
||||
case WindowType::TABCONTROL: return "tabcontrol";
|
||||
case WindowType::TABDIALOG: return "tabdialog";
|
||||
case WindowType::BORDERWINDOW: return "borderwindow";
|
||||
case WindowType::BUTTONDIALOG: return "buttondialog";
|
||||
case WindowType::SYSTEMCHILDWINDOW: return "systemchildwindow";
|
||||
case WindowType::SLIDER: return "slider";
|
||||
case WindowType::MENUBARWINDOW: return "menubarwindow";
|
||||
case WindowType::TREELISTBOX: return "treelistbox";
|
||||
case WindowType::HELPTEXTWINDOW: return "helptextwindow";
|
||||
case WindowType::INTROWINDOW: return "introwindow";
|
||||
case WindowType::LISTBOXWINDOW: return "listboxwindow";
|
||||
case WindowType::DOCKINGAREA: return "dockingarea";
|
||||
case WindowType::RULER: return "ruler";
|
||||
case WindowType::CALCINPUTLINE: return "calcinputline";
|
||||
case WindowType::HEADERBAR: return "headerbar";
|
||||
case WindowType::VERTICALTABCONTROL: return "verticaltabcontrol";
|
||||
|
||||
// nothing to do here, but for completeness
|
||||
case WindowType::TOOLKIT_FRAMEWINDOW: return "toolkit_framewindow";
|
||||
case WindowType::TOOLKIT_SYSTEMCHILDWINDOW: return "toolkit_systemchildwindow";
|
||||
}
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
boost::property_tree::ptree Window::DumpAsPropertyTree()
|
||||
{
|
||||
boost::property_tree::ptree aTree;
|
||||
aTree.put("id", get_id()); // TODO could be missing - sort out
|
||||
aTree.put("type", windowTypeName(GetType()));
|
||||
aTree.put("text", GetText());
|
||||
|
||||
boost::property_tree::ptree aChildren;
|
||||
if (vcl::Window* pChild = mpWindowImpl->mpFirstChild)
|
||||
{
|
||||
while (pChild)
|
||||
{
|
||||
aChildren.push_back(std::make_pair("", pChild->DumpAsPropertyTree()));
|
||||
pChild = pChild->mpWindowImpl->mpNext;
|
||||
}
|
||||
aTree.add_child("children", aChildren);
|
||||
}
|
||||
|
||||
return aTree;
|
||||
}
|
||||
|
||||
void Window::ImplCallDeactivateListeners( vcl::Window *pNew )
|
||||
{
|
||||
// no deactivation if the newly activated window is my child
|
||||
|
Reference in New Issue
Block a user