📄 replacedialog.c
字号:
#include "replacedialog.h"ReplaceDialog::ReplaceDialog(){ fld[0]=NULL; fld[1]=NULL; fld[2]=NULL; frm=NULL; strcpy(locate[0],"Find"); strcpy(locate[1],"Replace"); strcpy(locate[2],"[ ]Case Sensitive"); strcpy(locate[3],"[ ]Replace All"); strcpy(locate[4],"Search Direction"); strcpy(locate[5],"[ ]Up"); strcpy(locate[6],"[ ]Down"); strcpy(locate[7],"[ ]Tag-Bookmark");}ReplaceDialog::~ReplaceDialog(){ if(frm!=NULL) { unpost_form(frm); free_form(frm); } if(fld[0]!=NULL) free_field(fld[0]); if(fld[1]!=NULL) free_field(fld[1]); if(fld[2]!=NULL) free_field(fld[2]); if(fld[3]!=NULL) free_field(fld[3]); if(fld[4]!=NULL) free_field(fld[4]); if(fld[5]!=NULL) free_field(fld[5]); if(fld[6]!=NULL) free_field(fld[6]); if(fld[7]!=NULL) free_field(fld[7]);}BOOL ReplaceDialog::DrawReplaceDialog(){ BOOL ret=FALSE; int rows,cols; rows=4; cols=width-strlen(locate[1])-2; wattron(basewin,COLOR_PAIR(color)); mvwprintw(basewin,1,1,locate[0]); mvwprintw(basewin,2,1,locate[1]); wattroff(basewin,COLOR_PAIR(color)); fld[0] = new_field(1, cols, 0,0, 0, 0);//find fld[1] = new_field(1, cols, 1,0, 0, 0);//replace fld[2] = new_field(1, strlen(locate[2]), 2, 0, 0, 0);//case sensitive fld[3] = new_field(1, strlen(locate[3]), 2, (int)(cols/2), 0, 0);//replace all fld[4] = new_field(1, strlen(locate[4]), 3, 0, 0, 0);//dir fld[5] = new_field(1, strlen(locate[5]), 3, (int)(cols/2), 0, 0);//up fld[6] = new_field(1, strlen(locate[6]), 3, (int)(cols*3/4),0,0);//down fld[7] = NULL; set_field_back(fld[0], COLOR_PAIR(COLOR_WHITE_BLUE)|A_UNDERLINE); set_field_back(fld[1], COLOR_PAIR(COLOR_WHITE_BLUE)|A_UNDERLINE); set_field_back(fld[2], COLOR_PAIR(COLOR_WHITE_BLACK)); set_field_back(fld[3], COLOR_PAIR(COLOR_WHITE_BLACK)); set_field_back(fld[4], COLOR_PAIR(COLOR_WHITE_BLACK)); set_field_back(fld[5], COLOR_PAIR(COLOR_WHITE_BLACK)); set_field_back(fld[6], COLOR_PAIR(COLOR_WHITE_BLACK)); field_opts_on(fld[0], O_ACTIVE); field_opts_on(fld[1], O_ACTIVE); field_opts_off(fld[0],O_AUTOSKIP); field_opts_off(fld[1],O_AUTOSKIP); field_opts_off(fld[0],O_STATIC); field_opts_off(fld[1],O_STATIC); set_max_field(fld[0],MAXFIELDLEN); set_max_field(fld[1],MAXFIELDLEN); set_field_buffer(fld[2],0,locate[2]); set_field_buffer(fld[3],0,locate[3]); set_field_buffer(fld[4],0,locate[4]); set_field_buffer(fld[5],0,locate[5]); set_field_buffer(fld[6],0,locate[6]); frm = new_form(fld); set_current_field(frm, fld[0]); set_form_win(frm, basewin); set_form_sub(frm, derwin(basewin,rows,cols,1,strlen(locate[1])+1)); post_form(frm); goto over;over: ret=TRUE;//failure: return ret;}BOOL ReplaceDialog::InitReplaceDialog(int Height,int Width,int Color,int Shadow,int FontStyle,int WinType,char *Title){ BOOL ret=FALSE; if(WinType==DIALOG_EDITFIND) ret=InitDialog(Height,Width,Color,Shadow,FontStyle,WinType,OKCANCELDLG,"[Find]"); else if(WinType==DIALOG_EDITREPLACE) ret=InitDialog(Height,Width,Color,Shadow,FontStyle,WinType,OKCANCELDLG,"[Replace]"); else ret=InitDialog(Height,Width,Color,Shadow,FontStyle,WinType,OKCANCELDLG,"[Unknown]"); if (ret==FALSE) goto failure; ret=DrawReplaceDialog(); if (ret==FALSE) goto failure; curs_set(0); wrefresh(basewin); goto over;over: ret=TRUE;failure: return ret; }BOOL ReplaceDialog::ReplaceDialogDriver(){ BOOL ret=FALSE; int ch; int exist=TRUE; while(exist && (ch = wgetch(basewin))) { switch(ch) { case KEY_DOWN: break; case KEY_UP: break; case KEY_LEFT: break; case KEY_RIGHT: break; case KEY_NPAGE: break; case KEY_PPAGE: break; case KEY_HOME: break; case KEY_END: break; case KEY_DC: break; case KEY_BACKSPACE: break; case KEY_TAB: break; case 0xA: exist=FALSE; break; default: break; } } return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -