📄 button.c
字号:
/*
Button struct 函数实现
*/
#include "BaseEnvInit.h"
#include"Button.h"
void ChangeButton(Button **ppButton)
{
Button * ptempbutton=*ppButton;
*ppButton=MakeButton(*ppButton);
ptempbutton->FreeButton(ptempbutton);
}
void FreeButton(Button * pButton)
{
int i;
for(i=0;i<3;i++)
{
if(delwin(pButton->m_winarr[i])==ERR)
{
fprintf(stderr,"Error - in FreeButton delwin(pButton->m_winarr[i]) false. exit program");
endwin();
exit(2);
}
}
free(pButton);
}
int FocusButton(Button * pButton)
{
int key;
keypad(pButton->m_winarr[2],TRUE);
wattron(pButton->m_winarr[2],A_REVERSE);
if(pButton->m_isbox==TRUE)
{
mvwprintw(pButton->m_winarr[2],1,1,pButton->m_name);
}
else
{
mvwprintw(pButton->m_winarr[2],0,1,pButton->m_name);
}
wattroff(pButton->m_winarr[2],A_REVERSE);
ShowButton(pButton);
do
{
key=wgetch(pButton->m_winarr[2]);
if ( !(key==10 || key==KEY_UP || key==KEY_DOWN || key==KEY_RIGHT ||key==9 ||key==KEY_LEFT) )
{
continue;
}
break;
}
while (1);
if(key==10)
{
mvwin(pButton->m_winarr[2],pButton->m_py+1,pButton->m_px+1);
pButton->ShowButton(pButton);
usleep(100000);
mvwin(pButton->m_winarr[2],pButton->m_py,pButton->m_px);
if(pButton->m_isbox==TRUE)
{
mvwprintw(pButton->m_winarr[2],1,1,pButton->m_name);
}
else
{
mvwprintw(pButton->m_winarr[2],0,1,pButton->m_name);
}
pButton->ShowButton(pButton);
}
if(pButton->m_isbox==TRUE)
{
mvwprintw(pButton->m_winarr[2],1,1,pButton->m_name);
}
else
{
mvwprintw(pButton->m_winarr[2],0,1,pButton->m_name);
}
ShowButton(pButton);
return key;
}
void ShowButton(Button *pButton)
{
int i;
for(i=0;i<3;i++)
{
touchwin(pButton->m_winarr[i]);
wrefresh(pButton->m_winarr[i]);
}
}
Button * MakeButton(Button * pButton)
{
int i=0;
Button * p=NULL;
p=(Button *)malloc(sizeof(Button));
if(!p)
{
return NULL;
}
if(pButton==NULL)
{
p->m_px=0;
p->m_py=0;
p->m_sizex=7;
p->m_sizey=3;
p->m_color_top=WHITE_RED;
p->m_color_mid=BLACK_BLACK;
p->m_color_foot=WHITE_WHITE;
p->m_isbox=true;
p->m_kind=YESBUTTON;
p->m_buttonid=0;
strcpy(p->m_name,"Button");
}
else
{
memcpy(p,pButton,sizeof(Button));
}
p->m_winarr[0]=newwin(p->m_sizey+1,p->m_sizex+1,p->m_py,p->m_px);
p->m_winarr[1]=newwin(p->m_sizey,p->m_sizex,p->m_py+1,p->m_px+1);
p->m_winarr[2]=newwin(p->m_sizey,p->m_sizex,p->m_py,p->m_px);
wbkgd(p->m_winarr[0],COLOR_PAIR(p->m_color_foot));
wbkgd(p->m_winarr[1],COLOR_PAIR(p->m_color_mid));
wbkgd(p->m_winarr[2],COLOR_PAIR(p->m_color_top));
if(p->m_isbox==TRUE)
box(p->m_winarr[2],0,0);
//wattron(p->m_winarr[2],A_REVERSE);
if(p->m_isbox==TRUE)
{
mvwprintw(p->m_winarr[2],1,1,p->m_name);
}
else
{
mvwprintw(p->m_winarr[2],0,1,p->m_name);
}
p->InitButton=MakeButton;
p->ShowButton=ShowButton;
p->FreeButton=FreeButton;
p->FocusButton=FocusButton;
p->ChangeButton=ChangeButton;
return p;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -