26#ifndef PERSONALFINANCE_MAINWINDOW_H
27#define PERSONALFINANCE_MAINWINDOW_H
41#include "../include/Account.h"
42#include "../include/formulas.h"
44#include <wx/listctrl.h>
45#include <wx/stattext.h>
48#include <wx/wfstream.h>
49#include <wx/filedlg.h>
50#include <wx/filepicker.h>
51#include <nlohmann/json.hpp>
54#define TestFrm_STYLE wxCAPTION | wxSYSTEM_MENU | wxMINIMIZE_BOX | wxCLOSE_BOX
64 DECLARE_EVENT_TABLE();
75 const wxString &title,
76 const wxPoint &pos = wxDefaultPosition,
77 const wxSize &size = wxDefaultSize,
78 long style = wxDEFAULT_FRAME_STYLE,
79 const wxString &name = wxFrameNameStr);
233 std::map<string, Account> accountMap;
236 wxPanel *LoadOptionsPanel;
237 wxButton *ExitButton;
238 wxButton *EnterButton;
239 wxStaticText *TitleText2;
241 wxButton *NextPageButtonExistingAcc;
243 wxStaticText *TitleText;
245 wxTextCtrl *MainEditBox;
246 wxButton *CreateNewAccountBtn;
247 wxButton *LoadSaveDataBtn;
249 wxFileDialog *ChooseFileDialog;
250 wxPanel *ExistingAccountsPanel;
251 wxSingleChoiceDialog *ChooseAccount;
252 wxArrayString arrOfAccs;
254 wxButton *SubmitAccountInfo;
256 wxPanel *CreateAccountPanel;
258 wxTextCtrl *EnterFileNameTextCtrl;
259 wxTextCtrl *EnterNameAcctTextCtrl;
260 wxTextCtrl *EnterBalanceTextCtrl;
262 wxDirPickerCtrl *InitialFileSaveDir;
267 wxPanel *MainOptionsPanel;
269 wxButton *ExitBtnMainPanel;
270 wxButton *SwitchAccountsBtn;
271 wxButton *CreateNewAccBtn;
272 wxButton *UpdateAccountBtn;
273 wxButton *ViewAccountBtn;
274 wxStaticText *AccountHomeTitle;
275 wxStaticText *AccountNameHomeTitle;
278 bool canUpdateGrid =
true;
279 wxPanel *ViewAccountPanel;
280 wxGrid *TransactionsGrid;
282 wxStaticBox *IncomeHistoryBox;
283 wxStaticBox *TransactionsBox;
284 wxStaticText *AccName;
285 wxStaticText *AccBalance;
288 string *transRecurring;
292 wxButton *GoBackViewBtn;
295 wxPanel *UpdateAccountPanel;
296 wxStaticText *UpdateAccTitleText;
297 wxButton *ChangeAccNameBtn;
298 wxButton *UpdateBalanceBtn;
299 wxButton *UpdateTransactionsButton;
300 wxButton *ReturnToHomeBtn;
301 wxStaticText *Title_UpdateAcc;
302 wxTextEntryDialog *EnterNewNameDialog;
303 wxTextEntryDialog *EnterNewBalanceDialog;
304 wxTextEntryDialog *EnterExpenseName;
305 wxTextEntryDialog *EnterExpensePrice;
306 wxTextEntryDialog *EnterExpenseDate;
307 wxTextEntryDialog *EnterExpenseRecurring;
308 wxTextEntryDialog *CreateAcc_NAME;
309 wxTextEntryDialog *CreateAcc_BAL;
313 wxButton *AccHomeFromToolsBtn;
315 wxButton *LoanCalculatorBtn;
316 wxTextEntryDialog *LoanCalculatorAmt;
317 wxTextEntryDialog *LoanCalculatorInterest;
318 wxTextEntryDialog *LoanCalculatorTerm;
319 wxMessageDialog *LoanCalculatorAns;
321 wxButton *CreditCardBtn;
322 wxTextEntryDialog *CreditCardBalance;
323 wxTextEntryDialog *CreditCardPayment;
324 wxTextEntryDialog *CreditCardInterest;
325 wxMessageDialog *CreditCardAns;
327 wxButton *DoubleInvestmentBtn;
328 wxTextEntryDialog *DoubleInvestmentRate;
329 wxMessageDialog *DoubleInvestmentAns;
331 wxButton *LeverageRatioBtn;
332 wxTextEntryDialog *LeverageRatioDebts;
333 wxMessageDialog *LeverageRatioAns;
335 wxButton *AvgGrowthRateBtn;
336 wxTextEntryDialog *AvgGrowthInitVal;
337 wxTextEntryDialog *AvgGrowthFinalVal;
338 wxTextEntryDialog *AvgGrowthYears;
339 wxMessageDialog *AvgGrowthAns;
341 wxButton *NowOrLaterBtn;
342 wxTextEntryDialog *NowOrLaterPrice;
343 wxTextEntryDialog *NowOrLaterInterest;
344 wxTextEntryDialog *NowOrLaterPayments;
345 wxMessageDialog *NowOrLaterAns;
347 wxButton *ViewCashFlowBtn;
348 wxMessageDialog *CashFlowDialog;
350 wxButton *AddIncomeBtn;
351 wxTextEntryDialog *AddIncomeIncome;
352 wxTextEntryDialog *AddIncomeDate;
353 wxMessageDialog *AddIncomeAns;
355 wxStaticText *ToolsText;
365 void loadAccountData(nlohmann::json &j,
bool &fileFound);
367 void loadAccountData(nlohmann::json &j);
374 wxArrayString generateCurrentAccountsList(nlohmann::json &data);
382 void generateAccountMapFromJSON(std::map<string, Account> &accMap, nlohmann::json data);
384 Account fromJSON(nlohmann::json &j,
const std::string &nameOf);
393 void fromJSON(
const nlohmann::json &j,
Account &acc,
const string &nameOf);
400 void toJSON(nlohmann::json &j, std::map<string, Account> accs);
407 void saveInit(nlohmann::json &j);
414 void saveData(std::map<string, Account> accounts);
419 void OnClose(wxCloseEvent &event);
424 void CreateGUIControls();
429 void initializeAccountGrid();
@ BTN_NOWORLATER
Definition: MainWindow.h:493
@ BTN_HOMEFROMVIEW
Definition: MainWindow.h:475
@ BTN_UPDATEBALANCE
Definition: MainWindow.h:482
@ ID_CREATESAVEBTN
Definition: MainWindow.h:444
@ TEXT_FILENAME
Definition: MainWindow.h:452
@ ID_MAINOPTIONSPANEL
Definition: MainWindow.h:455
@ TEXT_ACCTBALANCE
Definition: MainWindow.h:451
@ ID_VIEWACCPANEL
Definition: MainWindow.h:468
@ MENU_SaveAs
Definition: MainWindow.h:438
@ ID_EXISTINGACCOUNTSPANEL
Definition: MainWindow.h:446
@ BTN_AVGGROWTHRATE
Definition: MainWindow.h:492
@ ID_INCOMEHISTORYBOX
Definition: MainWindow.h:471
@ TEXT_ACCOUNTNAMEHOMETITLE
Definition: MainWindow.h:465
@ ID_TRANSACTIONSBOX
Definition: MainWindow.h:472
@ BTN_VIEWCASHFLOW
Definition: MainWindow.h:494
@ BTN_EXITMAINPANEL
Definition: MainWindow.h:459
@ ID_TRANSACTIONSV
Definition: MainWindow.h:470
@ ID_INCOMELISTV
Definition: MainWindow.h:469
@ BTN_VIEWACCBTN
Definition: MainWindow.h:463
@ MENU_Open
Definition: MainWindow.h:436
@ TEXT_NAMEACCT
Definition: MainWindow.h:450
@ TEXT_Main
Definition: MainWindow.h:434
@ BTN_LEVERAGERATIOBTN
Definition: MainWindow.h:491
@ TEXT_TOOLSTEXT
Definition: MainWindow.h:496
@ BTN_GOACCHOME
Definition: MainWindow.h:476
@ ID_CURRBALANCE
Definition: MainWindow.h:474
@ MENU_Quit
Definition: MainWindow.h:439
@ BTN_RETURNHOMEFROMUPDATEACC
Definition: MainWindow.h:485
@ ID_FOUNDACCOUNTCHOICES
Definition: MainWindow.h:447
@ BTN_UPDATEACCBTN
Definition: MainWindow.h:462
@ ID_LOADSAVEBTN
Definition: MainWindow.h:445
@ BTN_UPDATETRANS
Definition: MainWindow.h:483
@ BTN_ADDINCOME
Definition: MainWindow.h:495
@ ID_ACCOUNTSPANEL
Definition: MainWindow.h:440
@ BTN_CREATENEWACCBTN
Definition: MainWindow.h:461
@ BTN_UPDATENAME
Definition: MainWindow.h:481
@ MENU_New
Definition: MainWindow.h:435
@ TEXT_UPDATETITLETXT
Definition: MainWindow.h:480
@ ID_UPDATEACCPANEL
Definition: MainWindow.h:479
@ BTN_CREDITCARDBTN
Definition: MainWindow.h:489
@ BTN_SWITCHACCBTN
Definition: MainWindow.h:460
@ ID_ENTERBUTTON
Definition: MainWindow.h:441
@ MENU_Save
Definition: MainWindow.h:437
@ ID_TITLEPANEL
Definition: MainWindow.h:443
@ ID_CREATEACCTPANEL
Definition: MainWindow.h:449
@ BTN_TOOLSBTN
Definition: MainWindow.h:458
@ ID_NEXTPAGECHOOSEACCBTN
Definition: MainWindow.h:448
@ ID_CURRACCNAME
Definition: MainWindow.h:473
@ BTN_SUBMITACCINFO
Definition: MainWindow.h:453
@ BTN_LOANCALCULATOR
Definition: MainWindow.h:488
@ ID_TITLETEXT
Definition: MainWindow.h:442
@ TEXT_ACCOUNTHOMETITLE
Definition: MainWindow.h:464
@ BTN_DOUBLEINVESTMENTBTN
Definition: MainWindow.h:490
@ DIRP_SAVELOC
Definition: MainWindow.h:454
@ BTN_CREATENEWACC
Definition: MainWindow.h:484
The Account class is used to perform various operations on an Account object.
Definition: Account.h:41
The GUI class.
Definition: MainWindow.h:61
void OnCreateNewAccount(wxCommandEvent &event)
Creates a new account.
void OnLoanCalculatorClick(wxCommandEvent &event)
void OnLeverageRatioClick(wxCommandEvent &event)
void OnCreditCardClick(wxCommandEvent &event)
void OnGoToAccHome(wxCommandEvent &event)
Set current panel to the Account Home Panel.
void OnUpdateName(wxCommandEvent &event)
Creates a text dialog that allows the user to set the name of the current account.
void setPathName(wxString path)
Sets the name of the path defined by the user's input.
void OnSwitchAccount(wxCommandEvent &event)
Allows the user to switch the account currently being used.
void EnterButtonClick(wxCommandEvent &event)
Event when the Enter Button is clicked.
void UseExistingAcctClick(wxCommandEvent &event)
Event when the Existing Account Button is pressed.
void OnAccountSelected(wxCommandEvent &event)
On the Account Selected Event.
void OnNowOrLater(wxCommandEvent &event)
void OnUpdateTransactions(wxCommandEvent &event)
Creates a text dialog that allows the user to enter a new transaction.
void OnSaveFileAs(wxCommandEvent &event)
Save file as.
void OnUpdateAccClick(wxCommandEvent &event)
Allows the user to update the current account.
void OnOpenFile(wxCommandEvent &event)
Opening a file.
void OnDoubleInvestmentClick(wxCommandEvent &event)
void OnSaveFile(wxCommandEvent &event)
Save file.
void OnViewAccountClick(wxCommandEvent &event)
On the View Account Button Click.
void ExitButtonClick(wxCommandEvent &event)
Event when the Exit Button is pressed.
void OnViewCashFlow(wxCommandEvent &event)
void OnHomeFromViewPanel(wxCommandEvent &event)
void CreateNewSaveDataClick(wxCommandEvent &event)
Event when the Create New Save Data button is clicked.
void OnToolsBtnClick(wxCommandEvent &event)
wxString getPathName()
Returns the name of the path.
void OnQuit(wxCommandEvent &event)
Quits the application.
void OnAccInfoSubmit(wxCommandEvent &event)
Event when the Submit button is pressed.
MainWindow(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE, const wxString &name=wxFrameNameStr)
Constructor inherited from wxWindow.
void OnAverageGrowthClick(wxCommandEvent &event)
void OnNewFile(wxCommandEvent &event)
Opens a file.
void OnAddIncome(wxCommandEvent &event)
void OnUpdateBalance(wxCommandEvent &event)
Creates a text dialog that allows the user to update the account balance.