⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saga_frame.cpp

📁 这是一个GPS相关的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	else if( Position > 100 )
	{
		Position	= 100;
	}

	m_pProgressBar->SetValue(Position);

	return( Process_Get_Okay(false) );
}

//---------------------------------------------------------
bool CSAGA_Frame::ProgressBar_Set_Position(double Position, double Range)
{
	return( ProgressBar_Set_Position(Range != 0.0 ? (int)(100.0 * Position / Range) : 0) );
}

//---------------------------------------------------------
void CSAGA_Frame::StatusBar_Set_Text(const wxChar *Text, int iPane)
{
	if( iPane < 0 || iPane >= STATUSBAR_PROGRESS )
	{
		iPane	= STATUSBAR_DEFAULT;
	}

	if( iPane == STATUSBAR_ACTIVE )
	{
		Set_Pane_Caption(m_pActive, Text && SG_STR_LEN(Text) > 0 ? Text : LNG("[CAP] Object Properties"));
	}

	SetStatusText(Text, iPane);
}

//---------------------------------------------------------
void CSAGA_Frame::Set_Project_Name(wxString Project_Name)
{
	if( Project_Name.Length() > 0 )
	{
		SetTitle(wxString::Format(wxT("%s [%s]"), SAGA_CAPTION, Project_Name.c_str()));
	}
	else
	{
		SetTitle(SAGA_CAPTION);
	}
}


///////////////////////////////////////////////////////////
//														 //
//														 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
void CSAGA_Frame::Top_Window_Push(wxWindow *pWindow)
{
	if( pWindow )
	{
		for(int i=0; i<m_nTopWindows; i++)
		{
			if( m_pTopWindows[i] == pWindow )
			{
				return;
			}
		}

		m_pTopWindows	= (wxWindow **)SG_Realloc(m_pTopWindows, (m_nTopWindows + 1) * sizeof(wxWindow *));
		m_pTopWindows[m_nTopWindows++]	= pWindow;
	}
}

//---------------------------------------------------------
void CSAGA_Frame::Top_Window_Pop(wxWindow *pWindow)
{
	if( pWindow )
	{
		int		i, j;

		for(i=j=0; j<m_nTopWindows; i++, j++)
		{
			if( m_pTopWindows[i] == pWindow )
				j++;

			if( i < j && j < m_nTopWindows )
				m_pTopWindows[i]	= m_pTopWindows[j];
		}

		if( i < j )
		{
			m_nTopWindows--;
			m_pTopWindows	= (wxWindow **)SG_Realloc(m_pTopWindows, m_nTopWindows * sizeof(wxWindow *));
		}
	}
}

//---------------------------------------------------------
wxWindow * CSAGA_Frame::Top_Window_Get(void)
{
	return( m_nTopWindows > 0 ? m_pTopWindows[m_nTopWindows - 1] : this );
}


///////////////////////////////////////////////////////////
//														 //
//														 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
void CSAGA_Frame::On_Child_Activates(CVIEW_Base *pChild, bool bActivates)
{
	switch( pChild->Get_View_ID() )
	{
	case ID_VIEW_TABLE:
		_Bar_Show(m_pTB_Table		, bActivates);
		break;

	case ID_VIEW_TABLE_DIAGRAM:
		_Bar_Show(m_pTB_Diagram		, bActivates);
		break;

	case ID_VIEW_MAP:
		_Bar_Show(m_pTB_Map			, bActivates);
		break;

	case ID_VIEW_MAP_3D:
		_Bar_Show(m_pTB_Map_3D		, bActivates);
		break;

	case ID_VIEW_HISTOGRAM:
		_Bar_Show(m_pTB_Histogram	, bActivates);
		break;

	case ID_VIEW_SCATTERPLOT:
		_Bar_Show(m_pTB_ScatterPlot	, bActivates);
		break;

	case ID_VIEW_LAYOUT:
		_Bar_Show(m_pTB_Layout		, bActivates);
		break;
	}
}


///////////////////////////////////////////////////////////
//														 //
//						MenuBar							 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
wxMenuBar * CSAGA_Frame::MB_Create(CVIEW_Base *pChild)
{
	wxMenu		*pMenu;
	wxMenuBar	*pMenuBar	= new wxMenuBar;

	//-----------------------------------------------------
	// 1. File...

	pMenu		= new wxMenu;

	g_pData->Get_FileMenus()->Add(pMenu);

	pMenuBar->Append(pMenu, LNG("[MNU] File"));


	//-----------------------------------------------------
	// 2. Modules...

	pMenu		= new wxMenu;

	g_pModules->Get_Modules_Menu()->Add(pMenu);

	pMenuBar->Append(pMenu, LNG("[MNU] Modules"));


	//-----------------------------------------------------
	// 3. Window...

	pMenu		= new wxMenu;

	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_FRAME_WKSP_SHOW);
	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_FRAME_ACTIVE_SHOW);
	CMD_Menu_Add_Item(pMenu,  true, ID_CMD_FRAME_INFO_SHOW);

#ifdef __WXMSW__
	pMenu->AppendSeparator();
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_CASCADE);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_TILE_HORZ);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_TILE_VERT);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_ARRANGEICONS);
#endif	// #ifdef __WXMSW__

	pMenu->AppendSeparator();
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_NEXT);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_PREVIOUS);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_CLOSE);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_CLOSE_ALL);

	pMenuBar->Append(pMenu, LNG("[MNU] Window"));


	//-----------------------------------------------------
	// 4. Help...

	pMenu		= new wxMenu;

	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_HELP);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_TIPS);
	CMD_Menu_Add_Item(pMenu, false, ID_CMD_FRAME_ABOUT);

	pMenuBar->Append(pMenu, LNG("[MNU] ?"));


	//-----------------------------------------------------
	return( pMenuBar );
}

//---------------------------------------------------------
void CSAGA_Frame::MB_Remove(wxMenu *pMenu_File, wxMenu *pMenu_Modules)
{
	g_pData		->Get_FileMenus()		->Del(pMenu_File);
	g_pModules	->Get_Modules_Menu()	->Del(pMenu_Modules);
}


///////////////////////////////////////////////////////////
//														 //
//														 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
void CSAGA_Frame::Set_Pane_Caption(wxWindow *pWindow, wxString Caption)
{
	if( m_pLayout && pWindow )
	{
		m_pLayout->GetPane(pWindow).Caption(Caption);
		m_pLayout->Update();
	}
}

//---------------------------------------------------------
void CSAGA_Frame::_Bar_Add(wxWindow *pWindow, int Position)
{
	m_pLayout->AddPane(pWindow, wxAuiPaneInfo()
		.Name		(pWindow->GetName())
		.Caption	(pWindow->GetName())
		.Layer		(0)
		.Row		(0)
		.Position	(0)
		.MinSize	(100, 100)
		.BestSize	(200, 100)
	);

	switch( Position )
	{
	default:
	case 0:	m_pLayout->GetPane(pWindow).Bottom().FloatingSize(400, 200);	break;
	case 1:	m_pLayout->GetPane(pWindow).Right ().FloatingSize(200, 400);	break;
	case 2:	m_pLayout->GetPane(pWindow).Left  ().FloatingSize(200, 400);	break;
	case 3:	m_pLayout->GetPane(pWindow).Top   ().FloatingSize(400, 200);	break;
	}
}

//---------------------------------------------------------
void CSAGA_Frame::_Bar_Toggle(wxWindow *pWindow)
{
	if( pWindow->IsShown() && m_pLayout->GetPane(pWindow).IsShown() )
	{
		m_pLayout->GetPane(pWindow).Hide();

		if( m_pLayout->GetPane(pWindow).IsToolbar() )
			pWindow->Hide();
	}
	else
	{
		if( m_pLayout->GetPane(pWindow).IsToolbar() )
			pWindow->Show();

		m_pLayout->GetPane(pWindow).Show();
	}

	m_pLayout->Update();
}

//---------------------------------------------------------
void CSAGA_Frame::_Bar_Show(wxWindow *pWindow, bool bShow)
{
	if( pWindow && pWindow->IsShown() != bShow )
	{
		_Bar_Toggle(pWindow);
	}
}


///////////////////////////////////////////////////////////
//														 //
//						ToolBar							 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
#define TOOLBAR_SIZE_IMG		16

//---------------------------------------------------------
wxToolBarBase * CSAGA_Frame::TB_Create(int ID)
{
	wxToolBar	*pToolBar	= new wxToolBar(this, ID, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL|wxTB_FLAT|wxTB_NODIVIDER);

	pToolBar->SetToolBitmapSize(wxSize(TOOLBAR_SIZE_IMG, TOOLBAR_SIZE_IMG));

	return( pToolBar );
}

//---------------------------------------------------------
void CSAGA_Frame::TB_Add(wxToolBarBase *pToolBar, const wxChar *Name)
{
	pToolBar->Realize();
	pToolBar->Hide();

	m_pLayout->AddPane(pToolBar, wxAuiPaneInfo()
	//	.Name			(pToolBar->GetName())
		.Name			(Name)
		.Caption		(Name)
		.ToolbarPane	()
		.Top			()
		.LeftDockable	(false)
		.RightDockable	(false)
		.Hide			()
	);
}

//---------------------------------------------------------
void CSAGA_Frame::TB_Add_Item(wxToolBarBase *pToolBar, bool bCheck, int Cmd_ID)
{
	if( bCheck )
		((wxToolBar *)pToolBar)->AddTool(Cmd_ID, CMD_Get_Name(Cmd_ID), IMG_Get_Bitmap(CMD_Get_ImageID(Cmd_ID), TOOLBAR_SIZE_IMG), CMD_Get_Help(Cmd_ID), wxITEM_CHECK);
	else
		((wxToolBar *)pToolBar)->AddTool(Cmd_ID, CMD_Get_Name(Cmd_ID), IMG_Get_Bitmap(CMD_Get_ImageID(Cmd_ID), TOOLBAR_SIZE_IMG), CMD_Get_Help(Cmd_ID));
}

//---------------------------------------------------------
void CSAGA_Frame::TB_Add_Separator(wxToolBarBase *pToolBar)
{
	((wxToolBar *)pToolBar)->AddSeparator();
}

//---------------------------------------------------------
wxToolBarBase * CSAGA_Frame::_Create_ToolBar(void)
{
	wxToolBarBase	*pToolBar	= TB_Create(ID_TB_MAIN);

	CMD_ToolBar_Add_Item(pToolBar, false, ID_CMD_WKSP_OPEN);
	CMD_ToolBar_Add_Separator(pToolBar);
	CMD_ToolBar_Add_Item(pToolBar, true , ID_CMD_FRAME_WKSP_SHOW);
	CMD_ToolBar_Add_Item(pToolBar, true , ID_CMD_FRAME_ACTIVE_SHOW);
	CMD_ToolBar_Add_Item(pToolBar, true , ID_CMD_FRAME_INFO_SHOW);
	CMD_ToolBar_Add_Separator(pToolBar);
	CMD_ToolBar_Add_Item(pToolBar, false, ID_CMD_FRAME_HELP);

	TB_Add(pToolBar, LNG("[CAP] Standard"));

	return( pToolBar );
}


///////////////////////////////////////////////////////////
//														 //
//														 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -