Example #1
0
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();
}
Example #2
0
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();
	}
}
Example #3
0
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()));
}