Changeset bc73093 in git


Ignore:
Timestamp:
25/07/10 16:34:00 (9 years ago)
Author:
Olly Betts <olly@…>
Branches:
add-show-splays, line_contents, master, stereo, svn/github/master, svn/origin/master, svn/tags/1.1.14, svn/tags/1.1.15, svn/tags/1.1.16, svn/tags/1.2.0, svn/tags/1.2.1, svn/tags/1.2.2, svn/tags/1.2.3, svn/tags/1.2.4, svn/tags/1.2.5, svn/trunk, travis-osx
Children:
fb5887c
Parents:
b0c416c
Message:

src/mainfrm.cc,src/mainfrm.h: Clean up code which sorts out loading
a file (and processing it first if necessary).

git-svn-id: file:///home/survex-svn/survex/trunk@3488 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • ChangeLog

    rb0c416c rbc73093  
     1Sun Jul 25 15:32:42 GMT 2010  Olly Betts <olly@survex.com>
     2
     3        * src/mainfrm.cc,src/mainfrm.h: Clean up code which sorts out loading
     4          a file (and processing it first if necessary).
     5
    16Sun Jul 25 07:20:05 GMT 2010  Olly Betts <olly@survex.com>
    27
  • src/mainfrm.cc

    rb0c416c rbc73093  
    967967}
    968968
    969 bool MainFrm::LoadData(const wxString& file_, wxString prefix)
    970 {
    971     wxString file(file_);
     969bool MainFrm::LoadData(const wxString& file, wxString prefix)
     970{
    972971    // Load survey data from file, centre the dataset around the origin,
    973972    // and prepare the data for drawing.
     
    977976    timer.Start();
    978977#endif
    979     wxString filename_used;
    980 
    981     // Check if this is an unprocessed survey data file.
    982     if (file.length() > 4 && file[file.length() - 4] == '.') {
    983         wxString ext = file.substr(file.length() - 3, 3);
    984         if (strcasecmp(ext.char_str(), "svx") == 0 ||
    985             strcasecmp(ext.char_str(), "dat") == 0 ||
    986             strcasecmp(ext.char_str(), "mak") == 0) {
    987             if (!ProcessSVXFile(file)) return false;
    988             filename_used = file;
    989             char * base_fnm = base_from_fnm(file.char_str());
    990             char * fnm_3d = add_ext(base_fnm, "3d");
    991             file = wxString(fnm_3d, wxConvUTF8);
    992             osfree(fnm_3d);
    993             osfree(base_fnm);
    994         }
    995     }
    996 
    997     // Load the survey data.
     978
     979    // Load the processed survey data.
    998980    img* survey = img_open_survey(file.char_str(), prefix.char_str());
    999981    if (!survey) {
     
    1003985    }
    1004986
    1005     if (!filename_used.empty()) {
    1006         m_File = filename_used;
    1007     } else {
    1008         m_File = wxString(survey->filename_opened, wxConvUTF8);
    1009     }
    1010987    m_IsExtendedElevation = survey->is_extended_elevation;
    1011988
     
    16161593}
    16171594
     1595void MainFrm::AddToFileHistory(const wxString & file)
     1596{
     1597    if (wxIsAbsolutePath(file)) {
     1598        m_history.AddFileToHistory(file);
     1599    } else {
     1600        wxString abs = wxGetCwd();
     1601        abs += wxCONFIG_PATH_SEPARATOR;
     1602        abs += file;
     1603        m_history.AddFileToHistory(abs);
     1604    }
     1605    wxConfigBase *b = wxConfigBase::Get();
     1606    m_history.Save(*b);
     1607    b->Flush();
     1608}
     1609
    16181610void MainFrm::OpenFile(const wxString& file, wxString survey)
    16191611{
    16201612    wxBusyCursor hourglass;
    1621     wxString old_file = m_File;
    1622     if (LoadData(file, survey)) {
    1623         if (wxIsAbsolutePath(m_File)) {
    1624             m_history.AddFileToHistory(m_File);
    1625         } else {
    1626             wxString abs = wxGetCwd();
    1627             abs += wxCONFIG_PATH_SEPARATOR;
    1628             abs += m_File;
    1629             m_history.AddFileToHistory(abs);
    1630         }
    1631         wxConfigBase *b = wxConfigBase::Get();
    1632         m_history.Save(*b);
    1633         b->Flush();
    1634 
    1635         int x;
    1636         int y;
    1637         GetClientSize(&x, &y);
    1638         if (x < 600)
    1639             x /= 3;
    1640         else if (x < 1000)
    1641             x = 200;
    1642         else
    1643             x /= 5;
    1644 
    1645         m_Splitter->SplitVertically(m_Notebook, m_Gfx, x);
    1646         m_SashPosition = x; // Save width of panel.
    1647 
    1648         m_Gfx->Initialise(old_file == m_File);
    1649         m_Notebook->Show(true);
    1650 
    1651         m_Gfx->Show(true);
    1652         m_Gfx->SetFocus();
    1653     }
     1613
     1614    // Check if this is an unprocessed survey data file.
     1615    if (file.length() > 4 && file[file.length() - 4] == '.') {
     1616        wxString ext(file, file.length() - 3, 3);
     1617        ext.MakeLower();
     1618        if (ext == wxT("svx") || ext == wxT("dat") || ext == wxT("mak")) {
     1619            if (!ProcessSVXFile(file)) {
     1620                // ProcessSVXFile() reports the error to the user.
     1621                return;
     1622            }
     1623            AddToFileHistory(file);
     1624            wxString file3d(file, 0, file.length() - 3);
     1625            file3d.append(wxT("3d"));
     1626            if (!LoadData(file3d, survey))
     1627                return;
     1628            InitialiseAfterLoad(file);
     1629            return;
     1630        }
     1631    }
     1632
     1633    if (!LoadData(file, survey))
     1634        return;
     1635    AddToFileHistory(file);
     1636    InitialiseAfterLoad(file);
     1637}
     1638
     1639void MainFrm::InitialiseAfterLoad(const wxString & file)
     1640{
     1641    int x;
     1642    int y;
     1643    GetClientSize(&x, &y);
     1644    if (x < 600)
     1645        x /= 3;
     1646    else if (x < 1000)
     1647        x = 200;
     1648    else
     1649        x /= 5;
     1650
     1651    m_Splitter->SplitVertically(m_Notebook, m_Gfx, x);
     1652    m_SashPosition = x; // Save width of panel.
     1653
     1654    bool same_file = (file == m_File);
     1655    if (!same_file)
     1656        m_File = file;
     1657
     1658    m_Gfx->Initialise(same_file);
     1659    m_Notebook->Show(true);
     1660
     1661    m_Gfx->Show(true);
     1662    m_Gfx->SetFocus();
    16541663}
    16551664
  • src/mainfrm.h

    rb0c416c rbc73093  
    264264    void UpdateStatusBar();
    265265
     266    void AddToFileHistory(const wxString & file);
     267    void InitialiseAfterLoad(const wxString & file);
     268
    266269public:
    267270    MainFrm(const wxString& title, const wxPoint& pos, const wxSize& size);
Note: See TracChangeset for help on using the changeset viewer.