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"
24 setText_( Wt::WText * _widget,
GCW_NUMERIC _value )->
void
30 setText_( Wt::WText * _widget,
int _value )->
void
32 _widget-> setText( std::to_string( _value ) );
38 :
public Wt::WItemDelegate
45 const Wt::WModelIndex & _index,
46 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
47 )
const-> std::unique_ptr< Wt::WWidget >;
49 virtual auto editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const-> Wt::cpp17::any
override;
57 const Wt::WModelIndex & _index,
58 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
59 )
const-> std::unique_ptr< Wt::WWidget >
61 std::cout << __FILE__ <<
":" << __LINE__ <<
" HeaderDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
63 auto retVal = std::make_unique< Wt::WDateEdit >();
65 return std::move( retVal );
71 editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const
73 auto dateEdit =
dynamic_cast< Wt::WDateEdit*
>( editor );
75 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
77 return dateEdit-> text();
84 :
public Wt::WItemDelegate
93 std::unique_ptr< Wt::WWidget > createEditor
95 const Wt::WModelIndex & _index,
96 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
99 virtual Wt::cpp17::any editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const override;
100 void setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const;
101 void setModelData (
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const;
103 void doCloseEditor( Wt::WDateEdit * _dateEdit,
bool save )
const;
104 void doTabAction( Wt::WKeyEvent _keyEvent )
const;
106 mutable Wt::WDateEdit * m_dateEdit =
nullptr;
110 std::unique_ptr< Wt::WWidget >
114 const Wt::WModelIndex & _index,
115 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
119 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
"," << _index.column() << std::endl;
127 auto retVal = std::make_unique< Wt::WContainerWidget >();
129 retVal-> setSelectable(
true );
136 Wt::WDate::fromString
148 auto dateEdit = std::make_unique< Wt::WDateEdit >();
149 m_dateEdit = dateEdit.get();
151 dateEdit-> setDate(
date );
152 dateEdit-> enterPressed ().connect( [&](){ doCloseEditor( dateEdit.get(),
true ); });
153 dateEdit-> escapePressed ().connect( [&](){ doCloseEditor( dateEdit.get(),
false ); });
154 dateEdit-> keyWentDown ().connect( [&]( Wt::WKeyEvent _keyEvent ){ doTabAction( _keyEvent ); });
160 retVal-> setLayout( std::make_unique< Wt::WHBoxLayout >() );
161 retVal-> layout()-> setContentsMargins( 1,1,1,1 );
162 retVal-> layout()-> addWidget( std::move( dateEdit ) );
166 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::createEditor<end>" << std::endl;
175 doCloseEditor( Wt::WDateEdit * _dateEdit,
bool save )
const
178 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::doCloseEditor()" << std::endl;
181 closeEditor().emit( _dateEdit, save );
187 doTabAction( Wt::WKeyEvent _keyEvent )
const
190 std::cout << __FILE__ <<
":" << __LINE__ <<
" DateDelegate::doTabAction()" << std::endl;
197 editState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index )
const
199 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( _editor );
201 auto de =
dynamic_cast< Wt::WDateEdit*
>( cw-> children().at(0) );
204 std::cout << __FILE__ <<
":" << __LINE__
205 <<
" Wt::cpp17::any DateDelegate::editState()"
206 <<
" row:" << _index.row()
207 <<
" col:" << _index.column()
208 <<
" id:" << cw->
id()
209 <<
" oname:" << cw-> objectName()
210 <<
" chlds:" << cw-> children().size()
211 <<
" typid:" <<
typeid( cw-> children().at(0) ).
name()
213 <<
" mdted:" << m_dateEdit
214 <<
" txt:" << m_dateEdit-> text()
220 return m_dateEdit-> text();
226 setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const
231 <<
" " << _editor <<
" " <<
typeid( _editor ).
name()
232 <<
" " << m_dateEdit <<
" " <<
typeid( m_dateEdit ).
name()
242 setModelData(
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const
245 std::cout << __FILE__ <<
":" << __LINE__
247 <<
" " << _index.row()
248 <<
" " << _index.column()
254 Wt::WItemDelegate::setModelData( _editState, _model, _index );
263 class ReconcileDelegate
264 :
public Wt::WItemDelegate
268 std::unique_ptr< Wt::WWidget > createEditor
270 const Wt::WModelIndex & _index,
271 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
274 virtual Wt::cpp17::any editState( Wt::WWidget *editor,
const Wt::WModelIndex &index )
const override;
275 void setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const;
276 void setModelData (
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const;
278 void doCloseEditor( Wt::WLineEdit * _editor,
bool save )
const;
279 void doTabAction( Wt::WKeyEvent _keyEvent )
const;
283 std::unique_ptr< Wt::WWidget >
287 const Wt::WModelIndex & _index,
288 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
292 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconcileDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
300 auto retVal = std::make_unique< Wt::WContainerWidget >();
301 retVal-> setSelectable(
true );
307 auto reconciled =
Wt::asString( _index.data( Wt::ItemDataRole::Edit ) );
315 auto reconciledEdit = std::make_unique< Wt::WLineEdit >();
316 reconciledEdit-> setReadOnly(
true );
317 reconciledEdit-> setText( reconciled );
318 reconciledEdit-> enterPressed ().connect( [&](){ doCloseEditor( reconciledEdit.get(),
true ); });
319 reconciledEdit-> escapePressed ().connect( [&](){ doCloseEditor( reconciledEdit.get(),
false ); });
320 reconciledEdit-> keyWentDown ().connect( [&]( Wt::WKeyEvent _keyEvent ){ doTabAction( _keyEvent ); });
326 retVal-> setLayout( std::make_unique< Wt::WHBoxLayout >() );
327 retVal-> layout()-> setContentsMargins( 0,0,0,0 );
328 retVal-> layout()-> addWidget( std::move( reconciledEdit ) );
336 doCloseEditor( Wt::WLineEdit * _editor,
bool save )
const
339 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconciledDelegate::doCloseEditor()" << std::endl;
342 closeEditor().emit( _editor, save );
345 m_editorClosed.emit( m_row, m_col );
354 doTabAction( Wt::WKeyEvent _keyEvent )
const
357 std::cout << __FILE__ <<
":" << __LINE__ <<
" ReconciledDelegate::doTabAction()" << std::endl;
364 editState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index )
const
366 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( _editor );
368 auto ed =
dynamic_cast< Wt::WLineEdit*
>( cw-> children().at(0) );
371 std::cout << __FILE__ <<
":" << __LINE__
372 <<
" Wt::cpp17::any ReconcileDelegate::editState()"
373 <<
" r:" << _index.row()
374 <<
" c:" << _index.column()
375 <<
" i:" << cw->
id()
376 <<
" n:" << cw-> objectName()
377 <<
" s:" << cw-> children().size()
378 <<
" t:" <<
typeid( cw-> children().at(0) ).
name()
391 setEditState( Wt::WWidget * _editor,
const Wt::WModelIndex & _index,
const Wt::cpp17::any & _value )
const
402 setModelData(
const Wt::cpp17::any & _editState, Wt::WAbstractItemModel * _model,
const Wt::WModelIndex & _index )
const
405 std::cout << __FILE__ <<
":" << __LINE__
406 <<
" ReconciledDelegate::setModelData()"
407 <<
" " << _index.row()
408 <<
" " << _index.column()
422 class SuggestionDelegate
423 :
public Wt::WItemDelegate
427 std::unique_ptr< Wt::WWidget > createEditor
429 const Wt::WModelIndex & _index,
430 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
435 std::unique_ptr< Wt::WWidget >
439 const Wt::WModelIndex & _index,
440 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
444 std::cout << __FILE__ <<
":" << __LINE__ <<
" SuggestionDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
447 auto retVal = Wt::WItemDelegate::createEditor( _index, _flags );
448 auto cw =
dynamic_cast< Wt::WContainerWidget*
>( retVal.get() );
449 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
>( cw-> widget(0) );
454 Wt::WSuggestionPopup::Options popupOptions =
464 auto popup = retVal-> addChild( std::make_unique< Wt::WSuggestionPopup >( popupOptions ) );
465 popup-> forEdit( lineEdit );
472 for(
auto item : baseModel-> suggestionsFromColumn( _index.column() ) )
473 popup-> addSuggestion( item, item );
483 class AccountDelegate
484 :
public Wt::WItemDelegate
488 std::unique_ptr< Wt::WWidget > createEditor
490 const Wt::WModelIndex & _index,
491 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
496 std::unique_ptr< Wt::WWidget >
500 const Wt::WModelIndex & _index,
501 Wt::WFlags< Wt::ViewItemRenderFlag > _flags
505 std::cout << __FILE__ <<
":" << __LINE__ <<
" AccountDelegate::" << __FUNCTION__ <<
"(): " << _index.row() <<
" " << _index.column() << std::endl;
508 auto retVal = Wt::WItemDelegate::createEditor ( _index, _flags );
509 auto cw =
dynamic_cast< Wt::WContainerWidget*
> ( retVal.get() );
510 auto lineEdit =
dynamic_cast< Wt::WLineEdit*
> ( cw-> widget(0) );
513 Wt::WSuggestionPopup::Options popupOptions =
524 auto popup = retVal-> addChild( std::make_unique< Wt::WSuggestionPopup >( popupOptions ) );
525 popup-> forEdit( lineEdit, Wt::PopupTrigger::Editing );
526 popup-> setAttributeValue(
"style",
"height:250px;overflow:scroll" );
529 std::set< std::string > items;
530 Wt::Dbo::Transaction t(
GCW::app()-> gnucashew_session() );
534 for(
auto item : items )
535 popup-> addSuggestion( item );
548 addStyleClass(
"StatusBar" );
550 auto lw = setLayout( std::make_unique< Wt::WHBoxLayout >() );
552 lw-> setSpacing( 0 );
554 auto _addWidget = [&](
const std::string & _key,
int _spacing = 0 )
556 lw-> addWidget( std::make_unique< Wt::WText >(
TR(
"gcw.AccountRegister.StatusBar." + _key ) +
":" ) );
557 auto retVal = lw-> addWidget( std::make_unique< Wt::WText >(), _spacing );
558 retVal-> setAttributeValue(
"style",
"margin-right:10px" );
592 addStyleClass(
"AccountRegister" );
599 auto lw = setLayout( std::make_unique< Wt::WVBoxLayout >() );
600 auto w = std::make_unique< GCW::Gui::TableView >();
602 lw-> addWidget( std::move( w ), 1 );
609 m_statusBar = lw-> addWidget( std::make_unique< StatusBar >() );
615 tableView()-> setSortingEnabled (
false );
616 tableView()-> setAlternatingRowColors (
true );
617 tableView()-> setSelectionBehavior ( Wt::SelectionBehavior::Rows );
618 tableView()-> setSelectionMode ( Wt::SelectionMode::Single );
620 tableView()-> setEditTriggers ( Wt::EditTrigger::SingleClicked );
622 tableView()-> setEditOptions ( Wt::EditOption::MultipleEditors | Wt::EditOption::LeaveEditorsOpen );
623 tableView()-> setHeaderItemDelegate ( std::make_shared< HeaderDelegate >() );
624 tableView()-> setAttributeValue (
"oncontextmenu",
"event.cancelBubble=true;event.returnValue=false;return false;" );
632 tableView()-> setItemDelegateForColumn ( 0, std::make_shared< DateDelegate >() );
633 tableView()-> setItemDelegateForColumn ( 1, std::make_shared< SuggestionDelegate >() );
634 tableView()-> setItemDelegateForColumn ( 2, std::make_shared< SuggestionDelegate >() );
635 tableView()-> setItemDelegateForColumn ( 3, std::make_shared< AccountDelegate >() );
636 tableView()-> setItemDelegateForColumn ( 4, std::make_shared< ReconcileDelegate >() );
649 editorCreated().connect( [&](
int _row,
int _column)
651 std::cout << __FILE__ <<
":" << __LINE__
653 <<
" col:" << _column
656 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
658 std::cout << __FILE__ <<
":" << __LINE__
663 tableView()-> itemWidget(
tableView()-> model()-> index( _row, column ) )-> addStyleClass(
"active" );
669 editorClosed().connect( [&](
int _row,
int _column )
671 std::cout << __FILE__ <<
":" << __LINE__
673 <<
" col:" << _column
676 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
678 std::cout << __FILE__ <<
":" << __LINE__
683 tableView()-> itemWidget(
tableView()-> model()-> index( _row, column ) )-> removeStyleClass(
"active" );
692 tableView()-> headerClicked().connect( [=](
int col, Wt::WMouseEvent event )
695 if(
tableView()-> selectedIndexes().size() == 0 )
700 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << col << std::endl;
725 selectionChanged().connect( [=]()
727 std::cout << __FILE__ <<
":" << __LINE__ <<
" selectionChanged" << std::endl;
731 #ifdef CLICKED_FIRES_FROM_THE_TABLEVIEW_HANDLECLICK_EVENT_HANDLER_MIGHT_NOT_BE_USEFUL_HERE
737 clicked().connect( [=]( Wt::WModelIndex _index, Wt::WMouseEvent _event )
739 std::cout << __FILE__ <<
":" << __LINE__ <<
" clicked"
740 <<
" row:" << _index.row()
741 <<
" col:" << _index.column()
749 for(
int column = 0; column< 7; column++ )
751 std::cout << __FILE__ <<
":" << __LINE__ <<
" edit:" << column << std::endl;
753 auto index =
tableView()-> model()-> index( _index.row(), column );
760 std::cout << __FILE__ <<
":" << __LINE__ <<
" already editing " << std::endl;
767 #ifdef KEYPRESSED_ONLY_FIRES_WHEN_EDITORS_ARE_NOT_OPEN
769 keyPressed().connect( [=]( Wt::WKeyEvent _event )
771 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _event.charCode() << std::endl;
777 clicked().connect( [=]( Wt::WModelIndex _index, Wt::WMouseEvent _event )
780 std::cout << __FILE__ <<
":" << __LINE__ <<
" clicked"
781 <<
" row:" << _index.row()
782 <<
" col:" << _index.column()
792 std::cout << __FILE__ <<
":" << __LINE__ <<
" unselect:" << m_clickedRow << std::endl;
794 for( int column = 0; column< tableView()-> model()-> columnCount(); column++ )
797 itemWidget( tableView()-> model()-> index( m_clickedRow, column ) )->
798 removeStyleClass(
"active" );
815 m_clickedRow = _index.row();
816 m_clickedCol = _index.column();
817 editRow( _index.row() );
821 for(
int column = 0; column<
tableView()-> model()-> columnCount(); column++ )
823 std::cout << __FILE__ <<
":" << __LINE__ <<
" select:" <<
m_clickedRow << std::endl;
826 addStyleClass(
"active" );
831 std::cout << __FILE__ <<
":" << __LINE__
832 <<
" " << Wt::WApplication::instance()-> theme()-> activeClass()
852 goneDirty().connect( [&]( Wt::WModelIndex _index )
854 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _index.row() << std::endl;
857 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _index.row() << std::endl;
867 auto splitGuid =
baseModel()-> getSplitGuid( _row );
869 transMan.loadSplit( splitGuid );
870 transMan.deleteTransaction();
880 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
888 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
896 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
904 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
919 static bool askThisSession =
true;
925 if( askThisSession || askForever )
931 auto msgBox = addChild( std::make_unique< Wt::WDialog >(
TR(
"gcw.AccountRegister.delete.title") ) );
932 auto templt = msgBox-> contents()-> addNew< Wt::WTemplate >(
TR(
"gcw.AccountRegister.delete.contents") );
933 msgBox-> setClosable(
true );
934 msgBox-> setMovable (
true );
937 auto rememberAlways = templt-> bindNew< Wt::WCheckBox >(
"rememberAlways" ,
TR(
"gcw.AccountRegister.delete.rem1" ) );
938 auto rememberSession = templt-> bindNew< Wt::WCheckBox >(
"rememberSession",
TR(
"gcw.AccountRegister.delete.rem2" ) );
939 auto pbCancel = templt-> bindNew< Wt::WPushButton >(
"cancel" ,
TR(
"gcw.AccountRegister.delete.cancel") );
940 auto pbDelete = templt-> bindNew< Wt::WPushButton >(
"delete" ,
TR(
"gcw.AccountRegister.delete.delete") );
944 transMan.loadSplit( splitGuid );
947 templt-> bindString(
"desc" , transMan.getDescription () );
948 templt-> bindString(
"amount", transMan.getValueAsString() );
950 pbCancel-> clicked().connect( msgBox, &Wt::WDialog::reject );
951 pbDelete-> clicked().connect( msgBox, &Wt::WDialog::accept );
957 clicked().connect( [rememberSession,rememberAlways]()
959 rememberSession-> setDisabled( rememberAlways-> checkState() == Wt::CheckState::Checked );
969 finished().connect( [
this,rememberSession,msgBox]( Wt::DialogCode _code )
971 if( _code == Wt::DialogCode::Accepted )
973 askThisSession = rememberSession-> checkState() == Wt::CheckState::Checked;
978 removeChild( msgBox );
997 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1005 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1013 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1021 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1030 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1038 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1046 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1054 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1062 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1070 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1078 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1086 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << std::endl;
1094 if( _event.button() == Wt::MouseButton::Right )
1109 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.SortBy" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1110 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.FilterBy" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1111 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.RenamePage" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1113 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Duplicate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1123 if( !(
baseModel()-> isDeletable( _index )) )
1124 item-> setDisabled(
true );
1128 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.RemoveSplits" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1130 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Enter" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1131 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Cancel" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1133 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.ManageDocument" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1134 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.OpenDocument" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1136 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Jump" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1138 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.BlankTransaction" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1139 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.GoDate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1140 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.SplitTransaction" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1141 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.EditExchangeRate" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1142 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Schedule" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1143 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.Jump" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1145 m_popupMenu.addItem(
TR(
"gcw.AccountRegister.Popup.AssignPayment" ), std::make_unique< Wt::WText >() )-> setDisabled(
true );
1149 if( !
tableView()-> isSelected( _index ) )
1201 tableView()-> setColumnWidth ( 0,
"150px" );
1202 tableView()-> setHeaderAlignment( 0, Wt::AlignmentFlag::Right );
1203 tableView()-> setColumnAlignment( 0, Wt::AlignmentFlag::Right );
1206 tableView()-> setColumnWidth ( 1,
"50px" );
1207 tableView()-> setHeaderAlignment( 1, Wt::AlignmentFlag::Center );
1208 tableView()-> setColumnAlignment( 1, Wt::AlignmentFlag::Center );
1211 tableView()-> setColumnWidth ( 2,
"99%" );
1212 tableView()-> setHeaderAlignment( 2, Wt::AlignmentFlag::Left );
1213 tableView()-> setColumnAlignment( 2, Wt::AlignmentFlag::Left );
1216 tableView()-> setColumnWidth ( 3,
"150px" );
1217 tableView()-> setHeaderAlignment( 3, Wt::AlignmentFlag::Right );
1218 tableView()-> setColumnAlignment( 3, Wt::AlignmentFlag::Right );
1221 tableView()-> setColumnWidth ( 4,
"25px" );
1222 tableView()-> setHeaderAlignment( 4, Wt::AlignmentFlag::Center );
1223 tableView()-> setColumnAlignment( 4, Wt::AlignmentFlag::Center );
1226 tableView()-> setColumnWidth ( 5,
"100px" );
1227 tableView()-> setHeaderAlignment( 5, Wt::AlignmentFlag::Right );
1228 tableView()-> setColumnAlignment( 5, Wt::AlignmentFlag::Right );
1231 tableView()-> setColumnWidth ( 6,
"100px" );
1232 tableView()-> setHeaderAlignment( 6, Wt::AlignmentFlag::Right );
1233 tableView()-> setColumnAlignment( 6, Wt::AlignmentFlag::Right );
1236 tableView()-> setColumnWidth ( 7,
"100px" );
1237 tableView()-> setHeaderAlignment( 7, Wt::AlignmentFlag::Right );
1238 tableView()-> setColumnAlignment( 7, Wt::AlignmentFlag::Right );
1279 auto index =
baseModel()-> index( _row, 0 );
1283 for(
int column=0; column<
baseModel()-> columnCount(); column++ )
1285 auto index =
baseModel()-> index( _row, column );
1295 Wt::Json::Object jobj;
1302 fromJson(
const Wt::Json::Object & _jobj )->
bool
1313 std::cout << __FILE__ <<
":" << __LINE__ <<
" ::test::" << std::endl;
1315 std::cout << __FILE__ <<
":" << __LINE__ <<
" " <<
tableView()-> selectedIndexes().size() << std::endl;
1317 auto selectedIndex = *
tableView()-> selectedIndexes().begin();
1319 if( selectedIndex.isValid() )
1322 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 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 guid
auto activeAccounts() -> Item::Vector
Load accounts as; if( !hidden() && !placeHolder() )
auto fullName(const std::string &_guid) -> std::string
Account Fullname via GUID.
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.