diff options
author | Jaskaran Singh <jvsg1303@gmail.com> | 2017-08-07 23:39:39 +0530 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-10 18:53:31 +0200 |
commit | 213a83ce46edf1b81f2285fd59f1d04935760caa (patch) | |
tree | 29355aa1f1242661d4055c8e561746473945931e | |
parent | 772686adb99137733db79b7d1ab6ebb21bf93b4a (diff) |
Add UI for the sc::dataprovider
Change-Id: I29acc8903d5694e46e7575133ee852bbaae6eeee
Reviewed-on: https://gerrit.libreoffice.org/40851
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu | 5 | ||||
-rw-r--r-- | sc/Library_sc.mk | 1 | ||||
-rw-r--r-- | sc/UIConfig_scalc.mk | 1 | ||||
-rw-r--r-- | sc/inc/datamapper.hxx | 7 | ||||
-rw-r--r-- | sc/inc/sc.hrc | 2 | ||||
-rw-r--r-- | sc/sdi/cellsh.sdi | 1 | ||||
-rw-r--r-- | sc/sdi/scalc.sdi | 17 | ||||
-rw-r--r-- | sc/source/ui/docshell/dataprovider.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/inc/dataproviderdlg.hxx | 69 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/dataproviderdlg.cxx | 171 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh2.cxx | 17 | ||||
-rw-r--r-- | sc/uiconfig/scalc/menubar/menubar.xml | 1 | ||||
-rw-r--r-- | sc/uiconfig/scalc/toolbar/dataprovider.xml | 14 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/dataprovider.ui | 428 |
14 files changed, 737 insertions, 1 deletions
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu index 1008af5d8688..f44986cd64e4 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu @@ -1585,6 +1585,11 @@ <value>1</value> </prop> </node> + <node oor:name=".uno:DataProvider" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Data Provider...</value> + </prop> + </node> <node oor:name=".uno:ManageXMLSource" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~XML Source...</value> diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk index e9220df0bd9c..4bc99c5b939d 100644 --- a/sc/Library_sc.mk +++ b/sc/Library_sc.mk @@ -464,6 +464,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\ sc/source/ui/miscdlgs/conflictsdlg \ sc/source/ui/miscdlgs/crnrdlg \ sc/source/ui/miscdlgs/datastreamdlg \ + sc/source/ui/miscdlgs/dataproviderdlg \ sc/source/ui/miscdlgs/highred \ sc/source/ui/miscdlgs/mergecellsdialog \ sc/source/ui/miscdlgs/optsolver \ diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk index 92d408709022..bd926ac93dd6 100644 --- a/sc/UIConfig_scalc.mk +++ b/sc/UIConfig_scalc.mk @@ -110,6 +110,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\ sc/uiconfig/scalc/ui/datafieldoptionsdialog \ sc/uiconfig/scalc/ui/dataform \ sc/uiconfig/scalc/ui/datastreams \ + sc/uiconfig/scalc/ui/dataprovider \ sc/uiconfig/scalc/ui/definedatabaserangedialog \ sc/uiconfig/scalc/ui/definename \ sc/uiconfig/scalc/ui/deletecells \ diff --git a/sc/inc/datamapper.hxx b/sc/inc/datamapper.hxx index 28476df8d8dd..c96c63f942c0 100644 --- a/sc/inc/datamapper.hxx +++ b/sc/inc/datamapper.hxx @@ -11,6 +11,9 @@ #define INCLUDED_SC_INC_EXTERNALDATAMAPPER_HXX #include <memory> +#include <vector> + +#include "scdllapi.h" #include <rtl/ustring.hxx> @@ -23,7 +26,7 @@ class ScDBDataManager; class DataProvider; class ScDBDataManager; -class ExternalDataSource +class SC_DLLPUBLIC ExternalDataSource { private: @@ -69,6 +72,8 @@ public: ExternalDataSource(const OUString& rURL, const OUString& rProvider); + ~ExternalDataSource(); + void setUpdateFrequency(double nUpdateFrequency); void setID(const OUString& rID); diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc index 7cd95f8d0507..eda54c590d7e 100644 --- a/sc/inc/sc.hrc +++ b/sc/inc/sc.hrc @@ -84,6 +84,8 @@ #define SID_SCFORMULAOPTIONS (SC_VIEW_START + 20) #define SID_SCDEFAULTSOPTIONS (SC_VIEW_START + 21) + +#define SID_DATA_PROVIDER (SC_VIEW_START + 32) #define SID_DATA_STREAMS_PLAY (SC_VIEW_START + 33) #define SID_DATA_STREAMS_STOP (SC_VIEW_START + 34) #define SID_DATA_STREAMS (SC_VIEW_START + 35) diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi index 9958dccc5489..8db89f78171a 100644 --- a/sc/sdi/cellsh.sdi +++ b/sc/sdi/cellsh.sdi @@ -48,6 +48,7 @@ interface CellSelection SID_DATA_STREAMS [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_DATA_STREAMS_PLAY [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_DATA_STREAMS_STOP [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] + SID_DATA_PROVIDER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_MANAGE_XML_SOURCE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_SORT [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] SID_DATA_FORM [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ] diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi index c149b8739937..b828206cf121 100644 --- a/sc/sdi/scalc.sdi +++ b/sc/sdi/scalc.sdi @@ -4467,6 +4467,23 @@ SfxVoidItem DataStreamsStop SID_DATA_STREAMS_STOP GroupId = SfxGroupId::Data; ] +SfxVoidItem DataProvider SID_DATA_PROVIDER +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = FALSE, + GroupId = SfxGroupId::Data; +] + SfxVoidItem ManageXMLSource SID_MANAGE_XML_SOURCE (SfxStringItem DbName SID_MANAGE_XML_SOURCE) [ diff --git a/sc/source/ui/docshell/dataprovider.cxx b/sc/source/ui/docshell/dataprovider.cxx index 2ce549156146..703bf6b363e6 100644 --- a/sc/source/ui/docshell/dataprovider.cxx +++ b/sc/source/ui/docshell/dataprovider.cxx @@ -65,6 +65,10 @@ ExternalDataSource::ExternalDataSource(const OUString& rURL, { } +ExternalDataSource::~ExternalDataSource() +{ +} + void ExternalDataSource::setID(const OUString& rID) { maID = rID; diff --git a/sc/source/ui/inc/dataproviderdlg.hxx b/sc/source/ui/inc/dataproviderdlg.hxx new file mode 100644 index 000000000000..05e607157931 --- /dev/null +++ b/sc/source/ui/inc/dataproviderdlg.hxx @@ -0,0 +1,69 @@ +/* -*- 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 INCLUDED_SC_SOURCE_UI_INC_DATAPROVIDERDLG_HXX +#define INCLUDED_SC_SOURCE_UI_INC_DATAPROVIDERDLG_HXX + +#include <sal/config.h> + +#include <rtl/ref.hxx> +#include <vcl/dialog.hxx> +#include <vcl/layout.hxx> + +#include "address.hxx" +#include "datamapper.hxx" +#include "dataprovider.hxx" + +class ScDocShell; +class SvtURLBox; +class ScRange; +class ComboBox; + +namespace sc { + +class DataProviderDlg : public ModalDialog +{ + ScDocShell *mpDocShell; + + VclPtr<SvtURLBox> m_pCbUrl; + VclPtr<PushButton> m_pBtnBrowse; + VclPtr<RadioButton> m_pRBAddressValue; + VclPtr<CheckBox> m_pCBRefreshOnEmpty; + VclPtr<RadioButton> m_pRBMaxLimit; + VclPtr<RadioButton> m_pRBUnlimited; + VclPtr<Edit> m_pEdRange; + VclPtr<Edit> m_pEdLimit; + VclPtr<OKButton> m_pBtnOk; + VclPtr<VclFrame> m_pVclFrameLimit; + + DECL_LINK(UpdateClickHdl, Button*, void); + DECL_LINK(UpdateHdl, Edit&, void); + DECL_LINK(UpdateComboBoxHdl, ComboBox&, void); + DECL_LINK(BrowseHdl, Button*, void); + + void UpdateEnable(); + ScRange GetStartRange(); + + std::shared_ptr<ExternalDataSource> mpDataSource; + +public: + DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent); + virtual ~DataProviderDlg() override; + virtual void dispose() override; + + void Init(); + + void StartImport(); +}; + +} + +#endif // INCLUDED_SC_SOURCE_UI_INC_DATAPROVIDERDLG_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx new file mode 100644 index 000000000000..ae0427217ed9 --- /dev/null +++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx @@ -0,0 +1,171 @@ +/* -*- 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/. + */ + +#include <dataproviderdlg.hxx> + +#include <sfx2/filedlghelper.hxx> +#include <svtools/inettbc.hxx> +#include <vcl/layout.hxx> +#include <address.hxx> +#include <docsh.hxx> +#include <dbdata.hxx> +#include "datamapper.hxx" + +namespace sc { + +DataProviderDlg::DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent) + : ModalDialog(pParent, "DataProviderDialog", "modules/scalc/ui/dataprovider.ui") + , mpDocShell(pDocShell) +{ + get(m_pCbUrl, "url"); + get(m_pBtnBrowse, "browse"); + get(m_pRBAddressValue, "addressvalue"); + get(m_pCBRefreshOnEmpty, "refresh_ui"); + //get(m_pRBRangeDown, "rangedown"); + //get(m_pRBNoMove, "nomove"); + get(m_pRBMaxLimit, "maxlimit"); + get(m_pRBUnlimited, "unlimited"); + get(m_pEdRange, "range"); + get(m_pEdLimit, "limit"); + get(m_pBtnOk, "ok"); + get(m_pVclFrameLimit, "framelimit"); + //get(m_pVclFrameMove, "framemove"); + + m_pCbUrl->SetSelectHdl( LINK( this, DataProviderDlg, UpdateComboBoxHdl ) ); + m_pRBAddressValue->SetClickHdl( LINK( this, DataProviderDlg, UpdateClickHdl ) ); + m_pRBAddressValue->Enable(false); + //m_pRBScriptData->Enable(false); + //m_pRBDirectData->Hide(); + //m_pRBScriptData->Hide(); + //m_pRBNoMove->Hide(); + //m_pRBValuesInLine->SetClickHdl( LINK( this, DataProviderDlg, UpdateClickHdl ) ); + m_pEdRange->SetModifyHdl( LINK( this, DataProviderDlg, UpdateHdl ) ); + m_pBtnBrowse->SetClickHdl( LINK( this, DataProviderDlg, BrowseHdl ) ); + UpdateEnable(); +} + +DataProviderDlg::~DataProviderDlg() +{ + disposeOnce(); +} + +void DataProviderDlg::dispose() +{ + m_pCbUrl.clear(); + m_pBtnBrowse.clear(); + //m_pRBDirectData.clear(); + //m_pRBScriptData.clear(); + //m_pRBValuesInLine.clear(); + m_pRBAddressValue.clear(); + m_pCBRefreshOnEmpty.clear(); + //m_pRBDataDown.clear(); + //m_pRBRangeDown.clear(); + //m_pRBNoMove.clear(); + m_pRBMaxLimit.clear(); + m_pRBUnlimited.clear(); + m_pEdRange.clear(); + m_pEdLimit.clear(); + m_pBtnOk.clear(); + m_pVclFrameLimit.clear(); + //m_pVclFrameMove.clear(); + ModalDialog::dispose(); +} + +IMPL_LINK_NOARG(DataProviderDlg, BrowseHdl, Button*, void) +{ + sfx2::FileDialogHelper aFileDialog(0); + if ( aFileDialog.Execute() != ERRCODE_NONE ) + return; + + m_pCbUrl->SetText( aFileDialog.GetPath() ); + UpdateEnable(); +} + +IMPL_LINK_NOARG(DataProviderDlg, UpdateClickHdl, Button*, void) +{ + UpdateEnable(); +} +IMPL_LINK_NOARG(DataProviderDlg, UpdateComboBoxHdl, ComboBox&, void) +{ + UpdateEnable(); +} +IMPL_LINK_NOARG(DataProviderDlg, UpdateHdl, Edit&, void) +{ + UpdateEnable(); +} + +void DataProviderDlg::UpdateEnable() +{ + bool bOk = !m_pCbUrl->GetURL().isEmpty(); + if (m_pRBAddressValue->IsChecked()) + { + m_pVclFrameLimit->Disable(); + //m_pVclFrameMove->Disable(); + m_pEdRange->Disable(); + } + else + { + m_pVclFrameLimit->Enable(); + //m_pVclFrameMove->Enable(); + m_pEdRange->Enable(); + if (bOk) + { + // Check the given range to make sure it's valid. + ScRange aTest = GetStartRange(); + if (!aTest.IsValid()) + bOk = false; + } + } + m_pBtnOk->Enable(bOk); + setOptimalLayoutSize(); +} + +ScRange DataProviderDlg::GetStartRange() +{ + OUString aStr = m_pEdRange->GetText(); + ScDocument& rDoc = mpDocShell->GetDocument(); + ScRange aRange; + ScRefFlags nRes = aRange.Parse(aStr, &rDoc, rDoc.GetAddressConvention()); + if ( ((nRes & ScRefFlags::VALID) == ScRefFlags::ZERO) || !aRange.IsValid()) + { + // Invalid range. + aRange.SetInvalid(); + return aRange; + } + + // Make sure it's only one row tall. + if (aRange.aStart.Row() != aRange.aEnd.Row()) + aRange.SetInvalid(); + + return aRange; +} + +void DataProviderDlg::Init() +{ + // TODO : Get the user specified Url and Range + (void)this; +} + +void DataProviderDlg::StartImport() +{ + ScRange aRange = GetStartRange(); + if (!aRange.IsValid()) + // Don't start the stream without a valid range. + return; + + OUString aURL; + // TODO : replace those strings with something that is obtained from user + ExternalDataSource aDataSource(aURL, "org.libreoffice.calc.csv"); + //aDataSource.setDBData(pDBData); + mpDocShell->GetDocument().GetExternalDataMapper().insertDataSource(aDataSource); +} + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index 6b3fd6245ba0..7866f7693e9f 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -62,6 +62,7 @@ #include "asciiopt.hxx" #include "datastream.hxx" #include "datastreamdlg.hxx" +#include "dataproviderdlg.hxx" #include "queryentry.hxx" #include "markdata.hxx" #include <documentlinkmgr.hxx> @@ -778,6 +779,20 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) pStrm->StopImport(); } break; + case SID_DATA_PROVIDER: + { + ScopedVclPtrInstance< sc::DataProviderDlg > aDialog( GetViewData()->GetDocShell(), pTabViewShell->GetDialogParent() ); + //ScDocument *pDoc = GetViewData()->GetDocument(); + //sc::DocumentLinkManager& rMgr = pDoc->GetDocLinkManager(); + //sc::DataStream* pStrm = rMgr.getDataStream(); + //if (pStrm) + aDialog->Init(/**pStrm*/); + aDialog->Execute(); + + //if (aDialog->Execute() == RET_OK) + //aDialog->StartStream(); + } + break; case SID_MANAGE_XML_SOURCE: ExecuteXMLSourceDialog(); break; @@ -1184,6 +1199,8 @@ void ScCellShell::GetDBState( SfxItemSet& rSet ) } } break; + case SID_DATA_PROVIDER: + break; case SID_DATA_STREAMS: case SID_DATA_STREAMS_PLAY: case SID_DATA_STREAMS_STOP: diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml index 5ec8e3fc4cbe..e40766848f09 100644 --- a/sc/uiconfig/scalc/menubar/menubar.xml +++ b/sc/uiconfig/scalc/menubar/menubar.xml @@ -630,6 +630,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:DataStreams"/> <menu:menuitem menu:id=".uno:ManageXMLSource"/> + <menu:menuitem menu:id=".uno:DataProvider"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:TableOperationDialog"/> <menu:menuitem menu:id=".uno:TextToColumns"/> diff --git a/sc/uiconfig/scalc/toolbar/dataprovider.xml b/sc/uiconfig/scalc/toolbar/dataprovider.xml new file mode 100644 index 000000000000..3bf23017beb4 --- /dev/null +++ b/sc/uiconfig/scalc/toolbar/dataprovider.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd"> +<!-- + * 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/. +--> +<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> + <toolbar:toolbaritem xlink:href=".uno:DataProviderPlay"/> + <toolbar:toolbarseparator/> + <toolbar:toolbaritem xlink:href=".uno:DataProviderStop"/> +</toolbar:toolbar> diff --git a/sc/uiconfig/scalc/ui/dataprovider.ui b/sc/uiconfig/scalc/ui/dataprovider.ui new file mode 100644 index 000000000000..d5872e514160 --- /dev/null +++ b/sc/uiconfig/scalc/ui/dataprovider.ui @@ -0,0 +1,428 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.18.3 --> +<interface domain="sc"> + <requires lib="gtk+" version="3.0"/> + <requires lib="LibreOffice" version="1.0"/> + <object class="GtkDialog" id="DataProviderDialog"> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="title" translatable="yes" context="datastreams|DataStreamDialog">Live Data Streams</property> + <property name="type_hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="ok"> + <property name="label">gtk-ok</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel"> + <property name="label">gtk-cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="help"> + <property name="label">gtk-help</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + <property name="secondary">True</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkFrame" id="frame"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkBox" id="box4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkBox" id="box12"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="datastreams|label6">URL:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="svtlo-SvtURLBox" id="url"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="has_tooltip">True</property> + <property name="tooltip_text" translatable="yes" context="datastreams|url|tooltip_text">Enter the URL of the source document in the local file system or Internet here.</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <property name="max_width_chars">48</property> + <child internal-child="entry"> + <object class="GtkEntry" id="URLBox-entry"> + <property name="can_focus">False</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="browse"> + <property name="label" translatable="yes" context="datastreams|browse">_Browse...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box13"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkFrame" id="frame4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkGrid" id="grid2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> + <child> + <object class="GtkRadioButton" id="valuesinline"> + <property name="label" translatable="yes" context="datastreams|valuesinline">value1,value2,...,valueN, and fill into range:</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">addressvalue</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="addressvalue"> + <property name="label" translatable="yes" context="datastreams|addressvalue">address,value</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">valuesinline</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="range"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="invisible_char">●</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="datastreams|label4">Interpret stream data as</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="padding">6</property> + <property name="position">0</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <object class="GtkCheckButton" id="refresh_ui"> + <property name="label" translatable="yes" context="datastreams|refresh_ui">Empty lines trigger UI refresh</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="datastreams|label">Source Stream</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="padding">6</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkFrame" id="framelimit"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkGrid" id="grid3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="vexpand">True</property> + <property name="row_spacing">6</property> + <property name="column_spacing">6</property> + <child> + <object class="GtkRadioButton" id="maxlimit"> + <property name="label" translatable="yes" context="datastreams|maxlimit">Limit to:</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">unlimited</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="limit"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="invisible_char">●</property> + <property name="text">1000</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="unlimited"> + <property name="label" translatable="yes" context="datastreams|unlimited">_Unlimited</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="valign">start</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">maxlimit</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="datastreams|label3">Maximal Amount of Rows</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">ok</action-widget> + <action-widget response="0">cancel</action-widget> + <action-widget response="0">help</action-widget> + </action-widgets> + </object> + <object class="GtkAdjustment" id="adjustment1"> + <property name="lower">1</property> + <property name="upper">99999</property> + <property name="value">1</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> +</interface> |