Fix bugs in account/category modification/deletion

Fix some strings
This commit is contained in:
Grégory Soutadé 2010-11-29 20:11:11 +01:00
parent c88c3b4836
commit 765483ff15
8 changed files with 188 additions and 151 deletions

Binary file not shown.

View File

@ -31,7 +31,7 @@ msgstr " - "
#: src/view/PreferencesPanel.cpp:676
#: src/view/PreferencesPanel.cpp:722
msgid " already exists"
msgstr " existe déjà "
msgstr " existe déjà"
#: src/view/SearchPanel.cpp:222
msgid " entries found"
@ -151,7 +151,7 @@ msgstr "Catégorie"
#: src/view/PreferencesPanel.cpp:657
#: src/view/PreferencesPanel.cpp:676
msgid "Category "
msgstr "Catégorie"
msgstr "La catégorie "
#: src/view/PreferencesPanel.cpp:77
msgid "Change Name"
@ -175,7 +175,7 @@ msgstr "Mode rapprochement"
#: src/view/PasswordDialog.cpp:46
msgid "Confirm password "
msgstr "Confirmer le mot de passe"
msgstr "Confirmer le mot de passe "
#: src/view/StatsPanel.cpp:130
#: src/view/AccountPanel.cpp:116
@ -359,7 +359,7 @@ msgstr "Il doit y avoir au moins un compte !"
#: src/view/AccountPanel.cpp:724
msgid "It must be at least one month !"
msgstr "Il doit rester au mois un mois"
msgstr "Il doit rester au moins un mois"
#: src/view/PreferencesPanel.cpp:79
msgid "Kill me"
@ -400,7 +400,7 @@ msgstr "Nouvel utilisateur"
#: src/view/PasswordDialog.cpp:41
msgid "New password "
msgstr "Nouveau mot de passe"
msgstr "Nouveau mot de passe "
#: src/model/Database.cpp:135
msgid ""
@ -430,11 +430,11 @@ msgstr "OK"
#: src/view/PasswordDialog.cpp:36
msgid "Old password "
msgstr "Ancien mot de passe"
msgstr "Ancien mot de passe "
#: src/controller/KissCount.cpp:359
msgid "Operating exepense"
msgstr "Frais de fonctionnement"
msgstr "Fonctionnement"
#: src/view/PreferencesPanel.cpp:62
msgid "Operation order"
@ -451,7 +451,7 @@ msgstr "Autres"
#: src/view/UsersDialog.cpp:43
msgid "Password "
msgstr "Mot de passe"
msgstr "Mot de passe "
#: src/view/PasswordDialog.cpp:84
msgid "Password changed"
@ -570,7 +570,7 @@ msgstr "Utilisateur"
#: src/view/UsersDialog.cpp:118
#: src/view/PreferencesPanel.cpp:722
msgid "User "
msgstr "Utilisateur"
msgstr "Utilisateur "
#: src/view/UsersDialog.cpp:30
msgid "Users"

View File

@ -155,9 +155,15 @@ void KissCount::SetAccountAmount(int month, int year, const wxString& accountId,
wxString KissCount::AddAccount(Account& ac)
{
wxDateTime curDate;
ac.id = _db->AddAccount(_user, ac);
_user->_accounts.push_back(ac);
curDate.SetToCurrent();
SetAccountAmount((int)curDate.GetMonth(), curDate.GetYear(), ac.id, 0.0);
return ac.id;
}

View File

@ -329,10 +329,15 @@ User* Database::LoadUser(const wxString& name)
category.forecolor = wxColour(set.GetAsString(wxT("forecolor")));
category.font = set.GetAsString(wxT("font"));
if (category.name != _("Fix"))
{
user->_categories.push_back(category);
user->_categoriesFonts.push_back(_kiss->ExtractFont(category.font));
}
else
{
user->_categories.insert(user->_categories.begin(), category);
user->_categoriesFonts.push_back(_kiss->ExtractFont(category.font));
user->_categoriesFonts.insert(user->_categoriesFonts.begin(), _kiss->ExtractFont(category.font));
}
}
set.Finalize();
@ -620,7 +625,7 @@ void Database::DeleteOperations(User* user, int month, int year)
req += wxT("', '") + it->id ;
}
req += wxT("')");
req += wxT(" OR user='") + user->_id + wxT("'");
req += wxT(" OR user='") + user->_id + wxT("')");
req += wxT(" AND year='") + wxString::Format(wxT("%d"), year) + wxT("'");
if (month != -1)
req += wxT(" AND month='") + wxString::Format(wxT("%d"), month) + wxT("'");

View File

@ -186,13 +186,13 @@ void AccountPanel::InitStatsGrid(User* user)
_statsGrid->SetCellValue(TOTAL_CREDIT, 0, _("Total Credit"));
_statsGrid->SetCellValue(TOTAL_DEBIT, 0, _("Total Debit"));
_statsGrid->AutoSizeColumn(0, false);
for(i=0; i<user->GetCategoriesNumber(); i++)
{
_statsGrid->SetCellValue(CATS_STATS+i, 0, _categories[i]);
_statsGrid->SetCellAlignment(CATS_STATS+i, 1, wxALIGN_RIGHT, wxALIGN_CENTRE);
}
_statsGrid->AutoSizeColumn(0, false);
font.SetWeight(wxFONTWEIGHT_BOLD);
_statsGrid->SetCellFont(CUR_CREDIT, 0, font);
_statsGrid->SetCellFont(CUR_DEBIT, 0, font);
@ -227,21 +227,30 @@ void AccountPanel::ChangeUser()
rootNode = _tree.AddRoot(wxT(""));
curDate.SetToCurrent();
for(it = ops.begin(); it != ops.end(); it++)
if (ops.size())
{
if ((int)it->first <= curDate.GetYear())
for(it = ops.begin(); it != ops.end(); it++)
{
curYear = it->first;
curNode = _tree.AppendItem(rootNode, wxString::Format(wxT("%d"), it->first));
if ((int)it->first <= curDate.GetYear())
{
curYear = it->first;
curNode = _tree.AppendItem(rootNode, wxString::Format(wxT("%d"), it->first));
}
else
_tree.AppendItem(rootNode, wxString::Format(wxT("%d"), it->first));
}
Fit();
if (curYear != -1)
{
_tree.SelectItem(curNode, true);
LoadYear(curYear);
}
else
_tree.AppendItem(rootNode, wxString::Format(wxT("%d"), it->first));
}
Fit();
if (curYear != -1)
else
{
_tree.SelectItem(curNode, true);
LoadYear(curYear);
curNode = _tree.AppendItem(rootNode, wxString::Format(wxT("%d"), curDate.GetYear()));
_tree.AppendItem(curNode, months[(int)curDate.GetYear()]);
Fit();
}
}
@ -719,7 +728,7 @@ void AccountPanel::OnMenuDelete(wxCommandEvent& event)
ops = _kiss->GetAllOperations();
if (ops.size() == 1 && ops[year].size() == 1)
if (ops.size() == 1 && (ops[year].size() == 1 || month == -1))
{
wxMessageBox(_("It must be at least one month !"), _("Error"), wxICON_ERROR | wxOK);
return;

View File

@ -111,7 +111,10 @@ GenerateDialog::GenerateDialog(KissCount* kiss, wxUI *parent, int month, int yea
_yearTo->Select(year-2000);
OnYearToChange(event);
if (_ops[year].size())
{
month = _ops[year][0];
_yearTo->Select(year-1999);
}
if (month == -1)
_monthTo->Select(0);

View File

@ -191,42 +191,54 @@ void PreferencesPanel::InitAccounts(User* user)
for (it = user->_accounts.begin(); it != user->_accounts.end(); it++, curLine++)
{
_accountsGrid->AppendRows();
_accountsGrid->SetCellValue(curLine, ACCOUNT_NAME, it->name);
if (it->shared)
_accountsGrid->SetCellValue(curLine, ACCOUNT_NUMBER, it->number + wxT("*"));
else
_accountsGrid->SetCellValue(curLine, ACCOUNT_NUMBER, it->number);
_accountsGrid->SetCellEditor(curLine, ACCOUNT_NUMBER, new wxGridCellStarEditor ());
_accountsGrid->SetCellRenderer(curLine, ACCOUNT_DEFAULT, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(curLine, ACCOUNT_DEFAULT, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(curLine, ACCOUNT_BLOCKED, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(curLine, ACCOUNT_BLOCKED, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(curLine, ACCOUNT_DELETE, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(curLine, ACCOUNT_DELETE, new wxGridCellBoolEditor ());
_accountsGrid->SetCellValue(curLine, ACCOUNT_DEFAULT, (it->_default)?wxT("1"):wxT("0"));
_accountsGrid->SetCellValue(curLine, ACCOUNT_BLOCKED, (it->blocked)?wxT("1"):wxT("0"));
_accountsGrid->SetCellAlignment(curLine, ACCOUNT_DEFAULT, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(curLine, ACCOUNT_BLOCKED, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(curLine, ACCOUNT_DELETE, wxALIGN_CENTRE, wxALIGN_CENTRE);
if (!it->is_owner)
{
_accountsGrid->SetReadOnly(curLine, ACCOUNT_NAME, true);
_accountsGrid->SetReadOnly(curLine, ACCOUNT_NUMBER, true);
_accountsGrid->SetReadOnly(curLine, ACCOUNT_DEFAULT, true);
_accountsGrid->SetReadOnly(curLine, ACCOUNT_BLOCKED, true);
}
AddAccount(curLine, *it);
}
_accountsGrid->AutoSizeColumns(true);
_accountsGrid->AppendRows();
account.id = wxT("0");
AddAccount(curLine, account);
}
_accountsGrid->SetReadOnly(curLine, ACCOUNT_DEFAULT, true);
_accountsGrid->SetReadOnly(curLine, ACCOUNT_BLOCKED, true);
_accountsGrid->SetReadOnly(curLine, ACCOUNT_DELETE, true);
void PreferencesPanel::AddAccount(int line, Account ac)
{
if (ac.id != wxT("0"))
{
_accountsGrid->SetCellValue(line, ACCOUNT_NAME, ac.name);
if (ac.shared)
_accountsGrid->SetCellValue(line, ACCOUNT_NUMBER, ac.number + wxT("*"));
else
_accountsGrid->SetCellValue(line, ACCOUNT_NUMBER, ac.number);
_accountsGrid->SetCellEditor(line, ACCOUNT_NUMBER, new wxGridCellStarEditor ());
_accountsGrid->SetCellRenderer(line, ACCOUNT_DEFAULT, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(line, ACCOUNT_DEFAULT, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(line, ACCOUNT_BLOCKED, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(line, ACCOUNT_BLOCKED, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(line, ACCOUNT_DELETE, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(line, ACCOUNT_DELETE, new wxGridCellBoolEditor ());
_accountsGrid->SetCellValue(line, ACCOUNT_DEFAULT, (ac._default)?wxT("1"):wxT("0"));
_accountsGrid->SetCellValue(line, ACCOUNT_BLOCKED, (ac.blocked)?wxT("1"):wxT("0"));
_accountsGrid->SetCellAlignment(line, ACCOUNT_DEFAULT, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(line, ACCOUNT_BLOCKED, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(line, ACCOUNT_DELETE, wxALIGN_CENTRE, wxALIGN_CENTRE);
if (!ac.is_owner)
{
_accountsGrid->SetReadOnly(line, ACCOUNT_NAME, true);
_accountsGrid->SetReadOnly(line, ACCOUNT_NUMBER, true);
_accountsGrid->SetReadOnly(line, ACCOUNT_DEFAULT, true);
_accountsGrid->SetReadOnly(line, ACCOUNT_BLOCKED, true);
}
}
else
{
_accountsGrid->SetReadOnly(line, ACCOUNT_DEFAULT, true);
_accountsGrid->SetReadOnly(line, ACCOUNT_BLOCKED, true);
_accountsGrid->SetReadOnly(line, ACCOUNT_DELETE, true);
_accountsGrid->AutoSizeColumns(true);
}
}
#define SET_ROW_COLOR(row, backcolor, forecolor) for(int i=0; i<NUMBER_COLS_CATEGORY; i++) \
@ -245,7 +257,8 @@ void PreferencesPanel::InitCategories(User* user)
std::vector<Category>::iterator it;
int curLine = 0;
DEFAULT_FONT(font);
Category cat;
_categoriesGrid->CreateGrid(0, NUMBER_COLS_CATEGORY);
_categoriesGrid->SetRowLabelSize(0);
_categoriesGrid->SetDefaultCellFont(font);
@ -259,41 +272,56 @@ void PreferencesPanel::InitCategories(User* user)
for (it=user->_categories.begin(); it!=user->_categories.end(); it++, curLine++)
{
_categoriesGrid->AppendRows();
_categoriesGrid->SetCellValue(curLine, CATEGORY_NAME, it->name);
SET_ROW_COLOR(curLine, it->backcolor, it->forecolor);
if (curLine)
{
_categoriesGrid->SetCellRenderer(curLine, CATEGORY_DELETE, new wxGridCellBoolRenderer ());
_categoriesGrid->SetCellEditor(curLine, CATEGORY_DELETE, new wxGridCellBoolEditor ());
}
_categoriesGrid->SetCellRenderer(curLine, CATEGORY_BACKGROUND_COLOR, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellRenderer(curLine, CATEGORY_FOREGROUND_COLOR, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellRenderer(curLine, CATEGORY_FONT, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellEditor(curLine, CATEGORY_BACKGROUND_COLOR, new wxGridCellButtonEditor (wxT("...")));
_categoriesGrid->SetCellEditor(curLine, CATEGORY_FOREGROUND_COLOR, new wxGridCellButtonEditor (wxT("...")));
_categoriesGrid->SetCellEditor(curLine, CATEGORY_FONT, new wxGridCellButtonEditor (wxT("...")));
if (it->font.Length())
{
wxFont font = user->GetCategoryFont(it->id);
SET_ROW_FONT(curLine, font);
}
_categoriesGrid->SetCellAlignment(curLine, CATEGORY_DELETE, wxALIGN_CENTRE, wxALIGN_CENTRE);
AddCategory(curLine, *it);
}
_categoriesGrid->SetReadOnly(0, CATEGORY_NAME, true);
_categoriesGrid->SetReadOnly(0, CATEGORY_DELETE, true);
_categoriesGrid->AutoSizeColumns(true);
cat.id = wxT("0");
_categoriesGrid->AppendRows();
_categoriesGrid->SetReadOnly(curLine, CATEGORY_BACKGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(curLine, CATEGORY_FOREGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(curLine, CATEGORY_FONT, true);
_categoriesGrid->SetReadOnly(curLine, CATEGORY_DELETE, true);
SET_ROW_COLOR(curLine, OWN_GREEN, *wxBLACK);
AddCategory(curLine, cat);
}
void PreferencesPanel::AddCategory(int line, Category cat)
{
User* user = _kiss->GetUser();
if (cat.id != wxT("0"))
{
_categoriesGrid->SetCellValue(line, CATEGORY_NAME, cat.name);
SET_ROW_COLOR(line, cat.backcolor, cat.forecolor);
if (line)
{
_categoriesGrid->SetCellRenderer(line, CATEGORY_DELETE, new wxGridCellBoolRenderer ());
_categoriesGrid->SetCellEditor(line, CATEGORY_DELETE, new wxGridCellBoolEditor ());
}
_categoriesGrid->SetCellRenderer(line, CATEGORY_BACKGROUND_COLOR, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellRenderer(line, CATEGORY_FOREGROUND_COLOR, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellRenderer(line, CATEGORY_FONT, new wxGridCellButtonRenderer (wxT("...")));
_categoriesGrid->SetCellEditor(line, CATEGORY_BACKGROUND_COLOR, new wxGridCellButtonEditor (wxT("...")));
_categoriesGrid->SetCellEditor(line, CATEGORY_FOREGROUND_COLOR, new wxGridCellButtonEditor (wxT("...")));
_categoriesGrid->SetCellEditor(line, CATEGORY_FONT, new wxGridCellButtonEditor (wxT("...")));
if (cat.font.Length())
{
wxFont font = user->GetCategoryFont(cat.id);
SET_ROW_FONT(line, font);
}
_categoriesGrid->SetCellAlignment(line, CATEGORY_DELETE, wxALIGN_CENTRE, wxALIGN_CENTRE);
}
else
{
_categoriesGrid->SetReadOnly(line, CATEGORY_BACKGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(line, CATEGORY_FOREGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(line, CATEGORY_FONT, true);
_categoriesGrid->SetReadOnly(line, CATEGORY_DELETE, true);
SET_ROW_COLOR(line, OWN_GREEN, *wxBLACK);
_categoriesGrid->AutoSizeColumns(true);
}
}
void PreferencesPanel::InitLanguage(User* user)
@ -362,24 +390,6 @@ void PreferencesPanel::OnAccountModified(wxGridEvent& event)
else
new_account.blocked = false;
if (col == ACCOUNT_DEFAULT)
{
for (i=0; i<user->GetAccountsNumber(); i++)
{
if (i != row)
{
account = user->_accounts[i];
if (account._default)
{
account._default = false;
_kiss->UpdateAccount(account);
_accountsGrid->SetCellValue(i, ACCOUNT_DEFAULT, wxT(""));
break;
}
}
}
}
// Account modification
if (user->GetAccountsNumber() && row < user->GetAccountsNumber())
{
@ -406,18 +416,48 @@ void PreferencesPanel::OnAccountModified(wxGridEvent& event)
_kiss->DeleteAccount(new_account);
}
if (user->_accounts.size() == 1)
{
user->_accounts[0]._default = true;
_kiss->UpdateAccount(user->_accounts[0]);
_accountsGrid->SetCellValue(0, ACCOUNT_DEFAULT, wxT("1"));
}
_wxUI->Layout();
inModification = false;
_wxUI->NeedReload();
return;
}
if (user->GetAccountId(new_account.name) != new_account.id)
if (col == ACCOUNT_DEFAULT)
{
wxMessageBox(_("Account ")+new_account.name+_(" already exists"), _("Error"), wxICON_ERROR | wxOK );
_accountsGrid->SetCellValue(row, ACCOUNT_NAME, user->_accounts[row].name);
inModification = false;
return ;
for (i=0; i<user->GetAccountsNumber(); i++)
{
if (i != row)
{
account = user->_accounts[i];
if (account._default)
{
account._default = false;
_kiss->UpdateAccount(account);
_accountsGrid->SetCellValue(i, ACCOUNT_DEFAULT, wxT(""));
break;
}
}
}
}
if (col == ACCOUNT_NAME)
{
value = user->GetAccountId(new_account.name);
if (value != wxT("0") && value != new_account.id)
{
wxMessageBox(_("Account ")+new_account.name+_(" already exists"), _("Error"), wxICON_ERROR | wxOK );
_accountsGrid->SetCellValue(row, ACCOUNT_NAME, user->_accounts[row].name);
inModification = false;
return ;
}
}
_kiss->UpdateAccount(new_account);
@ -441,34 +481,13 @@ void PreferencesPanel::OnAccountModified(wxGridEvent& event)
new_account.shared = false;
new_account.blocked = false;
_accountsGrid->SetCellRenderer(row, ACCOUNT_DEFAULT, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(row, ACCOUNT_DEFAULT, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(row, ACCOUNT_BLOCKED, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(row, ACCOUNT_BLOCKED, new wxGridCellFastBoolEditor ());
_accountsGrid->SetCellRenderer(row, ACCOUNT_DELETE, new wxGridCellBoolRenderer ());
_accountsGrid->SetCellEditor(row, ACCOUNT_DELETE, new wxGridCellBoolEditor ());
_accountsGrid->SetCellAlignment(row, ACCOUNT_DEFAULT, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(row, ACCOUNT_BLOCKED, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetCellAlignment(row, ACCOUNT_DELETE, wxALIGN_CENTRE, wxALIGN_CENTRE);
_accountsGrid->SetReadOnly(row, ACCOUNT_DEFAULT, false);
_accountsGrid->SetReadOnly(row, ACCOUNT_BLOCKED, false);
_accountsGrid->SetReadOnly(row, ACCOUNT_DELETE, false);
if (!user->GetAccountsNumber())
{
new_account._default = true;
_accountsGrid->SetCellValue(row, ACCOUNT_DEFAULT, wxT("1"));
}
_accountsGrid->AutoSizeColumns(true);
_accountsGrid->AppendRows();
_accountsGrid->SetReadOnly(row+1, ACCOUNT_DEFAULT, true);
_accountsGrid->SetReadOnly(row+1, ACCOUNT_BLOCKED, true);
_accountsGrid->SetReadOnly(row+1, ACCOUNT_DELETE, true);
AddAccount(row, new_account);
_kiss->AddAccount(new_account);
_accountsGrid->AppendRows();
new_account.id = wxT("0");
AddAccount(row, new_account);
}
_wxUI->Layout();
@ -552,7 +571,7 @@ void PreferencesPanel::OnCategoryModified(wxGridEvent& event)
int row = event.GetRow();
int col = event.GetCol();
static bool inModification = false ;
Category new_cat;
Category new_cat, cat_tmp;
if (inModification) return;
@ -652,7 +671,8 @@ void PreferencesPanel::OnCategoryModified(wxGridEvent& event)
return;
}
if (user->GetCategoryId(new_cat.name) != new_cat.id)
value = user->GetCategoryId(new_cat.name);
if (value != wxT("0") && value != new_cat.id)
{
wxMessageBox(_("Category ")+new_cat.name+_(" already exists"), _("Error"), wxICON_ERROR | wxOK );
_categoriesGrid->SetCellValue(row, CATEGORY_NAME, user->_categories[row].name);
@ -679,20 +699,11 @@ void PreferencesPanel::OnCategoryModified(wxGridEvent& event)
}
_kiss->AddCategory(new_cat);
_categoriesGrid->SetReadOnly(row, CATEGORY_BACKGROUND_COLOR, false);
_categoriesGrid->SetReadOnly(row, CATEGORY_FOREGROUND_COLOR, false);
_categoriesGrid->SetReadOnly(row, CATEGORY_FONT, false);
_categoriesGrid->SetReadOnly(row, CATEGORY_DELETE, false);
_categoriesGrid->SetCellRenderer(row, CATEGORY_DELETE, new wxGridCellBoolRenderer ());
_categoriesGrid->SetCellEditor(row, CATEGORY_DELETE, new wxGridCellBoolEditor ());
AddCategory(row, new_cat);
row++;
_categoriesGrid->AppendRows();
_categoriesGrid->SetReadOnly(row, CATEGORY_BACKGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(row, CATEGORY_FOREGROUND_COLOR, true);
_categoriesGrid->SetReadOnly(row, CATEGORY_FONT, true);
_categoriesGrid->SetReadOnly(row, CATEGORY_DELETE, true);
SET_ROW_COLOR(row, OWN_GREEN, *wxBLACK);
new_cat.id = wxT("0");
_categoriesGrid->AppendRows();
AddCategory(++row, new_cat);
}
_wxUI->Layout();

View File

@ -75,6 +75,9 @@ private:
void InitLanguage(User* user);
void InitOperationOrder(User* user);
void AddAccount(int line, Account ac);
void AddCategory(int line, Category cat);
DECLARE_EVENT_TABLE();
};