📄 saga_frame.cpp
字号:
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 + -