Wt examples  4.10.4
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FileTreeTableNode Class Reference

A single node in a file tree table. More...

#include <FileTreeTableNode.h>

Inheritance diagram for FileTreeTableNode:
[legend]

Public Member Functions

 FileTreeTableNode (const boost::filesystem::path &path)
 Construct a new node for the given file. More...
 
- Public Member Functions inherited from Wt::WTreeTableNode
 WTreeTableNode (const WString &labelText, std::unique_ptr< WIconPair > labelIcon=nullptr)
 
void setColumnWidget (int column, std::unique_ptr< WWidget > item)
 
WWidgetcolumnWidget (int column)
 
WTreeTabletable () const
 
virtual void insertChildNode (int index, std::unique_ptr< WTreeNode > node) override
 
- Public Member Functions inherited from Wt::WTreeNode
 WTreeNode (const WString &labelText, std::unique_ptr< WIconPair > labelIcon=nullptr)
 
 ~WTreeNode ()
 
virtual WTreetree () const
 
WTextlabel () const
 
WIconPairlabelIcon () const
 
void setLabelIcon (std::unique_ptr< WIconPair > labelIcon)
 
WTreeNodeaddChildNode (std::unique_ptr< WTreeNode > node)
 
std::unique_ptr< WTreeNoderemoveChildNode (WTreeNode *node)
 
std::vector< WTreeNode * > childNodes () const
 
virtual int displayedChildCount () const
 
void setChildCountPolicy (ChildCountPolicy policy)
 
ChildCountPolicy childCountPolicy () const
 
void setLoadPolicy (ContentLoading loadPolicy)
 
bool isExpanded () const
 
virtual void setSelectable (bool selectable) override
 
virtual bool isSelectable () const
 
WTreeNodeparentNode () const
 
void setNodeVisible (bool visible)
 
void setChildrenDecorated (bool decorated)
 
void setInteractive (bool interactive)
 
void expand ()
 
void collapse ()
 
EventSignal< WMouseEvent > & expanded ()
 
EventSignal< WMouseEvent > & collapsed ()
 
Signal< bool > & selected ()
 
- Public Member Functions inherited from Wt::WCompositeWidget
 WCompositeWidget ()
 
 WCompositeWidget (std::unique_ptr< WWidget > implementation)
 
virtual std::vector< WWidget * > children () const override
 
virtual std::unique_ptr< WWidgetremoveWidget (WWidget *widget) override
 
virtual void setObjectName (const std::string &name) override
 
virtual std::string objectName () const override
 
virtual const std::string id () const override
 
virtual void setPositionScheme (PositionScheme scheme) override
 
virtual PositionScheme positionScheme () const override
 
virtual void setOffsets (const WLength &offset, WFlags< Side > sides=AllSides) override
 
virtual WLength offset (Side s) const override
 
virtual void resize (const WLength &width, const WLength &height) override
 
virtual WLength width () const override
 
virtual WLength height () const override
 
virtual void setMinimumSize (const WLength &width, const WLength &height) override
 
virtual WLength minimumWidth () const override
 
virtual WLength minimumHeight () const override
 
virtual void setMaximumSize (const WLength &width, const WLength &height) override
 
virtual WLength maximumWidth () const override
 
virtual WLength maximumHeight () const override
 
virtual void setLineHeight (const WLength &height) override
 
virtual WLength lineHeight () const override
 
virtual void setFloatSide (Side s) override
 
virtual Side floatSide () const override
 
virtual void setClearSides (WFlags< Side > sides) override
 
virtual WFlags< SideclearSides () const override
 
virtual void setMargin (const WLength &margin, WFlags< Side > sides=AllSides) override
 
virtual WLength margin (Side side) const override
 
virtual void setHiddenKeepsGeometry (bool enabled) override
 
virtual bool hiddenKeepsGeometry () const override
 
virtual void setHidden (bool hidden, const WAnimation &animation=WAnimation()) override
 
virtual bool isHidden () const override
 
virtual bool isVisible () const override
 
virtual void setDisabled (bool disabled) override
 
virtual bool isDisabled () const override
 
virtual bool isEnabled () const override
 
virtual void setPopup (bool popup) override
 
virtual bool isPopup () const override
 
virtual void setInline (bool isInline) override
 
virtual bool isInline () const override
 
virtual void setDecorationStyle (const WCssDecorationStyle &style) override
 
virtual WCssDecorationStyledecorationStyle () override
 
virtual void setStyleClass (const WString &styleClass) override
 
virtual WString styleClass () const override
 
virtual void addStyleClass (const WString &styleClass, bool force=false) override
 
virtual void removeStyleClass (const WString &styleClass, bool force=false) override
 
virtual bool hasStyleClass (const WString &styleClass) const override
 
virtual void setVerticalAlignment (AlignmentFlag alignment, const WLength &length=WLength::Auto) override
 
virtual AlignmentFlag verticalAlignment () const override
 
virtual WLength verticalAlignmentLength () const override
 
virtual void setToolTip (const WString &text, TextFormat textFormat=TextFormat::Plain) override
 
virtual WString toolTip () const override
 
virtual void setDeferredToolTip (bool enable, TextFormat textFormat=TextFormat::Plain) override
 
virtual void refresh () override
 
virtual void setAttributeValue (const std::string &name, const WString &value) override
 
virtual WString attributeValue (const std::string &name) const override
 
virtual void setJavaScriptMember (const std::string &name, const std::string &value) override
 
virtual std::string javaScriptMember (const std::string &name) const override
 
virtual void callJavaScriptMember (const std::string &name, const std::string &args) override
 
virtual void load () override
 
virtual bool loaded () const override
 
virtual void setCanReceiveFocus (bool enabled) override
 
virtual bool canReceiveFocus () const override
 
virtual void setFocus (bool focus) override
 
virtual bool setFirstFocus () override
 
virtual bool hasFocus () const override
 
virtual void setTabIndex (int index) override
 
virtual int tabIndex () const override
 
virtual void setId (const std::string &id) override
 
virtual WWidgetfind (const std::string &name) override
 
virtual WWidgetfindById (const std::string &name) override
 
virtual void doJavaScript (const std::string &js) override
 
virtual void propagateSetEnabled (bool enabled) override
 
virtual bool scrollVisibilityEnabled () const final override
 
virtual void setScrollVisibilityEnabled (bool enabled) final override
 
virtual int scrollVisibilityMargin () const final override
 
virtual void setScrollVisibilityMargin (int margin) final override
 
virtual Signal< bool > & scrollVisibilityChanged () final override
 
virtual bool isScrollVisible () const final override
 
virtual void setThemeStyleEnabled (bool enabled) final override
 
virtual bool isThemeStyleEnabled () const final override
 
virtual std::unique_ptr< WWidgetremoveWidget (WWidget *widget)
 
std::unique_ptr< Widget > removeWidget (Widget *widget)
 
void setFocus ()
 
virtual void setFocus (bool focus)=0
 
- Public Member Functions inherited from Wt::WWidget
virtual ~WWidget ()
 
WWidgetparent () const
 
std::unique_ptr< Widget > removeWidget (Widget *widget)
 
std::unique_ptr< WWidgetremoveFromParent ()
 
void setWidth (const WLength &width)
 
void setHeight (const WLength &height)
 
virtual void positionAt (const WWidget *widget, Orientation orientation=Orientation::Vertical)
 
virtual void toggleStyleClass (const WString &styleClass, bool add, bool force=false)
 
std::string jsRef () const
 
void setFocus ()
 
virtual void acceptDrops (const std::string &mimeType, const WString &hoverStyleClass=WString())
 
virtual void stopAcceptDrops (const std::string &mimeType)
 
virtual void htmlText (std::ostream &out)
 
bool isRendered () const
 
void hide ()
 
void animateHide (const WAnimation &animation)
 
void show ()
 
void animateShow (const WAnimation &animation)
 
void enable ()
 
void disable ()
 
bool layoutSizeAware () const
 
- Public Member Functions inherited from Wt::WObject
void addChild (std::unique_ptr< WObject > child)
 
Child * addChild (std::unique_ptr< Child > child)
 
std::unique_ptr< WObjectremoveChild (WObject *child)
 
std::unique_ptr< Child > removeChild (Child *child)
 
void resetLearnedSlots ()
 
void resetLearnedSlot (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 
void isNotStateless ()
 
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 
- Public Member Functions inherited from Wt::Core::observable
 observable () noexcept
 
virtual ~observable ()
 
auto bindSafe (void(C::*method)(Args...)) noexcept
 
auto bindSafe (void(C::*method)(Args...) const) const noexcept
 
auto bindSafe (const Function &function) noexcept
 

Private Member Functions

virtual void populate () override
 Reimplements WTreeNode::populate to read files within a directory. More...
 
virtual bool expandable () override
 Reimplements WTreeNode::expandable. More...
 

Static Private Member Functions

static std::unique_ptr< WIconPaircreateIcon (const boost::filesystem::path &path)
 Create the iconpair for representing the path. More...
 

Private Attributes

boost::filesystem::path path_
 The path. More...
 

Additional Inherited Members

- Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
 
- Static Public Member Functions inherited from Wt::WWidget
static WString tr (const char *key)
 
- Protected Member Functions inherited from Wt::WTreeTableNode
virtual void setTable (WTreeTable *table)
 
- Protected Member Functions inherited from Wt::WTreeNode
 WTreeNode ()
 
WContainerWidgetlabelArea () const
 
bool populated () const
 
virtual void renderSelected (bool selected)
 
virtual void descendantRemoved (WTreeNode *node)
 
virtual void descendantAdded (WTreeNode *node)
 
virtual void doExpand ()
 
virtual void doCollapse ()
 
virtual void undoDoExpand ()
 
virtual void undoDoCollapse ()
 
WIconPairexpandIcon () const
 
- Protected Member Functions inherited from Wt::WCompositeWidget
virtual void enableAjax () override
 
void setImplementation (std::unique_ptr< WWidget > widget)
 
Widget * setImplementation (std::unique_ptr< Widget > widget)
 
W * setNewImplementation (Args &&... args)
 
WWidgetimplementation ()
 
virtual int boxPadding (Orientation orientation) const override
 
virtual int boxBorder (Orientation orientation) const override
 
virtual void render (WFlags< RenderFlag > flags) override
 
- Protected Member Functions inherited from Wt::WWidget
void setLayoutSizeAware (bool sizeAware)
 
virtual void layoutSizeChanged (int width, int height)
 
 WWidget ()
 
virtual void dropEvent (WDropEvent dropEvent)
 
void scheduleRender (WFlags< RepaintFlag > flags=None)
 
virtual WStatelessSlot * getStateless (Method method) override
 

Detailed Description

A single node in a file tree table.

The node manages the details about one file, and if the file is a directory, populates a subtree with nodes for every directory item.

The tree node reimplements Wt::WTreeTableNode::populate() to populate a directory node only when the node is expanded. In this way, only directories that are actually browsed are loaded from disk.

Definition at line 30 of file FileTreeTableNode.h.

Constructor & Destructor Documentation

◆ FileTreeTableNode()

FileTreeTableNode::FileTreeTableNode ( const boost::filesystem::path &  path)

Construct a new node for the given file.

Definition at line 22 of file FileTreeTableNode.C.

24  : WTreeTableNode(Wt::widen(path.leaf()), createIcon(path)),
25 #else
26  : WTreeTableNode(path.leaf().string(), createIcon(path)),
27 #endif
28  path_(path)
29 {
30  label()->setTextFormat(TextFormat::Plain);
31 
32  if (boost::filesystem::exists(path)) {
33  if (!boost::filesystem::is_directory(path)) {
34  int fsize = (int)boost::filesystem::file_size(path);
35  setColumnWidget(1, std::make_unique<WText>(asString(fsize)));
36  columnWidget(1)->setStyleClass("fsize");
37  } else
38  setSelectable(false);
39 
40  std::time_t t = boost::filesystem::last_write_time(path);
42  Wt::WString dateTimeStr = dateTime.toString(Wt::utf8("MMM dd yyyy"));
43 
44  setColumnWidget(2, std::make_unique<WText>(dateTimeStr));
45  columnWidget(2)->setStyleClass("date");
46  }
47 }
boost::filesystem::path path_
The path.
static std::unique_ptr< WIconPair > createIcon(const boost::filesystem::path &path)
Create the iconpair for representing the path.
static WDateTime fromTime_t(std::time_t seconds)
WString toString() const
bool setTextFormat(TextFormat format)
virtual void setSelectable(bool selectable) override
WText * label() const
WTreeTableNode(const WString &labelText, std::unique_ptr< WIconPair > labelIcon=nullptr)
WWidget * columnWidget(int column)
void setColumnWidget(int column, std::unique_ptr< WWidget > item)
virtual void setStyleClass(const WString &styleClass)=0
WString asString(const cpp17::any &v, const WString &formatString=WString())

Member Function Documentation

◆ createIcon()

std::unique_ptr< WIconPair > FileTreeTableNode::createIcon ( const boost::filesystem::path &  path)
staticprivate

Create the iconpair for representing the path.

Definition at line 49 of file FileTreeTableNode.C.

50 {
51  if (boost::filesystem::exists(path)
52  && boost::filesystem::is_directory(path))
53  return std::make_unique<WIconPair>("icons/yellow-folder-closed.png",
54  "icons/yellow-folder-open.png", false);
55  else
56  return std::make_unique<WIconPair>("icons/document.png",
57  "icons/yellow-folder-open.png", false);
58 }

◆ expandable()

bool FileTreeTableNode::expandable ( )
overrideprivatevirtual

Reimplements WTreeNode::expandable.

Reimplemented from Wt::WTreeNode.

Definition at line 83 of file FileTreeTableNode.C.

84 {
85  if (!populated()) {
86  return boost::filesystem::is_directory(path_);
87  } else
88  return WTreeTableNode::expandable();
89 }
bool populated() const

◆ populate()

void FileTreeTableNode::populate ( )
overrideprivatevirtual

Reimplements WTreeNode::populate to read files within a directory.

Reimplemented from Wt::WTreeNode.

Definition at line 60 of file FileTreeTableNode.C.

61 {
62  if (boost::filesystem::is_directory(path_)) {
63  std::set<boost::filesystem::path> paths;
64  boost::filesystem::directory_iterator end_itr;
65 
66  for (boost::filesystem::directory_iterator i(path_); i != end_itr; ++i)
67  try {
68  paths.insert(*i);
69  } catch (boost::filesystem::filesystem_error& e) {
70  std::cerr << e.what() << std::endl;
71  }
72 
73  for (std::set<boost::filesystem::path>::iterator i = paths.begin();
74  i != paths.end(); ++i)
75  try {
76  addChildNode(std::make_unique<FileTreeTableNode>(*i));
77  } catch (boost::filesystem::filesystem_error& e) {
78  std::cerr << e.what() << std::endl;
79  }
80  }
81 }
WTreeNode * addChildNode(std::unique_ptr< WTreeNode > node)

Member Data Documentation

◆ path_

boost::filesystem::path FileTreeTableNode::path_
private

The path.

Definition at line 39 of file FileTreeTableNode.h.


The documentation for this class was generated from the following files: