Big changes of project structure

This commit is contained in:
2015-06-20 13:46:30 +03:00
parent 71641535db
commit aa1a2101ed
13 changed files with 617 additions and 515 deletions

185
wxCrossGen/fmain.cpp Normal file
View File

@@ -0,0 +1,185 @@
#include "fmain.hpp"
void MainFrame::procDict(wxString path){
_dict.clear();
_allWords.clear();
_transType.clear();
readDict(path, _dict);
generateAllWords(_dict, _allWords, _transType);
_isDictLoaded = true;
}
void MainFrame::onOpenGridClick(wxCommandEvent &event) {
wxFileDialog dlgOpen(this, _("Open crossword file"), wxEmptyString, wxEmptyString,
_("Files of crossword (*.cross)|*.cross"), wxFD_OPEN|wxFD_FILE_MUST_EXIST);
if ( dlgOpen.ShowModal() == wxID_CANCEL )
return;
wxFileInputStream input_stream(dlgOpen.GetPath());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open file ") + dlgOpen.GetPath(), _("Error"), wxICON_ERROR );
return;
}
tPath->SetValue(dlgOpen.GetPath());
// Clearing
_grid.clear();
_ques.clear();
_ans.clear();
tOutput->Clear();
readGrid(tPath->GetValue(), _grid);
SetGridImage(_grid);
}
void MainFrame::SetGridImage(GridType &grid, size_t w) {
size_t h = static_cast<float>(w) / grid.size() * grid.at(0).size();
wxBitmap bmp(w, h);
wxMemoryDC dc;
dc.SelectObject(bmp);
dc.Clear();
std::vector<WordInfo> winfos;
generateWordInfo(grid, winfos);
float sq_w = static_cast<int>(static_cast<float>(w) / grid.size());
float sq_h = static_cast<int>(static_cast<float>(h) / grid.at(0).size());
wxFont cur_f = dc.GetFont();
cur_f.SetPointSize(sq_h/3);
dc.SetBrush(wxBrush(wxColour(217,231,200)));
dc.SetFont(cur_f);
for (size_t i = 0; i < grid.size(); ++i){
for (size_t j = 0; j < grid.at(0).size(); ++j){
if (grid.at(i).at(j) == CELL_CLEAR)
dc.DrawRectangle(sq_w*i,sq_h*j,sq_w+1,sq_h+1);
}
}
for (size_t i = 0; i < winfos.size(); ++i) {
dc.DrawText(wxString::Format(wxT("%d"),winfos.at(i).ind), sq_w*winfos.at(i).x, sq_h*winfos.at(i).y);
}
if ( _ans.size() > 0 ) {
using std::vector;
vector< vector< bool > > usedCells(
grid.size(),
vector<bool>(grid.at(0).size(), false)
);
cur_f = dc.GetFont();
cur_f.SetPointSize(sq_h*0.6);
dc.SetFont(cur_f);
for ( size_t i = 0; i < winfos.size(); ++i ) {
if ( winfos.at(i).direct == true ) {
for (size_t j = 0; j < winfos.at(i).len; ++j)
if ( !usedCells.at(winfos.at(i).x+j).at(winfos.at(i).y) ) {
dc.DrawText(
_ans.at(i).at(j),
sq_w*(winfos.at(i).x+j) + sq_w*0.24,
sq_h*winfos.at(i).y
);
usedCells.at(winfos.at(i).x+j).at(winfos.at(i).y) = true;
}
} else {
for (size_t j = 0; j < winfos.at(i).len; ++j)
if ( !usedCells.at(winfos.at(i).x).at(winfos.at(i).y+j) ) {
dc.DrawText(
_ans.at(i).at(j),
sq_w*winfos.at(i).x + sq_w*0.24,
sq_h*(winfos.at(i).y+j)
);
usedCells.at(winfos.at(i).x).at(winfos.at(i).y+j) = true;
}
}
}
}
bPreview->SetBitmap(bmp);
bPreview->Show();
dc.SelectObject( wxNullBitmap );
this->Refresh();
this->GetSizer()->RecalcSizes();
}
void MainFrame::onGenerateClick(wxCommandEvent &event) {
auto config = wxConfigBase::Get();
if ( !_isDictLoaded ) {
procDict(config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH));
}
std::vector<wxString> words_out;
if ( _dict.empty() ){
wxMessageBox( _("Crossword grid isn't loaded!"), _("Info"), wxICON_INFORMATION);
return;
}
try {
generateCross(_grid, _allWords, _transType, words_out);
_ans = words_out;
std::vector<WordInfo> winfos;
generateWordInfo(_grid, winfos);
_ques.clear();
for (size_t i = 0; i < words_out.size(); ++i)
_ques.push_back(_dict[words_out.at(i)]);
tOutput->Clear();
FilledCrossword t_cross;
t_cross.words = winfos;
t_cross.grid = _grid;
t_cross.ans = _ans;
t_cross.ques = _ques;
tOutput->AppendText(getQuesString(t_cross));
if (winfos.size() == 0)
throw 42;
SetGridImage(_grid);
}
catch ( ... ){
tOutput->Clear();
wxMessageBox( _("Cannot generate crossword"), _("Error"), wxICON_ERROR );
}
this->Refresh();
}
void MainFrame::onExportClick(wxCommandEvent& event) {
if ( _grid.size() == 0 ) {
wxMessageBox( _("Grid isn't loaded now"), _("Info"), wxICON_INFORMATION );
return;
}
wxFileDialog dlgSave(this, _("Exporting crossword"), wxEmptyString, wxEmptyString,
_("txt files (*.txt)|*.txt"), wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
if (dlgSave.ShowModal() == wxID_CANCEL)
return;
FilledCrossword t_cross;
t_cross.grid = _grid;
t_cross.ans = _ans;
t_cross.ques = _ques;
generateWordInfo(_grid, t_cross.words);
if ( !exportToFile(t_cross, dlgSave.GetPath()) ){
wxLogError(wxT("Cannot save current contents in file '%s'."), dlgSave.GetPath().GetData());
return;
}
wxLogDebug(wxT("Exporting to ") + dlgSave.GetPath() + wxT(" is complete"));
}
void MainFrame::onSettingsClick( wxCommandEvent& event ){
SettingsDialog fSettings(this);
auto *config = wxConfigBase::Get();
fSettings.setDictPath(config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH));
if ( fSettings.ShowModal() == wxID_OK ){
if ( config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH) != fSettings.getDictPath() ) {
config->Write(SETTINGS_KEY_DICT_PATH, fSettings.getDictPath());
procDict(fSettings.getDictPath());
}
}
}

View File

@@ -1,5 +1,6 @@
#ifndef WXGUI_HPP
#define WXGUI_HPP
#ifndef FMAIN_HPP
#define FMAIN_HPP
#include <ctime>
#include <map>
@@ -7,13 +8,15 @@
#include <wx/image.h>
#include <wx/intl.h>
#include <wx/aboutdlg.h>
#include <wx/fileconf.h>
#include "fbgui/fbgui.h"
#include "settingsconsts.hpp"
#include "crossgen.hpp"
#include "crossexport.hpp"
#include "fsettings.hpp"
#ifndef APP_CATALOG
#define APP_CATALOG "app" // replace with the appropriate catalog name
#endif
@@ -59,4 +62,4 @@ public:
}
};
#endif // WXGUI_HPP
#endif // FMAIN_HPP

25
wxCrossGen/fsettings.cpp Normal file
View File

@@ -0,0 +1,25 @@
#include "fsettings.hpp"
void SettingsDialog::onDictPathClick(wxCommandEvent& event) {
wxFileDialog dlgOpen(this, _("Open dictionary file"), wxEmptyString, wxEmptyString,
_("Files of dictionaris (*.txt)|*.txt"), wxFD_OPEN|wxFD_FILE_MUST_EXIST);
if ( dlgOpen.ShowModal() == wxID_CANCEL )
return;
wxFileInputStream input_stream(dlgOpen.GetPath());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open dictionary file ") + dlgOpen.GetPath(), _("Error"), wxICON_ERROR);
return;
}
tDictPath->SetValue(dlgOpen.GetPath());
}
void SettingsDialog::onOkClick(wxCommandEvent& event) {
wxFileInputStream input_stream(tDictPath->GetValue());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open dictionary file ") + tDictPath->GetValue(), _("Error"), wxICON_ERROR);
return;
}
EndModal(wxID_OK);
}

View File

@@ -2,6 +2,7 @@
#define FSETTINGS_HPP
#include <wx/wx.h>
#include <wx/wfstream.h>
#include "fbgui/fbgui.h"
@@ -23,28 +24,4 @@ class SettingsDialog: public VSettingsDialog {
}
};
void SettingsDialog::onDictPathClick(wxCommandEvent& event) {
wxFileDialog dlgOpen(this, _("Open dictionary file"), wxEmptyString, wxEmptyString,
_("Files of dictionaris (*.txt)|*.txt"), wxFD_OPEN|wxFD_FILE_MUST_EXIST);
if ( dlgOpen.ShowModal() == wxID_CANCEL )
return;
wxFileInputStream input_stream(dlgOpen.GetPath());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open dictionary file ") + dlgOpen.GetPath(), _("Error"), wxICON_ERROR);
return;
}
tDictPath->SetValue(dlgOpen.GetPath());
}
void SettingsDialog::onOkClick(wxCommandEvent& event) {
wxFileInputStream input_stream(tDictPath->GetValue());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open dictionary file ") + tDictPath->GetValue(), _("Error"), wxICON_ERROR);
return;
}
EndModal(wxID_OK);
}
#endif
#endif // FSETTINGS_HPP

View File

@@ -8,195 +8,14 @@
#include <wx/wfstream.h>
#include <wx/textfile.h>
#include <wx/fileconf.h>
#include "wxgui.hpp"
#include "fsettings.hpp"
#include "fmain.hpp"
#include "crossgen.hpp"
#include "crossexport.hpp"
#include "settingsconsts.hpp"
void MainFrame::procDict(wxString path){
_dict.clear();
_allWords.clear();
_transType.clear();
readDict(path, _dict);
generateAllWords(_dict, _allWords, _transType);
_isDictLoaded = true;
}
void MainFrame::onOpenGridClick(wxCommandEvent &event) {
wxFileDialog dlgOpen(this, _("Open crossword file"), wxEmptyString, wxEmptyString,
_("Files of crossword (*.cross)|*.cross"), wxFD_OPEN|wxFD_FILE_MUST_EXIST);
if ( dlgOpen.ShowModal() == wxID_CANCEL )
return;
wxFileInputStream input_stream(dlgOpen.GetPath());
if ( !input_stream.IsOk() ) {
wxMessageBox(_("Cannot open file ") + dlgOpen.GetPath(), _("Error"), wxICON_ERROR );
return;
}
tPath->SetValue(dlgOpen.GetPath());
// Clearing
_grid.clear();
_ques.clear();
_ans.clear();
tOutput->Clear();
readGrid(tPath->GetValue(), _grid);
SetGridImage(_grid);
}
void MainFrame::SetGridImage(GridType &grid, size_t w) {
size_t h = static_cast<float>(w) / grid.size() * grid.at(0).size();
wxBitmap bmp(w, h);
wxMemoryDC dc;
dc.SelectObject(bmp);
dc.Clear();
std::vector<WordInfo> winfos;
generateWordInfo(grid, winfos);
float sq_w = static_cast<int>(static_cast<float>(w) / grid.size());
float sq_h = static_cast<int>(static_cast<float>(h) / grid.at(0).size());
wxFont cur_f = dc.GetFont();
cur_f.SetPointSize(sq_h/3);
dc.SetBrush(wxBrush(wxColour(217,231,200)));
dc.SetFont(cur_f);
for (size_t i = 0; i < grid.size(); ++i){
for (size_t j = 0; j < grid.at(0).size(); ++j){
if (grid.at(i).at(j) == CELL_CLEAR)
dc.DrawRectangle(sq_w*i,sq_h*j,sq_w+1,sq_h+1);
}
}
for (size_t i = 0; i < winfos.size(); ++i) {
dc.DrawText(wxString::Format(wxT("%d"),winfos.at(i).ind), sq_w*winfos.at(i).x, sq_h*winfos.at(i).y);
}
if ( _ans.size() > 0 ) {
using std::vector;
vector< vector< bool > > usedCells(
grid.size(),
vector<bool>(grid.at(0).size(), false)
);
cur_f = dc.GetFont();
cur_f.SetPointSize(sq_h*0.6);
dc.SetFont(cur_f);
for ( size_t i = 0; i < winfos.size(); ++i ) {
if ( winfos.at(i).direct == true ) {
for (size_t j = 0; j < winfos.at(i).len; ++j)
if ( !usedCells.at(winfos.at(i).x+j).at(winfos.at(i).y) ) {
dc.DrawText(
_ans.at(i).at(j),
sq_w*(winfos.at(i).x+j) + sq_w*0.24,
sq_h*winfos.at(i).y
);
usedCells.at(winfos.at(i).x+j).at(winfos.at(i).y) = true;
}
} else {
for (size_t j = 0; j < winfos.at(i).len; ++j)
if ( !usedCells.at(winfos.at(i).x).at(winfos.at(i).y+j) ) {
dc.DrawText(
_ans.at(i).at(j),
sq_w*winfos.at(i).x + sq_w*0.24,
sq_h*(winfos.at(i).y+j)
);
usedCells.at(winfos.at(i).x).at(winfos.at(i).y+j) = true;
}
}
}
}
bPreview->SetBitmap(bmp);
bPreview->Show();
dc.SelectObject( wxNullBitmap );
this->Refresh();
this->GetSizer()->RecalcSizes();
}
void MainFrame::onGenerateClick(wxCommandEvent &event) {
auto config = wxConfigBase::Get();
if ( !_isDictLoaded ) {
procDict(config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH));
}
std::vector<wxString> words_out;
if ( _dict.size() == 0 ){
wxMessageBox( _("Crossword grid isn't loaded!"), _("Info"), wxICON_INFORMATION);
return;
}
try {
generateCross(_grid, _allWords, _transType, words_out);
_ans = words_out;
std::vector<WordInfo> winfos;
generateWordInfo(_grid, winfos);
_ques.clear();
for (size_t i = 0; i < words_out.size(); ++i)
_ques.push_back(_dict[words_out.at(i)]);
tOutput->Clear();
FilledCrossword t_cross;
t_cross.words = winfos;
t_cross.grid = _grid;
t_cross.ans = _ans;
t_cross.ques = _ques;
tOutput->AppendText(getQuesString(t_cross));
if (winfos.size() == 0)
throw 42;
SetGridImage(_grid);
}
catch ( ... ){
tOutput->Clear();
wxMessageBox( _("Cannot generate crossword"), _("Error"), wxICON_ERROR );
}
this->Refresh();
}
void MainFrame::onExportClick(wxCommandEvent& event) {
if ( _grid.size() == 0 ) {
wxMessageBox( _("Grid isn't loaded now"), _("Info"), wxICON_INFORMATION );
return;
}
wxFileDialog dlgSave(this, _("Exporting crossword"), wxEmptyString, wxEmptyString,
_("txt files (*.txt)|*.txt"), wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
if (dlgSave.ShowModal() == wxID_CANCEL)
return;
FilledCrossword t_cross;
t_cross.grid = _grid;
t_cross.ans = _ans;
t_cross.ques = _ques;
generateWordInfo(_grid, t_cross.words);
if ( !exportToFile(t_cross, dlgSave.GetPath()) ){
wxLogError(wxT("Cannot save current contents in file '%s'."), dlgSave.GetPath().GetData());
return;
}
wxLogDebug(wxT("Exporting to ") + dlgSave.GetPath() + wxT(" is complete"));
}
void MainFrame::onSettingsClick( wxCommandEvent& event ){
SettingsDialog fSettings(this);
auto *config = wxConfigBase::Get();
fSettings.setDictPath(config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH));
if ( fSettings.ShowModal() == wxID_OK ){
if ( config->Read(SETTINGS_KEY_DICT_PATH, SETTINGS_DEFAULT_DICTPATH) != fSettings.getDictPath() ) {
config->Write(SETTINGS_KEY_DICT_PATH, fSettings.getDictPath());
procDict(fSettings.getDictPath());
}
}
}
class MyApp: public wxApp {
public:
bool OnInit();

View File

@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Aleksey Lobanov
Date :=19/06/15
Date :=20/06/15
CodeLitePath :="/home/alex/.codelite"
LinkerName :=/usr/bin/g++-4.8
SharedObjectLinkerName :=/usr/bin/g++-4.8 -shared -fPIC
@@ -60,7 +60,7 @@ AS := /usr/bin/as
## User defined environment variables
##
CodeLiteDir:=/usr/share/codelite
Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/fbgui_fbgui.cpp$(ObjectSuffix)
Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/fmain.cpp$(ObjectSuffix) $(IntermediateDirectory)/fsettings.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_crossexport.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_crossgen.cpp$(ObjectSuffix) $(IntermediateDirectory)/fbgui_fbgui.cpp$(ObjectSuffix)
@@ -95,6 +95,38 @@ $(IntermediateDirectory)/main.cpp$(DependSuffix): main.cpp
$(IntermediateDirectory)/main.cpp$(PreprocessSuffix): main.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix) "main.cpp"
$(IntermediateDirectory)/fmain.cpp$(ObjectSuffix): fmain.cpp $(IntermediateDirectory)/fmain.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/data/Sync/SyncProjects/CrossGen/wxCrossGen/fmain.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/fmain.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/fmain.cpp$(DependSuffix): fmain.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/fmain.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/fmain.cpp$(DependSuffix) -MM "fmain.cpp"
$(IntermediateDirectory)/fmain.cpp$(PreprocessSuffix): fmain.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/fmain.cpp$(PreprocessSuffix) "fmain.cpp"
$(IntermediateDirectory)/fsettings.cpp$(ObjectSuffix): fsettings.cpp $(IntermediateDirectory)/fsettings.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/data/Sync/SyncProjects/CrossGen/wxCrossGen/fsettings.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/fsettings.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/fsettings.cpp$(DependSuffix): fsettings.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/fsettings.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/fsettings.cpp$(DependSuffix) -MM "fsettings.cpp"
$(IntermediateDirectory)/fsettings.cpp$(PreprocessSuffix): fsettings.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/fsettings.cpp$(PreprocessSuffix) "fsettings.cpp"
$(IntermediateDirectory)/src_crossexport.cpp$(ObjectSuffix): ../src/crossexport.cpp $(IntermediateDirectory)/src_crossexport.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/data/Sync/SyncProjects/CrossGen/src/crossexport.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_crossexport.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/src_crossexport.cpp$(DependSuffix): ../src/crossexport.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/src_crossexport.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/src_crossexport.cpp$(DependSuffix) -MM "../src/crossexport.cpp"
$(IntermediateDirectory)/src_crossexport.cpp$(PreprocessSuffix): ../src/crossexport.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_crossexport.cpp$(PreprocessSuffix) "../src/crossexport.cpp"
$(IntermediateDirectory)/src_crossgen.cpp$(ObjectSuffix): ../src/crossgen.cpp $(IntermediateDirectory)/src_crossgen.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/data/Sync/SyncProjects/CrossGen/src/crossgen.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_crossgen.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/src_crossgen.cpp$(DependSuffix): ../src/crossgen.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/src_crossgen.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/src_crossgen.cpp$(DependSuffix) -MM "../src/crossgen.cpp"
$(IntermediateDirectory)/src_crossgen.cpp$(PreprocessSuffix): ../src/crossgen.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_crossgen.cpp$(PreprocessSuffix) "../src/crossgen.cpp"
$(IntermediateDirectory)/fbgui_fbgui.cpp$(ObjectSuffix): fbgui/fbgui.cpp $(IntermediateDirectory)/fbgui_fbgui.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/data/Sync/SyncProjects/CrossGen/wxCrossGen/fbgui/fbgui.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/fbgui_fbgui.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/fbgui_fbgui.cpp$(DependSuffix): fbgui/fbgui.cpp

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<CodeLite_Project Name="wxCrossGen" InternalType="GUI">
<Plugins>
<Plugin Name="CppCheck"/>
<Plugin Name="CMakePlugin">
<![CDATA[[{
"name": "Debug",
@@ -27,14 +28,18 @@
<Dependencies/>
<VirtualDirectory Name="src">
<File Name="main.cpp"/>
<File Name="wxgui.hpp"/>
<File Name="fsettings.hpp"/>
<File Name="settingsconsts.hpp"/>
<File Name="fmain.hpp"/>
<File Name="fmain.cpp"/>
<File Name="fsettings.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="Shared">
<File Name="../src/crossgen.hpp"/>
<File Name="../src/crossbasetypes.hpp"/>
<File Name="../src/crossexport.hpp"/>
<File Name="../src/crossexport.cpp"/>
<File Name="../src/crossgen.cpp"/>
</VirtualDirectory>
<Settings Type="Executable">
<GlobalSettings>

View File

@@ -1 +1 @@
../Release/main.cpp.o ../Release/fbgui_fbgui.cpp.o
../Release/main.cpp.o ../Release/fmain.cpp.o ../Release/fsettings.cpp.o ../Release/src_crossexport.cpp.o ../Release/src_crossgen.cpp.o ../Release/fbgui_fbgui.cpp.o