📄 roll_bar_test.c
字号:
#include "roll_bar.h"
int GetInputString(ROLL_BAR *r)
{
int sign=0;
sign=(*(r->input))->input_char(*(r->input),1,1,1);
return sign;
}
int (*fp1)(ROLL_BAR *r)=GetInputString;
void print_one_node(ROLL_BAR *r,int choise)
{
NODE *temp=NULL;
temp=(*(r->link))->get_node_by_index((*(r->link)),r->current_suffix);
if(choise)
{
(*(r->frame+1))->color=*(r->colors+1);
}
else
{
(*(r->frame+1))->color=*(r->colors);
}
mvwprintw((*(r->frame+1))->win,0,0,"%-7d%",*((int *)(temp->data)));
/* mvwprintw(r->f->win,0,0,"%-7d%-12s%-28s%-6s%-6s%-8.2f%-6d%-8.2f",((UNS*)(temp->data))->num,
((UNS*)(temp->data))->bar_code,((UNS*)(temp->data))->commodity_name,((UNS*)(temp->data))->spec,
((UNS*)(temp->data))->unti,((UNS*)(temp->data))->sell_price,((UNS*)(temp->data))->total_count,
((UNS*)(temp->data))->total_pay);*/
(*(r->frame+1))->draw(*(r->frame+1));
}
//void fp2(ROLL_BAR *r,int ch)=print_one_node;
void print_one_page(ROLL_BAR *r)
{
int i=0;
if((*(r->link))->count < r->height_and_length[0])
{
r->current_suffix++;
for (i=1;i<(*(r->link))->count;i++)
{
mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
print_one_node(r,0);
r->current_suffix++;
}
}
else
{
r->current_suffix++;
for (i=1;i< r->height_and_length[0];i++)
{
mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
print_one_node(r,0);
r->current_suffix++;
}
}
r->current_suffix=1;
mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
print_one_node(r,1);
}
/*
typedef struct roll_bar
{
LINK **link;
FRAME **frame;
INPUT **input;
int **colors;
int startXY[2];
int height_and_length[2];
int current_place;
int current_suffix;
int (*get_input_string)(struct roll_bar *,void (*get_s)(struct roll_bar *));
void (*print_one_page)(struct roll_bar *,void (*print_p)(struct roll_bar *));
void (*print_one)(struct roll_bar *,int choise,void (*print_p)(struct roll_bar *,int choise));
void (*free)(struct roll_bar **);
void (*action)(struct roll_bar *,void (*action)(struct roll_bar *));
}ROLL_BAR;
*/
void action_roll(ROLL_BAR *r)
{
int result=0;
int sign=1;
int i=0;
do
{
result=r->get_input_string(r,fp1);
switch (result)
{
case 1:
if(0 == (*(r->link))->count)
{
continue;
}
if (r->current_place>1)
{
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
print_one_node(r,0);
r->current_place--;
r->current_suffix--;
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
print_one_node(r,1);
}
else
{
if (r->current_suffix>1)
{
r->current_suffix--;
mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
print_one_node(r,1);
for (i=1;i<r->height_and_length[0];i++)
{
r->current_suffix++;
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place+i-1,r->startXY[1]);
print_one_node(r,0);
}
r->current_suffix-=r->height_and_length[0]-1;
}
else
{
continue;
}
}
break;
case 2:
if(0 == (*(r->link))->count)
{
continue;
}
if(r->current_suffix<(*(r->link))->count)
{
if (r->current_place<r->height_and_length[0])
{
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
print_one_node(r,0);
r->current_place++;
r->current_suffix++;
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
print_one_node(r,1);
}
else
{
r->current_suffix++;
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
print_one_node(r,1);
for (i=1;i<r->height_and_length[0];i++)
{
r->current_suffix--;
mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1-i,r->startXY[1]);
print_one_node(r,0);
}
r->current_suffix+=r->height_and_length[0]-1;
}
}
else
{
continue;
}
break;
case 10:
sign=0;
break;
}
}
while (sign);
}
int main()
{
initscr();
refresh();
if(has_colors==FALSE)
{
endwin();
exit(0);
}
start_color();
init_pair(1,COLOR_BLACK,COLOR_WHITE);
init_pair(2,COLOR_WHITE,COLOR_RED);
int j=0;
LINK *link=new_link();
for (j=0;j<10 ;j++ )
{
link->insert_front(link, &j, sizeof(int));
}
FRAME *f[2];
INPUT *i[1];
int c[2]={1,2};
f[0]=creat_frame(5,19,18,40,2);
f[1]=creat_frame(9,31,1,4,1);
i[0]=create_input(f[1],0,1,2,0);
ROLL_BAR *r=create_roll_bar(&link,f,i,0,0,5,8,c);
print_one_page(r);
action_roll(r);
f[0]->free(&f[0]);
f[0]->free(&f[1]);
i[0]->free(&i[0]);
link->del_all(&link);
attroff(COLOR_PAIR(1));
attroff(COLOR_PAIR(2));
endwin();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -