void MainWindow::init_menu_elements() { // BASE ACTIONS { m_file_menu = new QMenu("File"); m_file_menu->addAction(m_actions->m_base_actions[BaseActionFamily::_LOAD_TERRAIN]); m_file_menu->addAction(m_actions->m_base_actions[BaseActionFamily::_OPEN_SETTINGS]); m_file_menu->addAction(m_actions->m_base_actions[BaseActionFamily::_CLOSE_APP]); } // RENDER MENU { m_render_menu = new QMenu("Render"); m_render_menu->addAction(m_actions->m_render_actions[RenderActionFamily::_GRID]); m_render_menu->addAction(m_actions->m_render_actions[RenderActionFamily::_TERRAIN]); m_render_menu->addAction(m_actions->m_render_actions[RenderActionFamily::_RAYS]); m_render_menu->addAction(m_actions->m_render_actions[RenderActionFamily::_SUN]); } // OVERLAY MENU { m_overlay_menu = new QMenu("Overlay"); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_NONE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_SLOPE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_ALTITUDE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_SHADE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_TEMPERATURE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_SOIL_INFILTRATION_RATE]); m_overlay_menu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_ILLUMINATION]); m_soil_humidity_submenu = new QMenu("Soil humidity"); m_soil_humidity_submenu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_MONTHLY_SOIL_HUMIDITY]); m_soil_humidity_submenu->addAction(m_actions->m_overlay_actions[OverlayActionFamily::_WEIGHTED_AVG_SOIL_HUMIDITY]); m_overlay_menu->addMenu(m_soil_humidity_submenu); } // EDIT SHOW MENU { m_edit_show_menu = new QMenu("Show"); m_edit_show_menu->addAction(m_actions->m_show_actions[ShowActionFamily::_POINTER_INFO]); } // EDIT MENU { m_edit_menu = new QMenu("Edit"); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_TEMPERATURE]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_ORIENTATION]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_TIME]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_LATITUDE]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_MONTHLY_RAINFALL]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_SOIL_INFILTRATION_RATE]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_FLOOD_FILL]); m_edit_menu->addAction(m_actions->m_edit_actions[EditActionFamily::_ABSOLUTE_AGGREGATE_HEIGHT]); } enable_menus(); }
void MainFrame::update_state_ts(bool force) { bool any_states = false; for (int i = 0; i < 10; i++) { if (force) state_ts[i] = wxInvalidDateTime; if (panel->game_type() != IMAGE_UNKNOWN) { wxString fn; fn.Printf(SAVESLOT_FMT, panel->game_name().c_str(), i + 1); wxFileName fp(panel->state_dir(), fn); wxDateTime ts; // = wxInvalidDateTime if (fp.IsFileReadable()) { ts = fp.GetModificationTime(); any_states = true; } // if(ts != state_ts[i] || (force && !ts.IsValid())) { // to prevent assertions (stupid wx): if (ts.IsValid() != state_ts[i].IsValid() || (ts.IsValid() && ts != state_ts[i]) || (force && !ts.IsValid())) { // wx has no easy way of doing the -- bit independent // of locale // so use a real date and substitute all digits wxDateTime fts = ts.IsValid() ? ts : wxDateTime::Now(); wxString df = fts.Format(wxT("0&0 %x %X")); if (!ts.IsValid()) for (int j = 0; j < df.size(); j++) if (wxIsdigit(df[j])) df[j] = wxT('-'); df[0] = i == 9 ? wxT('1') : wxT(' '); df[2] = wxT('0') + (i + 1) % 10; if (loadst_mi[i]) { wxString lab = loadst_mi[i]->GetItemLabel(); size_t tab = lab.find(wxT('\t')), dflen = df.size(); if (tab != wxString::npos) df.append(lab.substr(tab)); loadst_mi[i]->SetItemLabel(df); loadst_mi[i]->Enable(ts.IsValid()); if (tab != wxString::npos) df.resize(dflen); } if (savest_mi[i]) { wxString lab = savest_mi[i]->GetItemLabel(); size_t tab = lab.find(wxT('\t')); if (tab != wxString::npos) df.append(lab.substr(tab)); savest_mi[i]->SetItemLabel(df); } } state_ts[i] = ts; } } int cmd_flg = any_states ? CMDEN_SAVST : 0; if ((cmd_enable & CMDEN_SAVST) != cmd_flg) { cmd_enable = (cmd_enable & ~CMDEN_SAVST) | cmd_flg; enable_menus(); } }
void MainWindow::establish_connections() { connect(m_actions->m_base_actions[BaseActionFamily::_CLOSE_APP], SIGNAL(triggered()), this, SLOT(close())); connect(m_cw, SIGNAL(disable_menus()), this, SLOT(disable_menus())); connect(m_cw, SIGNAL(enable_menus()), this, SLOT(enable_menus())); }