📄 tab.cxx
字号:
//assemble each group have widgest#include "tab.h"#define Tab_N 3#define Widget_N 100#define OVER_COLOR FL_GREEN#define UNOVER_COLOR FL_BLACK#define Round 1#define Check 2#define Input 3#define Button 4#define Value 5#define Int_Input 6#define Group 7#define SelectBrowser 8#define Re_Group 2//sum of Relation-Group#define Max_Re_G 4//Max numbers in all Relation-Groups//#define charmax 100#define Input_num 6int relation_widgest[Re_Group+1][Max_Re_G+1];int Group_seq[Tab_N+1];int widget_fact;int Input_Group[Input_num+1]={Input_num,8,11,12,17,30,32};char* Input_Save[Input_num+1];Fl_Window* mainw;image_window* welcome;Fl_Window* help; class Widget_Input{ int i; int type; //char oldstring[charmax]; int oldvalue; Fl_Widget* widget;public: int geti(){return i;} int gettype(){return type;} void setoldvalue(int v){oldvalue=v;} int getoldvalue(){return oldvalue;} //void setoldstring(char *st){ //oldstring=(char *)malloc(sizeof(char)*(strlen(st)+1)); //strcpy(oldstring,st); // oldstring=st; //} //char *getoldstring(){return oldstring;} Fl_Widget* getwidget(){return widget;} Widget_Input* input_key(Widget_Input *,Fl_Round_Button*,char); Widget_Input* input_key(Widget_Input *,Fl_Check_Button*,char); Widget_Input* input_key(Widget_Input *,Fl_Input*,char); Widget_Input* input_key(Widget_Input *,Fl_Button*,char); Widget_Input* input_key(Widget_Input *,Fl_Select_Browser*,char); Widget_Input(Fl_Widget* o,int i1,int type1){ widget=o; i=i1; type=type1; }};Widget_Input *wi[Widget_N+1];//Fl_Round_ButtonWidget_Input* input_key(Widget_Input *ppw,Fl_Round_Button* wwid,char c){Widget_Input *old=ppw;//wwid->labelcolor(OVER_COLOR);printf("==Fl_Round_Button==\n"); switch(c){ case 'P': for(int i=2;i<Tab_N+1;i++){ if(ppw->geti()<Group_seq[i]){ (wi[Group_seq[i]]->getwidget())->show(); (wi[Group_seq[i-1]]->getwidget())->hide(); (wi[Group_seq[i]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[i]+1]; break; } else if(ppw->geti()>Group_seq[Tab_N]){ (wi[Group_seq[1]]->getwidget())->show(); (wi[Group_seq[Tab_N]]->getwidget())->hide(); (wi[Group_seq[1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[1]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[1]+1]; break; } } break; case 'U':{ if(int i=search_pos(Group_seq,ppw->geti()-1,Tab_N+1)){ if(i==Tab_N){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[widget_fact]->getwidget())->labelcolor(OVER_COLOR); (wi[widget_fact]->getwidget())->redraw(); ppw=wi[widget_fact]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i+1]-1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i+1]-1]->getwidget())->redraw(); ppw=wi[Group_seq[i+1]-1]; } } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()-1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()-1]->getwidget())->redraw(); ppw=wi[ppw->geti()-1]; } break;} case 'D':{ if(int i=search_pos(Group_seq,ppw->geti()+1,Tab_N+1)){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i-1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i-1]+1]->getwidget())->redraw(); ppw=wi[Group_seq[i-1]+1]; } else if(ppw->geti()==widget_fact){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[Tab_N]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[Tab_N]+1]->getwidget())->redraw(); ppw=wi[Group_seq[Tab_N]+1]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()+1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()+1]->getwidget())->redraw(); ppw=wi[ppw->geti()+1]; } break;} case ' ':{ if((wwid->value())==0){ wwid->value(1); int gr=0; //other radios related with it should be value(0) for(int i=1;i<Re_Group+1;i++) for(int j=1;j<=relation_widgest[i][0];j++) if((ppw->geti())==relation_widgest[i][j])gr=i; if(gr!=0){ for(int j=1;j<=relation_widgest[gr][0];j++) if((ppw->geti())!=relation_widgest[gr][j]) ((Fl_Round_Button *)(wi[relation_widgest[gr][j]]->getwidget()))->value(0); } } break;} default: break; }if((ppw->gettype())==Input||(ppw->gettype())==SelectBrowser){ for(int i=2;i<Tab_N+1;i++){ if(old->geti()<Group_seq[i]){ (wi[Group_seq[i-1]]->getwidget())->redraw(); break; } else if(old->geti()>Group_seq[Tab_N]) (wi[Group_seq[Tab_N]]->getwidget())->redraw();} }return ppw;}//Fl_Check_ButtonWidget_Input* input_key(Widget_Input *ppw,Fl_Check_Button* wwid,char c){Widget_Input *old=ppw;//wwid->labelcolor(OVER_COLOR);printf("==Fl_Check_Button==\n"); switch(c){ case 'P': for(int i=2;i<Tab_N+1;i++){ if(ppw->geti()<Group_seq[i]){ (wi[Group_seq[i]]->getwidget())->show(); (wi[Group_seq[i-1]]->getwidget())->hide(); (wi[Group_seq[i]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[i]+1]; break; } else if(ppw->geti()>Group_seq[Tab_N]){ (wi[Group_seq[1]]->getwidget())->show(); (wi[Group_seq[Tab_N]]->getwidget())->hide(); (wi[Group_seq[1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[1]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[1]+1]; break; } } break; case 'U':{ if(int i=search_pos(Group_seq,ppw->geti()-1,Tab_N+1)){ if(i==Tab_N){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[widget_fact]->getwidget())->labelcolor(OVER_COLOR); (wi[widget_fact]->getwidget())->redraw(); ppw=wi[widget_fact]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i+1]-1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i+1]-1]->getwidget())->redraw(); ppw=wi[Group_seq[i+1]-1]; } } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()-1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()-1]->getwidget())->redraw(); ppw=wi[ppw->geti()-1]; } break;} case 'D':{ if(int i=search_pos(Group_seq,ppw->geti()+1,Tab_N+1)){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i-1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i-1]+1]->getwidget())->redraw(); ppw=wi[Group_seq[i-1]+1]; } else if(ppw->geti()==widget_fact){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[Tab_N]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[Tab_N]+1]->getwidget())->redraw(); ppw=wi[Group_seq[Tab_N]+1]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()+1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()+1]->getwidget())->redraw(); ppw=wi[ppw->geti()+1]; } break;} case ' ':{ wwid->value((wwid->value())^1); break;} default: break; }if((ppw->gettype())==Input||(ppw->gettype())==SelectBrowser){ for(int i=2;i<Tab_N+1;i++){ if(old->geti()<Group_seq[i]){ (wi[Group_seq[i-1]]->getwidget())->redraw(); break; } else if(old->geti()>Group_seq[Tab_N]) (wi[Group_seq[Tab_N]]->getwidget())->redraw();} }return ppw; }//Fl_InputWidget_Input* input_key(Widget_Input *ppw,Fl_Input* wwid,char c){Widget_Input *old=ppw;//wwid->labelcolor(OVER_COLOR);printf("==Fl_Input==\n"); switch(c){ case 'P': for(int i=2;i<Tab_N+1;i++){ if(ppw->geti()<Group_seq[i]){ (wi[Group_seq[i]]->getwidget())->show(); (wi[Group_seq[i-1]]->getwidget())->hide(); (wi[Group_seq[i]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[i]+1]; break; } else if(ppw->geti()>Group_seq[Tab_N]){ (wi[Group_seq[1]]->getwidget())->show(); (wi[Group_seq[Tab_N]]->getwidget())->hide(); (wi[Group_seq[1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[1]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[1]+1]; break; } } break; case 'U':{ if(int i=search_pos(Group_seq,ppw->geti()-1,Tab_N+1)){ if(i==Tab_N){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[widget_fact]->getwidget())->labelcolor(OVER_COLOR); (wi[widget_fact]->getwidget())->redraw(); ppw=wi[widget_fact]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i+1]-1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i+1]-1]->getwidget())->redraw(); ppw=wi[Group_seq[i+1]-1]; } } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()-1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()-1]->getwidget())->redraw(); ppw=wi[ppw->geti()-1]; } break;} case 'D':{ if(int i=search_pos(Group_seq,ppw->geti()+1,Tab_N+1)){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i-1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i-1]+1]->getwidget())->redraw(); ppw=wi[Group_seq[i-1]+1]; } else if(ppw->geti()==widget_fact){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[Tab_N]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[Tab_N]+1]->getwidget())->redraw(); ppw=wi[Group_seq[Tab_N]+1]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()+1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()+1]->getwidget())->redraw(); ppw=wi[ppw->geti()+1]; } break;} default: if((c>='0'&&c<='9')||(c>='a'&&c<='z')) { //if(c>='A'&&c<='Z')c=c+32; char *input_string=(char *)(wwid->value()); input_string=str_cat(input_string,c);///// wwid->value(input_string); } break; } for(int i=2;i<Tab_N+1;i++){ if(old->geti()<Group_seq[i]){ (wi[Group_seq[i-1]]->getwidget())->redraw(); break; } else if(old->geti()>Group_seq[Tab_N]) (wi[Group_seq[Tab_N]]->getwidget())->redraw();}return ppw;}//Fl_Button()Widget_Input* input_key(Widget_Input *ppw,Fl_Button* wwid,char c){Widget_Input *old=ppw;//wwid->labelcolor(OVER_COLOR);printf("==Fl_Button==\n"); switch(c){ case 'P': for(int i=2;i<Tab_N+1;i++){ if(ppw->geti()<Group_seq[i]){ (wi[Group_seq[i]]->getwidget())->show(); (wi[Group_seq[i-1]]->getwidget())->hide(); (wi[Group_seq[i]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[i]+1]; break; } else if(ppw->geti()>Group_seq[Tab_N]){ (wi[Group_seq[1]]->getwidget())->show(); (wi[Group_seq[Tab_N]]->getwidget())->hide(); (wi[Group_seq[1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[1]+1]->getwidget())->redraw(); wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); ppw=wi[Group_seq[1]+1]; break; } } break; case 'U':{ if(int i=search_pos(Group_seq,ppw->geti()-1,Tab_N+1)){ if(i==Tab_N){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[widget_fact]->getwidget())->labelcolor(OVER_COLOR); (wi[widget_fact]->getwidget())->redraw(); ppw=wi[widget_fact]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i+1]-1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i+1]-1]->getwidget())->redraw(); ppw=wi[Group_seq[i+1]-1]; } } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()-1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()-1]->getwidget())->redraw(); ppw=wi[ppw->geti()-1]; } break;} case 'D':{ if(int i=search_pos(Group_seq,ppw->geti()+1,Tab_N+1)){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[i-1]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[i-1]+1]->getwidget())->redraw(); ppw=wi[Group_seq[i-1]+1]; } else if(ppw->geti()==widget_fact){ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[Group_seq[Tab_N]+1]->getwidget())->labelcolor(OVER_COLOR); (wi[Group_seq[Tab_N]+1]->getwidget())->redraw(); ppw=wi[Group_seq[Tab_N]+1]; } else{ wwid->labelcolor(UNOVER_COLOR); wwid->redraw(); (wi[ppw->geti()+1]->getwidget())->labelcolor(OVER_COLOR); (wi[ppw->geti()+1]->getwidget())->redraw(); ppw=wi[ppw->geti()+1]; } break;} case ' ': printf("do file_chooser\n"); break; default: break; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -