diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-11-05 21:01:23 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-11-19 12:09:25 +0100 |
commit | 97bbffc917deba872090667e9dc096ecec99d557 (patch) | |
tree | 672bff54843461ff30270a11b726c1a48eea50cd /include | |
parent | 5b3592a42cc88a225237efadcc4d110be307303e (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.hrc | 1 | ||||
-rw-r--r-- | include/vcl/builder.hxx | 2 | ||||
-rw-r--r-- | include/vcl/weld.hxx | 73 |
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); } |