summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-11-05 21:01:23 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-11-19 12:09:25 +0100
commit97bbffc917deba872090667e9dc096ecec99d557 (patch)
tree672bff54843461ff30270a11b726c1a48eea50cd /include
parent5b3592a42cc88a225237efadcc4d110be307303e (diff)
weld TreeView
a) use GtkTreeStores for GtkTreeViews b) ironically can't store GtkTreeStore contents in .ui apparently c) set show_expanders for all non-trees and unconverted cases d) on-demand subtrees Change-Id: I3c1036a222daba2c129b1a22ffeb3fe35005ae31 Reviewed-on: https://gerrit.libreoffice.org/63336 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/sfx2/strings.hrc1
-rw-r--r--include/vcl/builder.hxx2
-rw-r--r--include/vcl/weld.hxx73
3 files changed, 66 insertions, 10 deletions
diff --git a/include/sfx2/strings.hrc b/include/sfx2/strings.hrc
index 6eee0347c0b7..f02efc506078 100644
--- a/include/sfx2/strings.hrc
+++ b/include/sfx2/strings.hrc
@@ -156,6 +156,7 @@
#define STR_STANDARD NC_("STR_STANDARD", "Standard")
#define RID_SVXSTR_FILELINK NC_("RID_SVXSTR_FILELINK", "Document")
#define STR_NONE NC_("STR_NONE", "- None -")
+#define STR_CATEGORY_NONE NC_("saveastemplatedlg|categorylist", "None")
#define RID_SVXSTR_GRAFIKLINK NC_("RID_SVXSTR_GRAFIKLINK", "Image")
#define STR_SFX_FILTERNAME_ALL NC_("STR_SFX_FILTERNAME_ALL", "All files")
#define STR_SFX_FILTERNAME_PDF NC_("STR_SFX_FILTERNAME_PDF", "PDF files")
diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index 74fc3b44946f..5cc4c2074d09 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -375,7 +375,7 @@ private:
void handleMenuChild(PopupMenu *pParent, xmlreader::XmlReader &reader);
void handleMenuObject(PopupMenu *pParent, xmlreader::XmlReader &reader);
- void handleListStore(xmlreader::XmlReader &reader, const OString &rID);
+ void handleListStore(xmlreader::XmlReader &reader, const OString &rID, const OString &rClass);
void handleRow(xmlreader::XmlReader &reader, const OString &rID);
void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
void handleMenu(xmlreader::XmlReader &reader, const OString &rID);
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index a5a0c7c3123f..0d3db5f51251 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -42,8 +42,8 @@ protected:
Link<Widget&, void> m_aFocusInHdl;
Link<Widget&, void> m_aFocusOutHdl;
- void signal_focus_in() { return m_aFocusInHdl.Call(*this); }
- void signal_focus_out() { return m_aFocusOutHdl.Call(*this); }
+ void signal_focus_in() { m_aFocusInHdl.Call(*this); }
+ void signal_focus_out() { m_aFocusOutHdl.Call(*this); }
public:
virtual void set_sensitive(bool sensitive) = 0;
@@ -366,35 +366,65 @@ public:
bool get_value_changed_from_saved() const { return m_sSavedValue != get_active_text(); }
};
+class VCL_DLLPUBLIC TreeIter
+{
+private:
+ TreeIter(const TreeIter&) = delete;
+ TreeIter& operator=(const TreeIter&) = delete;
+
+public:
+ TreeIter() {}
+ virtual ~TreeIter() {}
+};
+
class VCL_DLLPUBLIC TreeView : virtual public Container
{
protected:
Link<TreeView&, void> m_aChangeHdl;
Link<TreeView&, void> m_aRowActivatedHdl;
+ Link<TreeIter&, bool> m_aExpandingHdl;
void signal_changed() { m_aChangeHdl.Call(*this); }
void signal_row_activated() { m_aRowActivatedHdl.Call(*this); }
+ bool signal_expanding(TreeIter& rIter) { return m_aExpandingHdl.Call(rIter); }
public:
- virtual void insert(int pos, const OUString& rStr, const OUString* pId,
- const OUString* pIconName, VirtualDevice* pImageSurface)
+ virtual void insert(weld::TreeIter* pParent, int pos, const OUString& rStr, const OUString* pId,
+ const OUString* pIconName, VirtualDevice* pImageSurface,
+ const OUString* pExpanderName, bool bChildrenOnDemand)
= 0;
+
+ virtual void set_expander_image(const weld::TreeIter& rIter, const OUString& rExpanderName) = 0;
+
+ void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName,
+ VirtualDevice* pImageSurface)
+ {
+ insert(nullptr, pos, rStr, pId, pIconName, pImageSurface, nullptr, false);
+ }
void insert_text(int pos, const OUString& rStr)
{
- insert(pos, rStr, nullptr, nullptr, nullptr);
+ insert(nullptr, pos, rStr, nullptr, nullptr, nullptr, nullptr, false);
+ }
+ void append_text(const OUString& rStr)
+ {
+ insert(nullptr, -1, rStr, nullptr, nullptr, nullptr, nullptr, false);
}
- void append_text(const OUString& rStr) { insert(-1, rStr, nullptr, nullptr, nullptr); }
void append(const OUString& rId, const OUString& rStr)
{
- insert(-1, rStr, &rId, nullptr, nullptr);
+ insert(nullptr, -1, rStr, &rId, nullptr, nullptr, nullptr, false);
}
void append(const OUString& rId, const OUString& rStr, const OUString& rImage)
{
- insert(-1, rStr, &rId, &rImage, nullptr);
+ insert(nullptr, -1, rStr, &rId, &rImage, nullptr, nullptr, false);
+ }
+ void append(weld::TreeIter* pParent, const OUString& rId, const OUString& rStr,
+ const OUString& rImage)
+ {
+ insert(pParent, -1, rStr, &rId, &rImage, nullptr, nullptr, false);
}
void append(const OUString& rId, const OUString& rStr, VirtualDevice& rImage)
{
- insert(-1, rStr, &rId, nullptr, &rImage);
+ insert(nullptr, -1, rStr, &rId, nullptr, &rImage, nullptr, false);
}
void connect_changed(const Link<TreeView&, void>& rLink) { m_aChangeHdl = rLink; }
@@ -435,6 +465,31 @@ public:
OUString get_selected_id() const { return get_id(get_selected_index()); }
void select_id(const OUString& rId) { select(find_id(rId)); }
+ //via iter
+ virtual std::unique_ptr<TreeIter> make_iterator(const TreeIter* pOrig = nullptr) const = 0;
+ virtual void copy_iterator(const TreeIter& rSource, TreeIter& rDest) const = 0;
+ virtual bool get_selected(TreeIter* pIter) const = 0;
+ virtual bool get_cursor(TreeIter* pIter) const = 0;
+ virtual void set_cursor(const TreeIter& rIter) = 0;
+ virtual bool get_iter_first(TreeIter& rIter) const = 0;
+ // set iter to point to next node at the current level
+ virtual bool iter_next_sibling(TreeIter& rIter) const = 0;
+ // set iter to point to next node, depth first, then sibling
+ virtual bool iter_next(TreeIter& rIter) const = 0;
+ virtual bool iter_children(TreeIter& rIter) const = 0;
+ virtual bool iter_parent(TreeIter& rIter) const = 0;
+ virtual int get_iter_depth(const TreeIter& rIter) const = 0;
+ virtual bool iter_has_child(const TreeIter& rIter) const = 0;
+ virtual void remove(const TreeIter& rIter) = 0;
+ virtual void select(const TreeIter& rIter) = 0;
+ virtual void unselect(const TreeIter& rIter) = 0;
+ virtual bool get_row_expanded(const TreeIter& rIter) const = 0;
+ virtual void expand_row(TreeIter& rIter) = 0;
+ virtual OUString get_text(const TreeIter& rIter) const = 0;
+ virtual OUString get_id(const TreeIter& rIter) const = 0;
+
+ void connect_expanding(const Link<TreeIter&, bool>& rLink) { m_aExpandingHdl = rLink; }
+
//all of them
void select_all() { unselect(-1); }
void unselect_all() { select(-1); }