📄 swmainform.cpp
字号:
#include "SWMainForm.h"
#include "iostream.h"
//region int SmartWinMain(sw::Application& app)
int SmartWinMain(sw::Application& app)
{
SWMainForm* mainForm=new SWMainForm;
mainForm->initAndCreate();
return app.run();
}
void SWMainForm::main_createMenu(void)
{
mainMenu = createMenu();
WidgetMenuPtr file = mainMenu->appendPopup( _T( "&File" ) );
file->appendItem( 1, _T( "&New PLC File" ), & SWMainForm::menuEventHandler );
file->appendItem( 2, _T( "&Open PLC File" ), & SWMainForm::menuEventHandler );
file->appendItem( 3, _T( "&Save PLC File" ), & SWMainForm::menuEventHandler );
//file->appendItem( 5, _T( "&Load Quake 3 map" ), & SWMainForm::menuEventHandler );
// file->appendItem( 6, _T( "&Add PLC File" ), & SWMainForm::menuEventHandler );
file->appendSeparatorItem();
file->appendItem( 4, _T( "&Exit" ), & SWMainForm::menuEventHandler );
mainMenu->attach( this );
}
void SWMainForm::main_createToolbar(void)
{
WidgetToolbar::Seed toolbar_seed;
toolbar_seed.style |= TBSTYLE_FLAT;
toolbar = createToolbar(toolbar_seed);
toolbar->setButtonSize( 30, 25 );
//toolbar_1 = createToolbar(toolbar_seed);
//toolbar_1->setButtonSize( 32, 25 );
ImageListPtr imageList( new ImageList( 23, 20, ILC_COLOR24 ) );
imageList->addMultiple( SmartWin::Bitmap("bitmap1.bmp") );
toolbar->setNormalImageList( imageList );
toolbar->addButton( 0, 0, _T( "New" ), _T( "New IRRscene File" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 1, 1, _T( "Open" ), _T( "Open IRRscene File" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 2, 2, _T( "Save" ), _T( "Save IRRscene File" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 3, 3, _T( "Dele" ), _T( "Delete model..." ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 4, 4, _T( "Copy" ), _T( "Testing model..." ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 5, 5, _T( "Past" ), _T( "Paste model..." ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 6, 6, _T( "Hide" ), _T( "Hide/Unhide" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 7, 7, _T( "Wire" ), _T( "Show Wire/Hide wire" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 8, 8, _T( "Mode" ), _T( "OpenMode" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 9, 9, _T( "View" ), _T( "View Change" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 10, 10, _T( "Full" ), _T( "Full Perspective View" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 11, 11, _T( "Play" ), _T( "Play" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 12, 12, _T( "Text" ), _T( "Texture" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 13, 13, _T( "MoveC" ), _T( "Move Camera" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 14, 14, _T( "MoveM" ), _T( "Move model" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 15, 15, _T( "Rota" ), _T( "Rotate model" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 16, 16, _T( "Scal" ), _T( "Scale model" ), false, & SWMainForm::toolbarClicked );
toolbar->addButton( 17, 17, _T( "Cube" ), _T( "Add Cube" ), false, & SWMainForm::toolbarClicked );
toolbar->refresh();
}
void SWMainForm::menuEventHandler( WidgetMenuPtr menu, unsigned int item )
{
UpdateCanvas c( this );
switch(item)
{
case 2:
OnLoadFile();
break;
case 3:
OnSaveFile();
break;
}
}
void SWMainForm::toolbarClicked( WidgetToolbarPtr toolbar, unsigned btn )
{
UpdateCanvas c( this );
switch(btn)
{
case 0:
break;
case 1:
OnLoadFile();
break;
case 2:
OnSaveFile();
break;
}
}
void SWMainForm::OnLoadFile()
{
WidgetLoadFile L_dlg;
SmartUtil::tstring filePath;
std::fstream sfs;
int len;
char* buf;
SmartUtil::tstring file_data;
L_dlg = createLoadFile();
L_dlg.addFilter( _T( "PLC Files(*.plc)" ), _T( "*.plc" ) );
L_dlg.addFilter( _T( "All Files" ), _T( "*.*" ) );
L_dlg.activeFilter( 0 );
filePath = L_dlg.showDialog();
if(!filePath.empty())
{
std::fstream sfs(filePath.c_str());
if(!sfs)return;
sfs.seekg (0, ios::end);
len = sfs.tellg();
sfs.seekg (0, ios::beg);
buf = new char[len];
sfs.read(buf, len);
file_data=string(buf);
delete []buf;
sfs.close();
//m_edit1->setText(file_data);
}
}
void SWMainForm::OnSaveFile()
{
WidgetSaveFile S_dlg;
SmartUtil::tstring filePath;
std::fstream sfs;
int len;
char* buf;
SmartUtil::tstring file_data;
S_dlg = createSaveFile();
S_dlg.addFilter( _T( "PLC Files(*.plc)" ), _T( "*.plc" ) );
S_dlg.addFilter( _T( "All Files" ), _T( "*.*" ) );
S_dlg.activeFilter( 0 );
filePath = S_dlg.showDialog();
if(!filePath.empty())
{
if(filePath.find(".plc")==-1&&filePath.find(".PLC")==-1)filePath+=".plc";
sfs.open(filePath.c_str(), ios_base::out);
if(!sfs)return;
//file_data=m_edit1->getText();
sfs.write(file_data.c_str(), file_data.size());
sfs.close();
}
}
//endregion
void SWMainForm::paint(Canvas & c)
{
cal();
UpdateCanvas uc( this );
SmartWin::Rectangle rect(r.l, r.t, r.w+5, r.h+5 );
if(cmpnum==0)uc.rectangle( rect );
int x=0;
for(int samplenum=0;samplenum<cmpnum;samplenum++)
{
SPWM_isHeight=samplenum%2;
uc.line(r.x+x,r.y-SPWM_isHeight*100,r.x+x+T[samplenum%30],r.y-SPWM_isHeight*100);
uc.line(r.x+x+T[samplenum%30],r.y-0*100,r.x+x+T[samplenum%30],r.y-1*100);
x+=T[samplenum%30];
}
x=0;
for(int samplenum=0;samplenum<cmpnum;samplenum+=2)
{
uc.line(r.x+x,r.y-120-(5*T[samplenum%30+1]),r.x+x+(T[samplenum%30]+T[samplenum%30+1]),r.y-120-(5*T[samplenum%30+1]));
SPWM_isHeight=!SPWM_isHeight;
//uc.line(r.x+x+T[samplenum%30],r.y-0*100,r.x+x+T[samplenum%30],r.y-1*100);
x+=(T[samplenum%30]+T[samplenum%30+1]);
}
}
void SWMainForm::On_Button1(WidgetButtonPtr widgetparam)
{
//createMessageBox().show( widgetparam->getText());
if(SPWM_isRun==false)
{
SPWM_isRun=true;
cal();
Command com ( _T( "Run" ) );
cmpnum=0;
createTimer( & SWMainForm::timer_SPWM_Run, T[cmpnum%30]*30, com );
cout<<cmpnum<<":"<<cmpint[cmpnum%30]<<endl;
}
else
{
cmpnum=0;
SPWM_isRun=false;
}
}
void SWMainForm::timer_SPWM_Run( const CommandPtr & cmd )
{
if(SPWM_isRun)
{
UpdateCanvas uc( this );
if(++cmpnum>=60)
{
cmpnum=0;
SmartWin::Rectangle rect(r.l, r.t, r.w+5, r.h+5 );
uc.rectangle( rect );
//SPWM_isRun=false;
}
paint( uc );
cout<<cmpnum<<":"<<T[cmpnum%30]<<endl;
Command com ( _T( "Run" ) );
createTimer( & SWMainForm::timer_SPWM_Run, T[cmpnum%30]*(1+slider1->getPosition()), com );
}
}
void SWMainForm::On_Slider1(WidgetSliderPtr widgetparam)
{
//createMessageBox().show( boost::lexical_cast< SmartUtil::tstring >( widgetparam->getPosition() ) );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -