⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tool.c

📁 UNIX/LINUX平台下面SMS网管原代码
💻 C
📖 第 1 页 / 共 2 页
字号:
        do {          if ( -- option < 0 )             option = Menu->menuwin->height - 3;        } while( Menu->items[option].item[0] == '-' );        break;      default:        for( i = 0; i < Menu->menuwin->height - 2; i ++ )        {          for ( HotKey = Menu->items[i].item;              *HotKey == ' '; HotKey ++ );          if ( *HotKey == choice )          {            option = i;            Menu->lastoption = option;            if ( Menu->items[ option ].callfunc != NULL )            {              /*函数中有系统调用时恢复界面*/              if ( Menu->items[ option ].callfunc() == SYSTEM_RET)              {                 DeleteWindow (Menu->menuwin);                 resetty();                 return option;              }            }            break;          }        }    }		  }}MessageBX( char *msg ){  int len;  WINDOWS *msgwin;  COLORPATTERN MessageColor;  len = strlen( msg );  len = len % 2 == 0 ? len : len + 1;  SetColorPattern( &MessageColor, BLACK, WHITE,                                  BLACK, WHITE,                                  WHITE, RED,                                  WHITE, MAGENTA );  SetColor( &MessageColor );	  msgwin = CreateWindow( 4, 78 - len - 6, 3, len + 6,                        REGULAR_BOARD, NULL, &MessageColor );  mvwaddstr( msgwin->win, 1, 3, msg );  wrefresh( msgwin->win );  beep();  getch();	  DeleteWindow( msgwin );}	MessageBX1( char *msg ){  int len;  WINDOWS *msgwin;  COLORPATTERN MessageColor;  len = strlen( msg );  len = len % 2 == 0 ? len : len + 1;  SetColorPattern( &MessageColor, BLACK, WHITE,                                  BLACK, WHITE,                                  WHITE, RED,                                  WHITE, MAGENTA );  SetColor( &MessageColor );	  msgwin = CreateWindow( 4, 78 - len - 6, 3, len + 6,                        REGULAR_BOARD, NULL, &MessageColor );  mvwaddstr( msgwin->win, 1, 3, msg );  wrefresh( msgwin->win );  beep();  /*getch(); */	  DeleteWindow( msgwin );}	WINDOWS * CreateWindow( row, col, height, width, board, title, colorpattern )int row, col, height, width, board;char *title;COLORPATTERN *colorpattern;{  int i;  char titleblank[80];  WINDOWS *NewWindow;  WINDOWLINK *winlink;  int curpos, widlen, titlelen;  WINDOW *win;  WINDOW *win1;  WINDOWS *NewWindow1;  if ( ( NewWindow = ( WINDOWS * )malloc( sizeof( WINDOWS ) ) ) == NULL )    return NULL;  if ( ( NewWindow1 = ( WINDOWS * )malloc( sizeof( WINDOWS ) ) ) == NULL )    return NULL;  widlen = ( width % 2 == 0 ) ? width : width + 1;  memset( titleblank, ' ', widlen );  titleblank[widlen] = 0;  /* 画阴影 */  if ( HasColors )  {    win1 = newwin( height, widlen, row + 1, col + 2 );/*for test*/    NewWindow1->win = win1;    NewWindow1->row = row+1;    NewWindow1->col = col+2;    NewWindow1->height = height;    NewWindow1->width = widlen;    NewWindow1->boardtype = board;    NewWindow1->title = NULL;	    AddToWindowLink( NewWindow1 );/*    werase( win );    delwin( win );*/    wrefresh( win1 );  }  win = newwin( height, widlen, row, col );    NewWindow->win = win;  NewWindow->row = row;  NewWindow->col = col;  NewWindow->height = height;  NewWindow->width = widlen;  NewWindow->boardtype = board;  NewWindow->title = title;	  AddToWindowLink( NewWindow );  if ( board == NO_BOARD )    return ( NewWindow );  if ( HasColors )  {    SetColor( colorpattern );    wattrset( win, COLOR_PAIR( TEXT_PATTERN ) );    for( i = 1; i < height; i ++ )      mvwaddstr( win, i, 0, titleblank );  }  if ( title != NULL )   {    char titleboxl[20], titleboxr[20], tmp[80];    if ( board == BOLD_BOARD )    {      strcpy( titleboxl, Bold[6] );      strcpy( titleboxr, Bold[4] );    }    if ( board == REGULAR_BOARD )    {      strcpy( titleboxl, Regular[6] );      strcpy( titleboxr, Regular[4] );    }    if ( HasColors )    {      wattrset( win, COLOR_PAIR( BOARD_PATTERN ) );      BoxInWin( win, 1, 0, height - 1, widlen, board );      /*if ( strlen( title ) % 2 != 0 )*/      /*strcat( title, " " ); */  /*dangerous*/      titlelen = (strlen(title)%2==0)?strlen(title) : strlen(title)+1;      curpos = ( widlen - titlelen ) / 2;		       memcpy( titleblank + curpos, title, strlen( title ) );      /*init_pair( TITLE_PATTERN, WHITE, BLUE );*/      wattrset( win, COLOR_PAIR( TITLE_PATTERN ) );       mvwaddstr( win, 0, 0, titleblank );    }    else    {      /*if ( strlen( title ) % 2 != 0 )*/      /* strcat( title, " " );*/      sprintf( tmp, "%s%s%s", titleboxl, title, titleboxr );      curpos = ( widlen - strlen( tmp ) ) / 2;      curpos = curpos % 2 == 0 ? curpos : curpos + 1;      BoxWin( win, board );      mvwaddstr( win, 0, curpos, tmp );    }  }  else  {    if ( HasColors )      wattrset( win, COLOR_PAIR( BOARD_PATTERN ) );    BoxWin( win, board );  }  if ( HasColors )    wattrset( win, COLOR_PAIR( TEXT_PATTERN ) );  wrefresh( win );  return ( NewWindow );}DeleteWindow( thiswindow )WINDOWS *thiswindow;{  WINDOWLINK *LastWinLink;  WINDOWLINK *OldWinLink;  werase( thiswindow->win );  delwin( thiswindow->win );  wrefresh( thiswindow->win );  DeleteLastWindowLink();  /*  DeleteFromWindowLink( thiswindow );  if ( LastWinLink != &MyWinLink )  {    touchwin( LastWinLink->thiswindow->win );    wrefresh( LastWinLink->thiswindow->win );  }  */  LastWinLink = FindLastWindowLink();/*for test*/  if ( HasColors )  /*阴影*/  {    werase( LastWinLink->thiswindow->win );    delwin( LastWinLink->thiswindow->win );    wrefresh( LastWinLink->thiswindow->win );    DeleteLastWindowLink();  }  touchwin( stdscr );  wnoutrefresh( stdscr );  if (HasColors)    BackGround(WHITE, CYAN);  if ( ( OldWinLink = MyWinLink.nextwinnode ) != NULL )  {    while( OldWinLink != NULL )    {      /*wnoutrefresh( OldWinLink->thiswindow->win );*/      touchwin( OldWinLink->thiswindow->win );      wnoutrefresh( OldWinLink->thiswindow->win );      /*wrefresh( OldWinLink->thiswindow->win );*/      OldWinLink = OldWinLink->nextwinnode;    }  }}SetMessageShowMode( ShowMode )int ShowMode;{  MessageShowMode = ShowMode;}SetMessage( Message )char *Message;{  char blank[71];  memset( blank, ' ', 70 );  blank[70] = 0;  if ( HasColors )  {    init_pair( MESSAGE_PATTERN, BLACK, WHITE );     attrset( COLOR_PAIR( MESSAGE_PATTERN ) );  }  else  {    if ( MessageShowMode == REV_SHOW )      standout();    else      standend();  }  mvaddstr( MESSAGELINE, 0, "【提示】" );  refresh();  if ( Message != NULL )    mvaddstr( MESSAGELINE, 9, Message );  refresh();  mvaddstr( MESSAGELINE, 65, "☆杭州信雅达☆" );  if ( ! HasColors )    standend();  refresh();}InitSystem( ){  initscr();  InitWindowLink();}InitColorSystem( ){  TTYStatus(1);  initscr();  start_color();  HasColors = has_colors();  InitWindowLink();}TTYStatus(n)short n; {  static struct termio tty_ents;  static char tty_mark = 0;  if (n == 1)  {    if (ioctl(fileno(stdout),TCGETA,&tty_ents)==-1)      return;    tty_mark = 1;  }  else if (tty_mark)    ioctl(fileno(stdout),TCSETAW,&tty_ents);  return;}MySystem(s,opt)char *s;short opt;{  int ret;  savetty();  keypad(stdscr,FALSE);  TTYStatus(2);  fflush(stdin);  fflush(stdout);  if (opt)  {    system("echo \"\\033[m\"");  }  ret = system(s);  if (opt && WAIT_ENTER)  {    system(WAIT_ENTER_KEY);  }  fflush(stdin);  fflush(stdout);  resetty();  keypad(stdscr,TRUE);  if ( 0 == ret)    return TRUE;  else    return FALSE;}SystemOpen(){  standend();  refresh();  savetty();  clear();  refresh();  keypad(stdscr,FALSE);  TTYStatus(2);  fflush(stdin);  fflush(stdout);  SystemBackGround(BLACK, CYAN);    return 0;}SystemClose(){  fflush(stdin);  fflush(stdout);  resetty();  keypad(stdscr,TRUE);   return 0;}TouchScreen(){  WINDOW * hwin;  hwin = newwin(0, 0, 0, 0);  wrefresh(hwin);  delwin(hwin);  touchwin(stdscr);}QuitSystem( int mode ){  if ( mode == TRUE || DialogBox( YES_NO_BOX, REGULAR_BOARD, "真的要退出系统吗 ?" ) == YES )  {	     clear();    refresh();    endwin();    exit( 0 );  }}DialogBox( DialogBoxType, BoardType, Message )int DialogBoxType, BoardType;char *Message;{  int PadRet = CANCEL, pos;  WINDOWS *DialogWin;  PAD	DialogBoxPad;  COLORPATTERN DialogColor;  static ITEMS YesNoItems[] = {    { "【  是  】", NULL, NULL },    { "【  否  】", NULL, NULL }  };  static ITEMS OkCancelItems[] = {    { "【 确认 】", NULL, NULL },    { "【 取消 】", NULL, NULL }  };  static ITEMS YesNoCancelItems[] = {    { "【 是 】", NULL, NULL },    { "【 否 】", NULL, NULL },    { "【取消】", NULL, NULL }  };  static ITEMS RetryAbordCancelItems[] = {    { "【重试】", NULL, NULL },    { "【放弃】", NULL, NULL },    { "【取消】", NULL, NULL }  };  static ITEMS ConfirmItems[] = {    { "【 确认 】", NULL, NULL },  };  SetColorPattern( &DialogColor,            BLACK, WHITE, BLACK, WHITE, WHITE, RED, WHITE, MAGENTA );  SetColor( &DialogColor );   DialogWin = CreateWindow( 8, 22, 9, 36, REGULAR_BOARD, "注    意",                            &DialogColor );  pos = 17 - strlen(Message)/2;  /*mvwaddstr( DialogWin->win, 3, 6, Message );*/  mvwaddstr( DialogWin->win, 3, pos, Message );  wrefresh( DialogWin->win );  switch( DialogBoxType )  {    case YES_NO_BOX:      InitPad(DialogWin->win, &DialogBoxPad, 6, 7, YesNoItems, 2, &DialogColor);      switch( ActivatePad( &DialogBoxPad ) )       {        case 0:          PadRet = YES;          break;        case 1:          PadRet = NO;          break;        defautlt:          break;      }      break;    case OK_CANCEL_BOX:      InitPad(DialogWin->win,&DialogBoxPad, 6,7,OkCancelItems, 2, &DialogColor);      switch( ActivatePad( &DialogBoxPad ) )       {        case 0:          PadRet = OK;          break;        case 1:          PadRet = CANCEL;          break;        default:          break;      }      break;    case YES_NO_CANCEL_BOX:      InitPad(DialogWin->win,&DialogBoxPad,6,5,YesNoCancelItems,3,&DialogColor);      switch( ActivatePad( &DialogBoxPad ) )       {        case 0:          PadRet = YES;          break;        case 1:          PadRet = NO;          break;        case 2:          PadRet = CANCEL;          break;        default:          break;      }      break;    case RETRY_ABORD_CANCEL_BOX:      InitPad( DialogWin->win, &DialogBoxPad, 6, 5, RetryAbordCancelItems, 3,               &DialogColor );      switch( ActivatePad( &DialogBoxPad ) )       {        case 0:          PadRet = RETRY;          break;        case 1:          PadRet = ABORD;          break;        case 2:          PadRet = CANCEL;          break;        default:          break;      }	      break;    case CONFIRM_BOX:      InitPad(DialogWin->win,&DialogBoxPad, 6,13,ConfirmItems, 1, &DialogColor);      PadRet = ActivatePad( &DialogBoxPad );      break;    default:      break;  }  DeleteWindow( DialogWin );  return PadRet;}/*char *RightTrim( string )char *string;{  int n = strlen( string ) - 1;  while( n > 0 )  {    if ( *( string + n ) != ' ' )    {      *( string + n + 1 ) = 0;      break;    }    else      n --;  }  return string;}char *LeftTrim( string )char *string;{  while( *( string ++ ) == ' ' );    return string - 1;}char *AllTrim( string )char *string;{  return RightTrim( LeftTrim( string ) );}*/SetColorPattern( COLORPATTERN *colorpattern, 		 short text_fcolor, short text_bcolor,		 short board_fcolor, short board_bcolor,		 short title_fcolor, short title_bcolor,		 short hight_fcolor, short hight_bcolor ){  colorpattern->textcolor[0] = text_fcolor;  colorpattern->textcolor[1] = text_bcolor;  colorpattern->boardcolor[0] = board_fcolor;  colorpattern->boardcolor[1] = board_bcolor;  colorpattern->titlecolor[0] = title_fcolor;  colorpattern->titlecolor[1] = title_bcolor;  colorpattern->hightcolor[0] = hight_fcolor;  colorpattern->hightcolor[1] = hight_bcolor;}SetColor( COLORPATTERN *colorpattern ){  init_pair( TEXT_PATTERN,              colorpattern->textcolor[0], colorpattern->textcolor[1] );  init_pair( BOARD_PATTERN,             colorpattern->boardcolor[0], colorpattern->boardcolor[1] );  init_pair( TITLE_PATTERN,              colorpattern->titlecolor[0], colorpattern->titlecolor[1] );  init_pair( HIGHT_PATTERN,             colorpattern->hightcolor[0], colorpattern->hightcolor[1] );}BackGround( short fcolor, short bcolor ){  int i;  char blank[81];  memset( blank, ' ', 80 );  blank[80] = 0;  init_pair( BACK_PATTERN, fcolor, bcolor );  attrset( COLOR_PAIR( BACK_PATTERN ) );  for( i = 3; i <= 24; i ++ )    mvaddstr( i, 0, blank );  refresh();}SystemBackGround( short fcolor, short bcolor ){  int i;  char blank[81];  memset( blank, ' ', 80 );  blank[80] = 0;  init_pair( BACK_PATTERN, fcolor, bcolor );  attrset( COLOR_PAIR( BACK_PATTERN ) );  for( i = 0; i <= 24; i ++ )    mvaddstr( i, 0, blank );  refresh();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -