Structure changes, some bug fixing.

Now tOutput is clearing after loading new crossword. Generating string with questions and grid is two different functions. Some refactoring
This commit is contained in:
2015-06-17 17:52:49 +03:00
parent fd35fc64a6
commit d511837691
2 changed files with 37 additions and 24 deletions

View File

@@ -18,42 +18,54 @@ void fillCross(FilledCrossword &cross){
} }
} }
void exportToString(const FilledCrossword &cross, wxString &str_out, wxChar space = wxT('-')){ wxString getGridString(const FilledCrossword &cross, wxChar space = wxT('-')){
const wxString LINE_END = wxTextFile::GetEOL(); const wxString LINE_END = wxTextFile::GetEOL();
wxString t_string;
FilledCrossword t_cross(cross); FilledCrossword t_cross(cross);
if ( t_cross.ans.size() != 0 ) { if ( t_cross.ans.size() != 0 ) {
fillCross(t_cross); fillCross(t_cross);
} }
for (size_t i = 0; i < t_cross.grid.at(0).size(); ++i){ for (size_t i = 0; i < t_cross.grid.at(0).size(); ++i){
wxString cur_line;
for (size_t j = 0; j < t_cross.grid.size(); ++j){ for (size_t j = 0; j < t_cross.grid.size(); ++j){
if ( t_cross.grid.at(j).at(i) == CELL_BORDER ) if ( t_cross.grid.at(j).at(i) == CELL_BORDER )
cur_line += space; t_string += space;
else else
cur_line += t_cross.grid.at(j).at(i); t_string += t_cross.grid.at(j).at(i);
} }
cur_line += LINE_END; t_string += LINE_END;
str_out += cur_line;
} }
return t_string;
}
wxString getQuesString(const FilledCrossword &cross){
const wxString LINE_END = wxTextFile::GetEOL();
wxString t_string;
if ( cross.ques.size() != 0 ) { // == print questions if ( cross.ques.size() != 0 ) { // == print questions
str_out += _("Vertical words:") + LINE_END; t_string += _("Vertical words:") + LINE_END;
for (size_t i = 0; i < cross.words.size(); ++i){ for (size_t i = 0; i < cross.words.size(); ++i){
if (cross.words.at(i).direct == false) if (cross.words.at(i).direct == false)
str_out += wxString::Format(wxT("%d. "), cross.words.at(i).ind) t_string += wxString::Format(wxT("%d. "), cross.words.at(i).ind)
+ cross.ques.at(i) + LINE_END; + cross.ques.at(i) + LINE_END;
} }
str_out += _("Horisontal words:") + LINE_END; t_string += _("Horisontal words:") + LINE_END;
for (size_t i = 0; i < cross.words.size(); ++i){ for (size_t i = 0; i < cross.words.size(); ++i){
if (cross.words.at(i).direct == true) if (cross.words.at(i).direct == true)
str_out += wxString::Format(wxT("%d. "), cross.words.at(i).ind) t_string += wxString::Format(wxT("%d. "), cross.words.at(i).ind)
+ cross.ques.at(i) + LINE_END; + cross.ques.at(i) + LINE_END;
} }
} }
return t_string;
}
void exportToString(const FilledCrossword &cross, wxString &str_out, wxChar space = wxT('-')){
str_out += getGridString(cross, space) + getQuesString(cross);
} }
bool exportToFile(const FilledCrossword &cross, const wxString path){ bool exportToFile(const FilledCrossword &cross, const wxString path){

View File

@@ -27,7 +27,15 @@ void MainFrame::onOpenGridClick(wxCommandEvent &event) {
return; return;
} }
tPath->SetValue(dlgOpen.GetPath()); tPath->SetValue(dlgOpen.GetPath());
// Clearing
_grid.clear();
_ques.clear();
_ans.clear();
tOutput->Clear();
readGrid(tPath->GetValue(), _grid); readGrid(tPath->GetValue(), _grid);
SetGridImage(_grid); SetGridImage(_grid);
} }
@@ -129,21 +137,14 @@ void MainFrame::onGenerateClick(wxCommandEvent &event) {
tOutput->Clear(); tOutput->Clear();
tOutput->AppendText(_("Vertical words:\n")); FilledCrossword t_cross;
t_cross.words = winfos;
t_cross.grid = _grid;
t_cross.ans = _ans;
t_cross.ques = _ques;
for (size_t i = 0; i < words_out.size(); ++i){ tOutput->AppendText(getQuesString(t_cross));
if (winfos.at(i).direct == false)
tOutput->AppendText(wxString::Format(wxT("%d. "), winfos.at(i).ind)
+ _ques.at(i) + wxT("\n"));
}
tOutput->AppendText(_("Horisontal words:\n"));
for (size_t i = 0; i < words_out.size(); ++i){
if (winfos.at(i).direct == true)
tOutput->AppendText(wxString::Format(wxT("%d. "), winfos.at(i).ind)
+ _ques.at(i) + wxT("\n"));
}
if (winfos.size() == 0) if (winfos.size() == 0)
throw 42; throw 42;
SetGridImage(_grid); SetGridImage(_grid);