1 #line 2 "src/Gui/AccountRegister.cpp"
3 #include <Wt/WDateEdit.h>
4 #include <Wt/WItemDelegate.h>
5 #include <Wt/WPushButton.h>
6 #include <Wt/WSuggestionPopup.h>
8 #include <Wt/WTableView.h>
10 #include <Wt/WVBoxLayout.h>
11 #include <Wt/WHBoxLayout.h>
13 #include "../define.h"
15 #include "../Dbo/Accounts/Accounts.h"
16 #include "../Dbo/Prefrences.h"
17 #include "../Dbo/Splits/Splits.h"
18 #include "../Dbo/Transactions/Manager.h"
25 setText_( Wt::WText * _widget,
GCW_NUMERIC _value )->
void
31 setText_( Wt::WText * _widget,
int _value )->
void
33 _widget-> setText( std::to_string( _value ) );
39 :
public Wt::WItemDelegate
46 const Wt::WModelIndex & _index,
47 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
48 )
const-> std::unique_ptr< Wt::WWidget >;
50 virtual auto editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const-> Wt::cpp17::any
override;
58 const Wt::WModelIndex & _index,
59 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
60 )
const-> std::unique_ptr< Wt::WWidget >
62 std::cout << __FILE__ <<
":" << __LINE__ <<
" HeaderDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
64 auto retVal = std::make_unique< Wt::WDateEdit >();
66 return std::move( retVal );
72 editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const
74 auto dateEdit =
dynamic_cast< Wt::WDateEdit*
>( editor );
76 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
78 return dateEdit-> text();
85 :
public Wt::WItemDelegate
94 std::unique_ptr< Wt::WWidget > createEditor
96 const Wt::WModelIndex & _index,
97 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
100 virtual Wt::cpp17::any editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const override;
101 void setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const;
102 void setModelData (
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const;
104 void doCloseEditor( Wt::WDateEdit * _dateEdit,
bool save )
const;
105 void doTabAction( Wt::WKeyEvent _keyEvent )
const;
107 mutable Wt::WDateEdit * m_dateEdit =
nullptr;
111 std::unique_ptr< Wt::WWidget >
115 const Wt::WModelIndex & _index,
116 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
120 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
"," << _index.column() << std::endl;
128 auto retVal = std::make_unique< Wt::WContainerWidget >();
130 retVal-> setSelectable(
true );
137 Wt::WDate::fromString
149 auto dateEdit = std::make_unique< Wt::WDateEdit >();
150 m_dateEdit = dateEdit.get();
152 dateEdit-> setDate(
date );
153 dateEdit-> enterPressed ().connect( [&](){ doCloseEditor( dateEdit.get(),
true ); });
154 dateEdit-> escapePressed ().connect( [&](){ doCloseEditor( dateEdit.get(),
false ); });
155 dateEdit-> keyWentDown ().connect( [&]( Wt::WKeyEvent _keyEvent ){ doTabAction( _keyEvent ); });
161 retVal-> setLayout( std::make_unique< Wt::WHBoxLayout >() );
162 retVal-> layout()-> setContentsMargins( 1,1,1,1 );
163 retVal-> layout()-> addWidget( std::move( dateEdit ) );
167 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::createEditor<end>" << std::endl;
176 doCloseEditor( Wt::WDateEdit * _dateEdit,
bool save )
const
179 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::doCloseEditor()" << std::endl;
182 closeEditor().emit( _dateEdit, save );
188 doTabAction( Wt::WKeyEvent _keyEvent )
const
191 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::doTabAction()" << std::endl;
198 editState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index )
const
200 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( _editor );
202 auto de =
dynamic_cast< Wt::WDateEdit*
>( cw-> children().at(0) );
205 std::cout << __FILE__ <<
":" << __LINE__
206 <<
" Wt::cpp17::any DateDelegate::editState()"
207 <<
" row:" << _index.row()
208 <<
" col:" << _index.column()
209 <<
" id:" << cw->
id()
210 <<
" oname:" << cw-> objectName()
211 <<
" chlds:" << cw-> children().size()
212 <<
" typid:" <<
typeid( cw-> children().at(0) ).
name()
214 <<
" mdted:" << m_dateEdit
215 <<
" txt:" << m_dateEdit-> text()
221 return m_dateEdit-> text();
227 setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const
232 <<
" " << _editor <<
" " <<
typeid( _editor ).
name()
233 <<
" " << m_dateEdit <<
" " <<
typeid( m_dateEdit ).
name()
243 setModelData(
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const
246 std::cout << __FILE__ <<
":" << __LINE__
248 <<
" " << _index.row()
249 <<
" " << _index.column()
255 Wt::WItemDelegate::setModelData( _editState, _model, _index );
264 class ReconcileDelegate
265 :
public Wt::WItemDelegate
269 std::unique_ptr< Wt::WWidget > createEditor
271 const Wt::WModelIndex & _index,
272 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
275 virtual Wt::cpp17::any editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const override;
276 void setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const;
277 void setModelData (
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const;
279 void doCloseEditor( Wt::WLineEdit * _editor,
bool save )
const;
280 void doTabAction( Wt::WKeyEvent _keyEvent )
const;
284 std::unique_ptr< Wt::WWidget >
288 const Wt::WModelIndex & _index,
289 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
293 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconcileDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
301 auto retVal = std::make_unique< Wt::WContainerWidget >();
302 retVal-> setSelectable(
true );
308 auto reconciled =
Wt::asString( _index.data( Wt::ItemDataRole::Edit ) );
316 auto reconciledEdit = std::make_unique< Wt::WLineEdit >();
317 reconciledEdit-> setReadOnly(
true );
318 reconciledEdit-> setText( reconciled );
319 reconciledEdit-> enterPressed ().connect( [&](){ doCloseEditor( reconciledEdit.get(),
true ); });
320 reconciledEdit-> escapePressed ().connect( [&](){ doCloseEditor( reconciledEdit.get(),
false ); });
321 reconciledEdit-> keyWentDown ().connect( [&]( Wt::WKeyEvent _keyEvent ){ doTabAction( _keyEvent ); });
327 retVal-> setLayout( std::make_unique< Wt::WHBoxLayout >() );
328 retVal-> layout()-> setContentsMargins( 0,0,0,0 );
329 retVal-> layout()-> addWidget( std::move( reconciledEdit ) );
337 doCloseEditor( Wt::WLineEdit * _editor,
bool save )
const
340 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconciledDelegate::doCloseEditor()" << std::endl;
343 closeEditor().emit( _editor, save );
346 m_editorClosed.emit( m_row, m_col );
355 doTabAction( Wt::WKeyEvent _keyEvent )
const
358 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconciledDelegate::doTabAction()" << std::endl;
365 editState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index )
const
367 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( _editor );
369 auto ed =
dynamic_cast< Wt::WLineEdit*
>( cw-> children().at(0) );
372 std::cout << __FILE__ <<
":" << __LINE__
373 <<
" Wt::cpp17::any ReconcileDelegate::editState()"
374 <<
" r:" << _index.row()
375 <<
" c:" << _index.column()
376 <<
" i:" << cw->
id()
377 <<
" n:" << cw-> objectName()
378 <<
" s:" << cw-> children().size()
379 <<
" t:" <<
typeid( cw-> children().at(0) ).
name()
392 setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const
403 setModelData(
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const
406 std::cout << __FILE__ <<
":" << __LINE__
407 <<
" ReconciledDelegate::setModelData()"
408 <<
" " << _index.row()
409 <<
" " << _index.column()
422 :
public Wt::WItemDelegate
426 std::unique_ptr< Wt::WWidget > createEditor
428 const Wt::WModelIndex & _index,
429 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
434 std::unique_ptr< Wt::WWidget >
438 const Wt::WModelIndex & _index,
439 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
442 auto retVal = Wt::WItemDelegate::createEditor( _index, _flags );
443 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( retVal.get() );
444 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
>( cw-> widget(0) );
461 class BalanceDelegate
462 :
public Wt::WItemDelegate
466 auto createEditor(
const Wt::WModelIndex & _index, Wt::WFlags< Wt::ViewItemRenderFlag > _flags )
const-> std::unique_ptr< Wt::WWidget > ;
474 const Wt::WModelIndex & _index,
475 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
476 )
const-> std::unique_ptr< Wt::WWidget >
478 auto retVal = Wt::WItemDelegate::createEditor( _index, _flags );
479 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( retVal.get() );
480 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
>( cw-> widget(0) );
481 lineEdit-> setReadOnly(
true );
482 lineEdit-> setAttributeValue(
"style",
"text-align:right;" );
492 class SuggestionDelegate
493 :
public Wt::WItemDelegate
497 std::unique_ptr< Wt::WWidget > createEditor
499 const Wt::WModelIndex & _index,
500 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
505 std::unique_ptr< Wt::WWidget >
509 const Wt::WModelIndex & _index,
510 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
514 std::cout << __FILE__ <<
":" << __LINE__ <<
" SuggestionDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
517 auto retVal = Wt::WItemDelegate::createEditor( _index, _flags );
518 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( retVal.get() );
519 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
>( cw-> widget(0) );
524 Wt::WSuggestionPopup::Options popupOptions =
534 auto popup = retVal-> addChild( std::make_unique< Wt::WSuggestionPopup >( popupOptions ) );
535 popup-> forEdit( lineEdit );
542 for(
auto item : baseModel-> suggestionsFromColumn( _index.column() ) )
543 popup-> addSuggestion( item, item );
553 class AccountDelegate
554 :
public Wt::WItemDelegate
558 std::unique_ptr< Wt::WWidget > createEditor
560 const Wt::WModelIndex & _index,
561 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
566 std::unique_ptr< Wt::WWidget >
570 const Wt::WModelIndex & _index,
571 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
575 std::cout << __FILE__ <<
":" << __LINE__ <<
" AccountDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
578 auto retVal = Wt::WItemDelegate::createEditor ( _index, _flags );
579 auto cw =
dynamic_cast< Wt::WContainerWidget*
> ( retVal.get() );
580 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
> ( cw-> widget(0) );
582 auto popup = retVal-> addChild( std::make_unique< GCW::Gui::AccountSuggestionPopup >() );
583 popup-> forEdit( lineEdit, Wt::PopupTrigger::Editing );
596 addStyleClass(
"StatusBar" );
598 auto lw = setLayout( std::make_unique< Wt::WHBoxLayout >() );
600 lw-> setSpacing( 0 );
602 auto _addWidget = [&](
const std::string & _key,
int _spacing = 0 )
604 lw-> addWidget( std::make_unique< Wt::WText >(
TR(
"gcw.AccountRegister.StatusBar." + _key ) +
":" ) );
605 auto retVal = lw-> addWidget( std::make_unique< Wt::WText >(), _spacing );
606 retVal-> setAttributeValue(
"style",
"margin-right:10px" );
640 addStyleClass(
"AccountRegister" );
647 auto lw = setLayout( std::make_unique< Wt::WVBoxLayout >() );
648 auto w = std::make_unique< GCW::Gui::TableView >();
650 lw-> addWidget( std::move( w ), 1 );
657 m_statusBar = lw-> addWidget( std::make_unique< StatusBar >() );
663 tableView()-> setSortingEnabled (
false );
664 tableView()-> setAlternatingRowColors (
true );
665 tableView()-> setSelectionBehavior ( Wt::SelectionBehavior::Rows );
666 tableView()-> setSelectionMode ( Wt::SelectionMode::Single );
668 tableView()-> setEditTriggers ( Wt::EditTrigger::SingleClicked );
670 tableView()-> setEditOptions ( Wt::EditOption::MultipleEditors | Wt::EditOption::LeaveEditorsOpen );
671 tableView()-> setHeaderItemDelegate ( std::make_shared< HeaderDelegate >() );
672 tableView()-> setAttributeValue (
"oncontextmenu",
"event.cancelBubble=true;event.returnValue=false;return false;" );
680 tableView()-> setItemDelegateForColumn ( 0, std::make_shared< DateDelegate >() );
681 tableView()-> setItemDelegateForColumn ( 1, std::make_shared< SuggestionDelegate >() );
682 tableView()-> setItemDelegateForColumn ( 2, std::make_shared< SuggestionDelegate >() );
683 tableView()-> setItemDelegateForColumn ( 3, std::make_shared< AccountDelegate >() );
684 tableView()-> setItemDelegateForColumn ( 4, std::make_shared< ReconcileDelegate >() );
685 tableView()-> setItemDelegateForColumn ( 5, std::make_shared< ValueDelegate >() );
686 tableView()-> setItemDelegateForColumn ( 6, std::make_shared< ValueDelegate >() );
687 tableView()-> setItemDelegateForColumn ( 7, std::make_shared< BalanceDelegate >() );
700 editorCreated().connect( [&](
int _row,
int _column)
702 std::cout << __FILE__ <<
":" << __LINE__
704 <<
" col:" << _column
707 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
709 std::cout << __FILE__ <<
":" << __LINE__
714 tableView()-> itemWidget(
tableView()-> model()-> index( _row, column ) )-> addStyleClass(
"active" );
720 editorClosed().connect( [&](
int _row,
int _column )
722 std::cout << __FILE__ <<
":" << __LINE__
724 <<
" col:" << _column
727 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
729 std::cout << __FILE__ <<
":" << __LINE__
734 tableView()-> itemWidget(
tableView()-> model()-> index( _row, column ) )-> removeStyleClass(
"active" );
743 tableView()-> headerClicked().connect( [=](
int col, Wt::WMouseEvent event )
746 if(
tableView()-> selectedIndexes().size() == 0 )
751 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << col << std::endl;
776 selectionChanged().connect( [=]()
778 std::cout << __FILE__ <<
":" << __LINE__ <<
" selectionChanged" << std::endl;
782 #ifdef CLICKED_FIRES_FROM_THE_TABLEVIEW_HANDLECLICK_EVENT_HANDLER_MIGHT_NOT_BE_USEFUL_HERE
788 clicked().connect( [=]( Wt::WModelIndex _index, Wt::WMouseEvent _event )
790 std::cout << __FILE__ <<
":" << __LINE__ <<
" clicked"
791 <<
" row:" << _index.row()
792 <<
" col:" << _index.column()
800 for(
int column = 0; column< 7; column++ )
802 std::cout << __FILE__ <<
":" << __LINE__ <<
" edit:" << column << std::endl;
804 auto index =
tableView()-> model()-> index( _index.row(), column );
811 std::cout << __FILE__ <<
":" << __LINE__ <<
" already editing " << std::endl;
818 #ifdef KEYPRESSED_ONLY_FIRES_WHEN_EDITORS_ARE_NOT_OPEN
820 keyPressed().connect( [=]( Wt::WKeyEvent _event )
822 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _event.charCode() << std::endl;
828 clicked().connect( [=]( Wt::WModelIndex _index, Wt::WMouseEvent _event )
831 std::cout << __FILE__ <<
":" << __LINE__ <<
" clicked"
832 <<
" row:" << _index.row()
833 <<
" col:" << _index.column()
843 std::cout << __FILE__ <<
":" << __LINE__ <<
" unselect:" << m_clickedRow << std::endl;
845 for( int column = 0; column< tableView()-> model()-> columnCount(); column++ )
848 itemWidget( tableView()-> model()-> index( m_clickedRow, column ) )->
849 removeStyleClass(
"active" );
866 m_clickedRow = _index.row();
867 m_clickedCol = _index.column();
868 editRow( _index.row() );
872 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
874 std::cout << __FILE__ <<
":" << __LINE__ <<
" select:" <<
m_clickedRow << std::endl;
877 addStyleClass(
"active" );
882 std::cout << __FILE__ <<
":" << __LINE__
883 <<
" " << Wt::WApplication::instance()-> theme()-> activeClass()
903 goneDirty().connect( [&]( Wt::WModelIndex _index )
905 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _index.row() << std::endl;
908 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _index.row() << std::endl;
926 auto splitGuid =
baseModel()-> getSplitGuid( _row );
928 transMan.loadSplit( splitGuid );
929 transMan.deleteTransaction();
939 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
947 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
955 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
963 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
978 static bool askThisSession =
true;
984 if( askThisSession || askForever )
990 auto msgBox = addChild( std::make_unique< Wt::WDialog >(
TR(
"gcw.AccountRegister.delete.title") ) );
991 auto templt = msgBox-> contents()-> addNew< Wt::WTemplate >(
TR(
"gcw.AccountRegister.delete.contents") );
992 msgBox-> setClosable(
true );
993 msgBox-> setMovable (
true );
996 auto rememberAlways = templt-> bindNew< Wt::WCheckBox >(
"rememberAlways" ,
TR(
"gcw.AccountRegister.delete.rem1" ) );
997 auto rememberSession = templt-> bindNew< Wt::WCheckBox >(
"rememberSession",
TR(
"gcw.AccountRegister.delete.rem2" ) );
998 auto pbCancel = templt-> bindNew< Wt::WPushButton >(
"cancel" ,
TR(
"gcw.AccountRegister.delete.cancel") );
999 auto pbDelete = templt-> bindNew< Wt::WPushButton >(
"delete" ,
TR(
"gcw.AccountRegister.delete.delete") );
1003 transMan.loadSplit( splitGuid );
1006 templt-> bindString(
"desc" , transMan.getDescription () );
1007 templt-> bindString(
"amount", transMan.getValueAsString() );
1009 pbCancel-> clicked().connect( msgBox, &Wt::WDialog::reject );
1010 pbDelete-> clicked().connect( msgBox, &Wt::WDialog::accept );
1016 clicked().connect( [rememberSession,rememberAlways]()
1018 rememberSession-> setDisabled( rememberAlways-> checkState() == Wt::CheckState::Checked );
1028 finished().connect( [
this,rememberSession,msgBox]( Wt::DialogCode _code )
1030 if( _code == Wt::DialogCode::Accepted )
1032 askThisSession = rememberSession-> checkState() == Wt::CheckState::Checked;
1037 removeChild( msgBox );
1056 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1064 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1072 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1080 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1089 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1097 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1105 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1113 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1121 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1129 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1137 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1145 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1153 if( _event.button() == Wt::MouseButton::Right )
1168 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.SortBy" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1169 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.FilterBy" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1170 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.RenamePage" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1172 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Duplicate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1182 if( !(
baseModel()-> isDeletable( _index )) )
1183 item-> setDisabled(
true );
1187 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.RemoveSplits" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1189 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Enter" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1190 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Cancel" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1192 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.ManageDocument" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1193 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.OpenDocument" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1195 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Jump" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1197 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.BlankTransaction" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1198 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.GoDate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1199 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.SplitTransaction" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1200 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.EditExchangeRate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1201 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Schedule" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1202 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Jump" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1204 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.AssignPayment" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1208 if( !
tableView()-> isSelected( _index ) )
1260 tableView()-> setColumnWidth ( 0,
"150px" );
1261 tableView()-> setHeaderAlignment( 0, Wt::AlignmentFlag::Right );
1262 tableView()-> setColumnAlignment( 0, Wt::AlignmentFlag::Right );
1265 tableView()-> setColumnWidth ( 1,
"50px" );
1266 tableView()-> setHeaderAlignment( 1, Wt::AlignmentFlag::Center );
1267 tableView()-> setColumnAlignment( 1, Wt::AlignmentFlag::Center );
1270 tableView()-> setColumnWidth ( 2,
"99%" );
1271 tableView()-> setHeaderAlignment( 2, Wt::AlignmentFlag::Left );
1272 tableView()-> setColumnAlignment( 2, Wt::AlignmentFlag::Left );
1275 tableView()-> setColumnWidth ( 3,
"150px" );
1276 tableView()-> setHeaderAlignment( 3, Wt::AlignmentFlag::Right );
1277 tableView()-> setColumnAlignment( 3, Wt::AlignmentFlag::Right );
1280 tableView()-> setColumnWidth ( 4,
"25px" );
1281 tableView()-> setHeaderAlignment( 4, Wt::AlignmentFlag::Center );
1282 tableView()-> setColumnAlignment( 4, Wt::AlignmentFlag::Center );
1285 tableView()-> setColumnWidth ( 5,
"100px" );
1286 tableView()-> setHeaderAlignment( 5, Wt::AlignmentFlag::Right );
1287 tableView()-> setColumnAlignment( 5, Wt::AlignmentFlag::Right );
1290 tableView()-> setColumnWidth ( 6,
"100px" );
1291 tableView()-> setHeaderAlignment( 6, Wt::AlignmentFlag::Right );
1292 tableView()-> setColumnAlignment( 6, Wt::AlignmentFlag::Right );
1295 tableView()-> setColumnWidth ( 7,
"100px" );
1296 tableView()-> setHeaderAlignment( 7, Wt::AlignmentFlag::Right );
1297 tableView()-> setColumnAlignment( 7, Wt::AlignmentFlag::Right );
1338 auto index =
baseModel()-> index( _row, 0 );
1342 for(
int column=0; column<
baseModel()-> columnCount(); column++ )
1344 auto index =
baseModel()-> index( _row, column );
1354 Wt::Json::Object jobj;
1361 fromJson(
const Wt::Json::Object & _jobj )->
bool
1372 std::cout << __FILE__ <<
":" << __LINE__ <<
" ::test::" << std::endl;
1374 std::cout << __FILE__ <<
":" << __LINE__ <<
" " <<
tableView()-> selectedIndexes().size() << std::endl;
1376 auto selectedIndex = *
tableView()-> selectedIndexes().begin();
1378 if( selectedIndex.isValid() )
1381 std::cout << __FILE__ <<
":" << __LINE__ <<
" " <<
tableView()-> selectedIndexes().size() << std::endl;
auto setFuture(GCW_NUMERIC _value=GCW_NUMERIC(0)) -> void
auto setProjected(GCW_NUMERIC _value=GCW_NUMERIC(0)) -> void
auto setRowCount(int _value=0) -> void
auto setCleared(GCW_NUMERIC _value=GCW_NUMERIC(0)) -> void
auto setReconciled(GCW_NUMERIC _value=GCW_NUMERIC(0)) -> void
auto setPresent(GCW_NUMERIC _value=GCW_NUMERIC(0)) -> void
auto on_goDate_triggered() -> void
auto baseModel() -> std::shared_ptr< BaseModel >
auto on_duplicate_triggered() -> void
auto on_renamePage_triggered() -> void
auto setReadOnly(bool _state=true) -> void
auto on_delete_triggered() -> void
Delete a Row.
auto editRow(int _row) -> void
auto on_editExchangeRate_triggered() -> void
auto on_removeSplits_triggered() -> void
auto toJson() const -> Wt::Json::Object
Create View Properties JSON Object.
auto tableView() -> GCW::Gui::TableView *
Table View.
auto fromJson(const Wt::Json::Object &_jobj) -> bool
Set View Properties from JSON Object.
auto statusBar() -> StatusBar *
AccountRegister(const std::string &_accountGuid="")
Constructor.
auto lastIndex() -> Wt::WModelIndex
auto on_jump_triggered() -> void
auto on_schedule_triggered() -> void
auto setAccountGuid(const std::string &_accountGuid) -> void
auto on_assignPayment_triggered() -> void
auto on_showPopup_triggered(const Wt::WModelIndex &_index, const Wt::WMouseEvent &_event) -> void
auto on_manageDocument_triggered() -> void
std::shared_ptr< BaseModel > m_baseModel
GCW::Gui::TableView * m_tableView
auto on_sortBy_triggered() -> void
auto deleteRow(int _row) -> void
auto on_filterBy_triggered() -> void
auto on_blankTransaction_triggered() -> void
std::string m_accountGuid
auto on_openDocument_triggered() -> void
std::shared_ptr< Wt::WBatchEditProxyModel > m_batchEditModel
auto on_enter_triggered() -> void
auto on_cancel_triggered() -> void
Wt::WPopupMenu m_popupMenu
auto on_splitTransaction_triggered() -> void
#define GCW_DATE_FORMAT_DISPLAY
#define GCW_NUMERIC
Internal Numeric Type.
std::string date_format()
Date Format Specifier.
DECIMAL::decimal_format decimal_format()
Decimal Format Specifier.
const Wt::WFormModel::Field name
const Wt::WFormModel::Field date
const Wt::WFormModel::Field id
auto get() -> GCW::Dbo::Prefrences::Item
std::string asString(Status _status)
Get Status as String.
auto toString(int _value) -> std::string
Convert Integer to String.