[Libreoffice-commits] core.git: extensions/inc extensions/source extensions/uiconfig
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Tue Jul 27 10:54:53 UTC 2021
extensions/inc/helpids.h | 1
extensions/source/bibliography/bibconfig.cxx | 1
extensions/source/bibliography/bibconfig.hxx | 3
extensions/source/bibliography/general.cxx | 108 ++++++++++++++++---
extensions/source/bibliography/general.hxx | 9 +
extensions/uiconfig/sbibliography/ui/generalpage.ui | 110 +++++++++++++++++++-
6 files changed, 211 insertions(+), 21 deletions(-)
New commits:
commit 5fd2f212a1db9e061fb3a886810b427251e8a6bf
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Tue Jul 27 10:46:07 2021 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Jul 27 12:54:18 2021 +0200
sw bibliography, local copy: handle the bibliography database window
- update generalpage.ui to have the same widgets for both the URL and
the local URL
- extend BibGeneralPage to map LocalURL to m_xLocalURLED
- get the usual browse / page number handling buttons working
- introduce a separate GtkAdjustment for the additional spinbutton,
which seems to be necessary for gtk3, but not for gen (otherwise
increasing the value sets a new value for both spinbuttons)
Change-Id: I9ea616102cd6a8a060217a4e404a8eb93a0c2a04
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119545
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
Tested-by: Jenkins
diff --git a/extensions/inc/helpids.h b/extensions/inc/helpids.h
index 1f55a0fd1995..e4a609aafc82 100644
--- a/extensions/inc/helpids.h
+++ b/extensions/inc/helpids.h
@@ -58,6 +58,7 @@
#define HID_BIB_CUSTOM3_POS "EXTENSIONS_HID_BIB_CUSTOM3_POS"
#define HID_BIB_CUSTOM4_POS "EXTENSIONS_HID_BIB_CUSTOM4_POS"
#define HID_BIB_CUSTOM5_POS "EXTENSIONS_HID_BIB_CUSTOM5_POS"
+#define HID_BIB_LOCAL_URL_POS "EXTENSIONS_HID_BIB_LOCAL_URL_POS"
#define HID_BIB_DB_GRIDCTRL "EXTENSIONS_HID_BIB_DB_GRIDCTRL"
#define HID_GROUPWIZARD_PREVIOUS "EXTENSIONS_HID_GROUPWIZARD_PREVIOUS"
diff --git a/extensions/source/bibliography/bibconfig.cxx b/extensions/source/bibliography/bibconfig.cxx
index fcfaf5608293..1b9ce9e53d02 100644
--- a/extensions/source/bibliography/bibconfig.cxx
+++ b/extensions/source/bibliography/bibconfig.cxx
@@ -90,6 +90,7 @@ BibConfig::BibConfig()
aColumnDefaults[28] = "Custom3";
aColumnDefaults[29] = "Custom4";
aColumnDefaults[30] = "Custom5";
+ aColumnDefaults[31] = "LocalURL";
const Sequence< OUString > aPropertyNames = GetPropertyNames();
diff --git a/extensions/source/bibliography/bibconfig.hxx b/extensions/source/bibliography/bibconfig.hxx
index 6a62ac7c5f6d..0d81491ff0ad 100644
--- a/extensions/source/bibliography/bibconfig.hxx
+++ b/extensions/source/bibliography/bibconfig.hxx
@@ -28,7 +28,7 @@ struct Mapping;
typedef std::vector<std::unique_ptr<Mapping> > MappingArray;
-#define COLUMN_COUNT 31
+#define COLUMN_COUNT 32
#define IDENTIFIER_POS 0
#define AUTHORITYTYPE_POS 1
#define AUTHOR_POS 2
@@ -60,6 +60,7 @@ typedef std::vector<std::unique_ptr<Mapping> > MappingArray;
#define CUSTOM3_POS 28
#define CUSTOM4_POS 29
#define CUSTOM5_POS 30
+#define LOCAL_URL_POS 31
struct StringPair
{
diff --git a/extensions/source/bibliography/general.cxx b/extensions/source/bibliography/general.cxx
index 329ed9391bf9..9e1145eac490 100644
--- a/extensions/source/bibliography/general.cxx
+++ b/extensions/source/bibliography/general.cxx
@@ -197,6 +197,11 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
, xCustom4ED(m_xBuilder->weld_entry("custom4control"))
, xCustom5FT(m_xBuilder->weld_label("custom5"))
, xCustom5ED(m_xBuilder->weld_entry("custom5control"))
+ , m_xLocalURLFT(m_xBuilder->weld_label("localurl"))
+ , m_xLocalURLED(m_xBuilder->weld_entry("localurlcontrol"))
+ , m_xLocalBrowseButton(m_xBuilder->weld_button("localbrowse"))
+ , m_xLocalPageCB(m_xBuilder->weld_check_button("localpagecb"))
+ , m_xLocalPageSB(m_xBuilder->weld_spin_button("localpagesb"))
, pDatMan(pMan)
{
SetStyle(GetStyle() | WB_DIALOGCONTROL);
@@ -315,6 +320,7 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
sTableErrorString, HID_BIB_URL_POS);
m_xBrowseButton->connect_clicked(LINK(this, BibGeneralPage, BrowseHdl));
+ m_xPageCB->connect_toggled(LINK(this, BibGeneralPage, PageNumHdl));
AddControlWithError(lcl_GetColumnName(pMapping, CUSTOM1_POS),
xCustom1FT->get_label(), *xCustom1ED,
@@ -336,7 +342,14 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
xCustom5FT->get_label(), *xCustom5ED,
sTableErrorString, HID_BIB_CUSTOM5_POS);
- xCustom5ED->connect_key_press(LINK(this, BibGeneralPage, LastElementKeyInputHdl));
+ AddControlWithError(lcl_GetColumnName(pMapping, LOCAL_URL_POS),
+ m_xLocalURLFT->get_label(), *m_xLocalURLED,
+ sTableErrorString, HID_BIB_LOCAL_URL_POS);
+
+ m_xLocalBrowseButton->connect_clicked(LINK(this, BibGeneralPage, BrowseHdl));
+ m_xLocalPageCB->connect_toggled(LINK(this, BibGeneralPage, PageNumHdl));
+
+ m_xLocalURLED->connect_key_press(LINK(this, BibGeneralPage, LastElementKeyInputHdl));
if(!sTableErrorString.isEmpty())
sTableErrorString = BibResId(ST_ERROR_PREFIX) + sTableErrorString;
@@ -347,11 +360,11 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
set_height_request(aSize.Height());
}
-IMPL_LINK_NOARG(BibGeneralPage, BrowseHdl, weld::Button&, void)
+IMPL_LINK(BibGeneralPage, BrowseHdl, weld::Button&, rButton, void)
{
sfx2::FileDialogHelper aFileDlg(ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
FileDialogFlags::NONE, GetFrameWeld());
- OUString aPath = xURLED->get_text();
+ OUString aPath = (&rButton == m_xBrowseButton.get()) ? xURLED->get_text() : m_xLocalURLED->get_text();
if (!aPath.isEmpty())
{
aFileDlg.SetDisplayDirectory(aPath);
@@ -362,9 +375,24 @@ IMPL_LINK_NOARG(BibGeneralPage, BrowseHdl, weld::Button&, void)
return;
}
- xURLED->set_text(aFileDlg.GetPath());
+ weld::Entry& rEntry = (&rButton == m_xBrowseButton.get()) ? *xURLED : *m_xLocalURLED;
+ rEntry.set_text(aFileDlg.GetPath());
};
+IMPL_LINK(BibGeneralPage, PageNumHdl, weld::Toggleable&, rPageCB, void)
+{
+ weld::SpinButton& rPageSB = (&rPageCB == m_xPageCB.get()) ? *m_xPageSB : *m_xLocalPageSB;
+ if (rPageCB.get_active())
+ {
+ rPageSB.set_sensitive(true);
+ rPageSB.set_value(1);
+ }
+ else
+ {
+ rPageSB.set_sensitive(false);
+ }
+}
+
IMPL_LINK(BibGeneralPage, FirstElementKeyInputHdl, const KeyEvent&, rKeyEvent, bool)
{
sal_uInt16 nCode = rKeyEvent.GetKeyCode().GetCode();
@@ -377,9 +405,9 @@ IMPL_LINK(BibGeneralPage, FirstElementKeyInputHdl, const KeyEvent&, rKeyEvent, b
uno::Reference<sdbc::XRowSet> xRowSet(pDatMan->getForm(), UNO_QUERY);
if (xRowSet.is() && !xRowSet->isFirst())
xRowSet->previous();
- xCustom5ED->grab_focus();
- xCustom5ED->select_region(0, -1);
- GainFocusHdl(*xCustom5ED);
+ m_xLocalURLED->grab_focus();
+ m_xLocalURLED->select_region(0, -1);
+ GainFocusHdl(*m_xLocalURLED);
return true;
}
return false;
@@ -515,11 +543,7 @@ namespace
{
OUString sNewName;
rValue >>= sNewName;
- if (&m_rEntry != &m_rPage.GetURLED())
- {
- m_rEntry.set_text(sNewName);
- }
- else
+ if (&m_rEntry == &m_rPage.GetURLED())
{
OUString aUrl;
int nPageNumber;
@@ -538,32 +562,65 @@ namespace
m_rPage.GetPageSB().set_value(0);
}
}
+ else if (&m_rEntry == &m_rPage.GetLocalURLED())
+ {
+ OUString aUrl;
+ int nPageNumber;
+ if (SplitUrlAndPage(sNewName, aUrl, nPageNumber))
+ {
+ m_rEntry.set_text(aUrl);
+ m_rPage.GetLocalPageCB().set_active(true);
+ m_rPage.GetLocalPageSB().set_sensitive(true);
+ m_rPage.GetLocalPageSB().set_value(nPageNumber);
+ }
+ else
+ {
+ m_rEntry.set_text(sNewName);
+ m_rPage.GetLocalPageCB().set_active(false);
+ m_rPage.GetLocalPageSB().set_sensitive(false);
+ m_rPage.GetLocalPageSB().set_value(0);
+ }
+ }
+ else
+ {
+ m_rEntry.set_text(sNewName);
+ }
m_rEntry.save_value();
if (&m_rEntry == &m_rPage.GetURLED())
{
m_rPage.GetPageSB().save_value();
}
+ else if (&m_rEntry == &m_rPage.GetLocalURLED())
+ {
+ m_rPage.GetLocalPageSB().save_value();
+ }
}
/// Updates m_xPropSet based on the UI widget(s).
virtual void WriteBack() override
{
- if (!m_rEntry.get_value_changed_from_saved()
- && !(&m_rEntry == &m_rPage.GetURLED()
- && m_rPage.GetPageSB().get_value_changed_from_saved()))
+ bool bURL = &m_rEntry == &m_rPage.GetURLED()
+ && m_rPage.GetPageSB().get_value_changed_from_saved();
+ bool bLocalURL = &m_rEntry == &m_rPage.GetLocalURLED()
+ && m_rPage.GetLocalPageSB().get_value_changed_from_saved();
+ if (!m_rEntry.get_value_changed_from_saved() && !(bURL || bLocalURL))
return;
m_bSelfChanging = true;
OUString aText;
- if (&m_rEntry != &m_rPage.GetURLED())
+ if (&m_rEntry == &m_rPage.GetURLED())
{
- aText = m_rEntry.get_text();
+ aText = MergeUrlAndPage(m_rEntry.get_text(), m_rPage.GetPageSB());
+ }
+ else if (&m_rEntry == &m_rPage.GetLocalURLED())
+ {
+ aText = MergeUrlAndPage(m_rEntry.get_text(), m_rPage.GetLocalPageSB());
}
else
{
- aText = MergeUrlAndPage(m_rEntry.get_text(), m_rPage.GetPageSB());
+ aText = m_rEntry.get_text();
}
m_xPropSet->setPropertyValue("Text", makeAny(aText));
@@ -577,6 +634,10 @@ namespace
{
m_rPage.GetPageSB().save_value();
}
+ else if (&m_rEntry == &m_rPage.GetLocalURLED())
+ {
+ m_rPage.GetLocalPageSB().save_value();
+ }
}
};
@@ -732,6 +793,11 @@ void BibGeneralPage::dispose()
xCustom4ED.reset();
xCustom5FT.reset();
xCustom5ED.reset();
+ m_xLocalURLFT.reset();
+ m_xLocalURLED.reset();
+ m_xLocalBrowseButton.reset();
+ m_xLocalPageCB.reset();
+ m_xLocalPageSB.reset();
InterimItemWindow::dispose();
}
@@ -741,6 +807,12 @@ weld::CheckButton& BibGeneralPage::GetPageCB() { return *m_xPageCB; }
weld::SpinButton& BibGeneralPage::GetPageSB() { return *m_xPageSB; }
+weld::Entry& BibGeneralPage::GetLocalURLED() { return *m_xLocalURLED; }
+
+weld::CheckButton& BibGeneralPage::GetLocalPageCB() { return *m_xLocalPageCB; }
+
+weld::SpinButton& BibGeneralPage::GetLocalPageSB() { return *m_xLocalPageSB; }
+
bool BibGeneralPage::AddXControl(const OUString& rName, weld::Entry& rEntry)
{
uno::Reference< awt::XControlModel > xCtrModel;
diff --git a/extensions/source/bibliography/general.hxx b/extensions/source/bibliography/general.hxx
index 6b3daeacae03..958d0efd45c9 100644
--- a/extensions/source/bibliography/general.hxx
+++ b/extensions/source/bibliography/general.hxx
@@ -121,6 +121,11 @@ class BibGeneralPage : public InterimItemWindow
std::unique_ptr<weld::Entry> xCustom4ED;
std::unique_ptr<weld::Label> xCustom5FT;
std::unique_ptr<weld::Entry> xCustom5ED;
+ std::unique_ptr<weld::Label> m_xLocalURLFT;
+ std::unique_ptr<weld::Entry> m_xLocalURLED;
+ std::unique_ptr<weld::Button> m_xLocalBrowseButton;
+ std::unique_ptr<weld::CheckButton> m_xLocalPageCB;
+ std::unique_ptr<weld::SpinButton> m_xLocalPageSB;
OUString sTableErrorString;
@@ -142,6 +147,7 @@ class BibGeneralPage : public InterimItemWindow
DECL_LINK(FirstElementKeyInputHdl, const KeyEvent&, bool);
DECL_LINK(LastElementKeyInputHdl, const KeyEvent&, bool);
DECL_LINK(BrowseHdl, weld::Button&, void);
+ DECL_LINK(PageNumHdl, weld::Toggleable&, void);
DECL_LINK(LosePageFocusHdl, weld::Widget&, void);
public:
@@ -157,6 +163,9 @@ public:
weld::Entry& GetURLED();
weld::CheckButton& GetPageCB();
weld::SpinButton& GetPageSB();
+ weld::Entry& GetLocalURLED();
+ weld::CheckButton& GetLocalPageCB();
+ weld::SpinButton& GetLocalPageSB();
};
diff --git a/extensions/uiconfig/sbibliography/ui/generalpage.ui b/extensions/uiconfig/sbibliography/ui/generalpage.ui
index 5047ec1f22eb..5386d84c112b 100644
--- a/extensions/uiconfig/sbibliography/ui/generalpage.ui
+++ b/extensions/uiconfig/sbibliography/ui/generalpage.ui
@@ -7,6 +7,11 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">55535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
<object class="GtkBox" id="GeneralPage">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -956,10 +961,111 @@
</packing>
</child>
<child>
- <placeholder/>
+ <object class="GtkLabel" id="localurl">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="generalpage|localurl">Local copy</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">localurlcontrol</property>
+ <property name="xalign">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">14</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <object class="GtkBox" id="localvbox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="localhbox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkEntry" id="localurlcontrol">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="truncate-multiline">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="localbrowse">
+ <property name="label" translatable="yes" context="generalpage|browse">Browse...</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">True</property>
+ </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>
+ <child>
+ <object class="GtkBox" id="localhbox2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="localpagecb">
+ <property name="label" translatable="yes" context="generalpage|localpagecb">Page</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <accessibility>
+ <relation type="label-for" target="localpagesb"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="localpagesb">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can-focus">True</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment2</property>
+ <accessibility>
+ <relation type="labelled-by" target="localpagecb"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="expand">True</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">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">14</property>
+ </packing>
</child>
<child>
<placeholder/>
More information about the Libreoffice-commits
mailing list