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

A dialog for editing a 'file'. More...

Inheritance diagram for FileEditDialog:
[legend]

Public Member Functions

 FileEditDialog (std::shared_ptr< WAbstractItemModel > model, const WModelIndex &item)
 
- Public Member Functions inherited from Wt::WDialog
 WDialog ()
 
 WDialog (const WString &windowTitle)
 
 ~WDialog ()
 
void setWindowTitle (const WString &title)
 
WString windowTitle () const
 
void setTitleBarEnabled (bool enabled)
 
bool isTitleBarEnabled () const
 
WContainerWidgettitleBar () const
 
WContainerWidgetcontents () const
 
WContainerWidgetfooter () const
 
DialogCode exec (const WAnimation &animation=WAnimation())
 
virtual void done (DialogCode r)
 
virtual void accept ()
 
virtual void reject ()
 
void rejectWhenEscapePressed (bool enable=true)
 
Signal< DialogCode > & finished ()
 
DialogCode result () const
 
void setModal (bool modal)
 
bool isModal () const
 
void setResizable (bool resizable)
 
bool resizable () const
 
void setMovable (bool movable)
 
bool movable () const
 
void setClosable (bool closable)
 
bool closable () const
 
void setAutoFocus (bool enable)
 
virtual void setHidden (bool hidden, const WAnimation &animation=WAnimation()) override
 
virtual void positionAt (const WWidget *widget, Orientation orientation=Orientation::Vertical) override
 
void positionAt (const Wt::WMouseEvent &ev)
 
void raiseToFront ()
 
virtual void setMinimumSize (const WLength &width, const WLength &height) override
 
virtual void setMaximumSize (const WLength &width, const WLength &height) override
 
JSignal< int, int > & resized ()
 
JSignal< int, int > & moved ()
 
EventSignal< WTouchEvent > & touchStarted ()
 
EventSignal< WTouchEvent > & touchEnded ()
 
EventSignal< WTouchEvent > & touchMoved ()
 
EventSignal< WKeyEvent > & keyWentDown ()
 
EventSignal< WKeyEvent > & keyPressed ()
 
EventSignal< WKeyEvent > & keyWentUp ()
 
EventSignalenterPressed ()
 
EventSignalescapePressed ()
 
EventSignal< WKeyEvent > & keyWentDown ()
 
EventSignal< WKeyEvent > & keyPressed ()
 
EventSignal< WKeyEvent > & keyWentUp ()
 
EventSignalenterPressed ()
 
EventSignalescapePressed ()
 
- Public Member Functions inherited from Wt::WPopupWidget
 WPopupWidget (std::unique_ptr< WWidget > impl)
 
virtual ~WPopupWidget ()
 
void setAnchorWidget (WWidget *widget, Orientation orientation=Orientation::Vertical)
 
Orientation orientation () const
 
void setTransient (bool transient, int autoHideDelay=0)
 
bool isTransient () const
 
int autoHideDelay () const
 
Signalhidden ()
 
Signalshown ()
 
- 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 WLength minimumWidth () const override
 
virtual WLength minimumHeight () const 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 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 setSelectable (bool selectable) 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 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

void handleFinish (DialogCode result)
 

Private Attributes

std::shared_ptr< WAbstractItemModelmodel_
 
WModelIndex item_
 
WLineEditnameEdit_
 
WLineEditsizeEdit_
 
WComboBoxtypeEdit_
 
WDatePickercreatedPicker_
 
WDatePickermodifiedPicker_
 

Additional Inherited Members

- Public Types inherited from Wt::WDialog
typedef DialogCode Code
 
- 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::WDialog
virtual void render (WFlags< RenderFlag > flags) override
 
- 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
 
- 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 dialog for editing a 'file'.

Definition at line 78 of file TreeViewDragDrop.C.

Constructor & Destructor Documentation

◆ FileEditDialog()

FileEditDialog::FileEditDialog ( std::shared_ptr< WAbstractItemModel model,
const WModelIndex item 
)
inline

Definition at line 81 of file TreeViewDragDrop.C.

82  : WDialog("Edit..."),
83  model_(model),
84  item_(item)
85  {
86  int modelRow = item_.row();
87 
88  resize(300, WLength::Auto);
89 
90  /*
91  * Create the form widgets, and load them with data from the model.
92  */
93 
94  // name
95  auto nameEdit = std::make_unique<WLineEdit>(asString(model_->data(modelRow, 1)));
96  nameEdit_ = nameEdit.get();
97 
98  // type
99  auto typeEdit = std::make_unique<WComboBox>();
100  typeEdit_ = typeEdit.get();
101  typeEdit_->addItem("Document");
102  typeEdit_->addItem("Spreadsheet");
103  typeEdit_->addItem("Presentation");
105  (typeEdit_->findText(asString(model_->data(modelRow, 2))));
106 
107  // size
108  auto sizeEdit = std::make_unique<WLineEdit>(asString(model_->data(modelRow, 3)));
109  sizeEdit_ = sizeEdit.get();
111  (std::make_shared<WIntValidator>(0, std::numeric_limits<int>::max()));
112 
113 
114  // created
115  auto createdPicker = std::make_unique<WDatePicker>();
116  createdPicker_ = createdPicker.get();
117  createdPicker_->lineEdit()->validator()->setMandatory(true);
119  createdPicker_->setDate(cpp17::any_cast<WDate>(model_->data(modelRow, 4)));
120 
121  // modified
122  auto modifiedPicker = std::make_unique<WDatePicker>();
123  modifiedPicker_ = modifiedPicker.get();
124  modifiedPicker_->lineEdit()->validator()->setMandatory(true);
126  modifiedPicker_->setDate(cpp17::any_cast<WDate>(model_->data(modelRow, 5)));
127 
128  /*
129  * Use a grid layout for the labels and fields
130  */
131  auto layout = std::make_unique<WGridLayout>();
132 
133  std::unique_ptr<WLabel> label;
134  int row = 0;
135 
136  label = std::make_unique<WLabel>("Name:");
137  label->setBuddy(nameEdit_);
138  layout->addWidget(std::move(label), row, 0);
139  layout->addWidget(std::move(nameEdit), row, 1);
140  ++row;
141 
142  label = std::make_unique<WLabel>("Type:");
143  label->setBuddy(typeEdit_);
144  layout->addWidget(std::move(label), row, 0);
145  layout->addWidget(std::move(typeEdit), row, 1);
146  ++row;
147 
148  label = std::make_unique<WLabel>("Size");
149  label->setBuddy(sizeEdit_);
150  layout->addWidget(std::move(label), row, 0);
151  layout->addWidget(std::move(sizeEdit), row, 1);
152  ++row;
153 
154  label = std::make_unique<WLabel>("Created:");
155  label->setBuddy(createdPicker_->lineEdit());
156  layout->addWidget(std::move(label), row, 0);
157  layout->addWidget(std::move(createdPicker), row, 2);
158  ++row;
159 
160  label = std::make_unique<WLabel>("Modified:");
161  label->setBuddy(modifiedPicker_->lineEdit());
162  layout->addWidget(std::move(label), row, 0);
163  layout->addWidget(std::move(modifiedPicker), row, 2);
164  ++row;
165 
166  std::unique_ptr<WPushButton>button;
167  auto buttons = std::make_unique<WContainerWidget>();
168 
169  button = std::make_unique<WPushButton>("Save");
170  button->clicked().connect(this, &WDialog::accept);
171  buttons->addWidget(std::move(button));
172 
173  button = std::make_unique<WPushButton>("Cancel");
174  contents()->enterPressed().connect(this, &WDialog::accept);
175  button->clicked().connect(this, &WDialog::reject);
176  buttons->addWidget(std::move(button));
177 
178  /*
179  * Focus the form widget that corresonds to the selected item.
180  */
181  switch (item.column()) {
182  case 2:
183  typeEdit_->setFocus(); break;
184  case 3:
185  sizeEdit_->setFocus(); break;
186  case 4:
188  break;
189  case 5:
191  break;
192  default:
193  nameEdit_->setFocus(); break;
194  }
195 
196  layout->addWidget(std::move(buttons), row, 0, 0, 3, AlignmentFlag::Center);
197  layout->setColumnStretch(1, 1);
198 
199  contents()->setLayout(std::move(layout));
200 
202 
203  show();
204  }
void handleFinish(DialogCode result)
WModelIndex item_
WLineEdit * nameEdit_
std::shared_ptr< WAbstractItemModel > model_
WLineEdit * sizeEdit_
WDatePicker * createdPicker_
WDatePicker * modifiedPicker_
WComboBox * typeEdit_
static WString dateEditFormat
Date edit format.
Wt::Signals::connection connect(F function)
virtual Wt::Signals::connection connect(WObject *target, WObject::Method method) override
int findText(const WString &text, WFlags< MatchFlag > flags=MatchFlag::Exactly|MatchFlag::CaseSensitive) const
void setCurrentIndex(int index)
void addItem(const WString &text)
virtual void resize(const WLength &width, const WLength &height) override
void setLayout(std::unique_ptr< WLayout > layout)
WLineEdit * lineEdit() const
void setFormat(const WString &format)
void setDate(const WDate &date)
Signal< DialogCode > & finished()
WContainerWidget * contents() const
virtual std::shared_ptr< WValidator > validator() const
void setValidator(const std::shared_ptr< WValidator > &validator)
EventSignal & enterPressed()
int row() const
int column() const
virtual void setFocus(bool focus) override
WString asString(const cpp17::any &v, const WString &formatString=WString())

Member Function Documentation

◆ handleFinish()

void FileEditDialog::handleFinish ( DialogCode  result)
inlineprivate

Definition at line 214 of file TreeViewDragDrop.C.

215  {
216  if (result == DialogCode::Accepted) {
217  /*
218  * Update the model with data from the edit widgets.
219  *
220  * You will want to do some validation here...
221  *
222  * Note that we directly update the source model to avoid
223  * problems caused by the dynamic sorting of the proxy model,
224  * which reorders row numbers, and would cause us to switch to editing
225  * the wrong data.
226  */
227  std::shared_ptr<WAbstractItemModel> m = model_;
228  int modelRow = item_.row();
229 
230  std::shared_ptr<WAbstractProxyModel> proxyModel =
231  std::dynamic_pointer_cast<WAbstractProxyModel>(m);
232  if (proxyModel) {
233  m = proxyModel->sourceModel();
234  modelRow = proxyModel->mapToSource(item_).row();
235  }
236 
237  m->setData(modelRow, 1, cpp17::any(nameEdit_->text()));
238  m->setData(modelRow, 2, cpp17::any(typeEdit_->currentText()));
239  m->setData(modelRow, 3, cpp17::any(asNumber
240  (sizeEdit_->text().toUTF8())));
241  m->setData(modelRow, 4, cpp17::any(createdPicker_->date()));
242  m->setData(modelRow, 5, cpp17::any(modifiedPicker_->date()));
243  }
244 
245  //delete this;
246  }
const WString currentText() const
WDate date() const
DialogCode result() const
const WString & text() const
std::string toUTF8() const
double asNumber(const cpp17::any &v)

Member Data Documentation

◆ createdPicker_

WDatePicker* FileEditDialog::createdPicker_
private

Definition at line 212 of file TreeViewDragDrop.C.

◆ item_

WModelIndex FileEditDialog::item_
private

Definition at line 208 of file TreeViewDragDrop.C.

◆ model_

std::shared_ptr<WAbstractItemModel> FileEditDialog::model_
private

Definition at line 207 of file TreeViewDragDrop.C.

◆ modifiedPicker_

WDatePicker * FileEditDialog::modifiedPicker_
private

Definition at line 212 of file TreeViewDragDrop.C.

◆ nameEdit_

WLineEdit* FileEditDialog::nameEdit_
private

Definition at line 210 of file TreeViewDragDrop.C.

◆ sizeEdit_

WLineEdit * FileEditDialog::sizeEdit_
private

Definition at line 210 of file TreeViewDragDrop.C.

◆ typeEdit_

WComboBox* FileEditDialog::typeEdit_
private

Definition at line 211 of file TreeViewDragDrop.C.


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