亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cursesf.cc

?? ncurses-5.4 需要的就來下把 一定會有用的哦
?? CC
字號:
// * this is for making emacs happy: -*-Mode: C++;-*-/**************************************************************************** * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              * *                                                                          * * Permission is hereby granted, free of charge, to any person obtaining a  * * copy of this software and associated documentation files (the            * * "Software"), to deal in the Software without restriction, including      * * without limitation the rights to use, copy, modify, merge, publish,      * * distribute, distribute with modifications, sublicense, and/or sell       * * copies of the Software, and to permit persons to whom the Software is    * * furnished to do so, subject to the following conditions:                 * *                                                                          * * The above copyright notice and this permission notice shall be included  * * in all copies or substantial portions of the Software.                   * *                                                                          * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  * * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   * * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   * * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    * * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    * * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               * *                                                                          * * Except as contained in this notice, the name(s) of the above copyright   * * holders shall not be used in advertising or otherwise to promote the     * * sale, use or other dealings in this Software without prior written       * * authorization.                                                           * ****************************************************************************//**************************************************************************** *   Author: Juergen Pfeifer, 1997                                          * ****************************************************************************/#include "internal.h"#include "cursesf.h"#include "cursesapp.h"MODULE_ID("$Id: cursesf.cc,v 1.16 2003/10/25 15:04:46 tom Exp $")NCursesFormField::~NCursesFormField () {  if (field)    OnError(::free_field (field));}/* Construct a FIELD* array from an array of NCursesFormField * objects. */FIELD**NCursesForm::mapFields(NCursesFormField* nfields[]) {  int fieldCount = 0,lcv;  FIELD** old_fields;  assert(nfields != 0);  for (lcv=0; nfields[lcv]->field; ++lcv)    ++fieldCount;  FIELD** fields = new FIELD*[fieldCount + 1];  for (lcv=0;nfields[lcv]->field;++lcv) {    fields[lcv] = nfields[lcv]->field;  }  fields[lcv] = NULL;  my_fields = nfields;  if (form && (old_fields = ::form_fields(form))) {    ::set_form_fields(form,(FIELD**)0);    delete[] old_fields;  }  return fields;}void NCursesForm::setDefaultAttributes() {  NCursesApplication* S = NCursesApplication::getApplication();  int n = count();  if (n > 0) {    for(int i=0; i<n; i++) {      NCursesFormField* f = (*this)[i];      if ((f->options() & (O_EDIT|O_ACTIVE))==(O_EDIT|O_ACTIVE)) {	if (S) {	  f->set_foreground(S->foregrounds());	  f->set_background(S->backgrounds());	}	f->set_pad_character('_');      }      else {	if (S)	  f->set_background(S->labels());      }    }  }  if (S) {    bkgd(' '|S->dialog_backgrounds());    if (sub)      sub->bkgd(' '|S->dialog_backgrounds());  }}voidNCursesForm::InitForm(NCursesFormField* nfields[],		      bool with_frame,		      bool autoDelete_Fields) {  int mrows, mcols;  keypad(TRUE);  meta(TRUE);  b_framed = with_frame;  b_autoDelete = autoDelete_Fields;  form = (FORM*)0;  form = ::new_form(mapFields(nfields));  if (!form)    OnError (E_SYSTEM_ERROR);  UserHook* hook = new UserHook;  hook->m_user   = NULL;  hook->m_back   = this;  hook->m_owner  = form;  ::set_form_userptr(form,(void*)hook);  ::set_form_init  (form, NCursesForm::frm_init);  ::set_form_term  (form, NCursesForm::frm_term);  ::set_field_init (form, NCursesForm::fld_init);  ::set_field_term (form, NCursesForm::fld_term);  scale(mrows, mcols);  ::set_form_win(form, w);  if (with_frame) {    if ((mrows > height()-2) || (mcols > width()-2))      OnError(E_NO_ROOM);    sub = new NCursesWindow(*this,mrows,mcols,1,1,'r');    ::set_form_sub(form, sub->w);    b_sub_owner = TRUE;  }  else {    sub = (NCursesWindow*)0;    b_sub_owner = FALSE;  }  options_on(O_NL_OVERLOAD);  setDefaultAttributes();}NCursesForm::~NCursesForm() {  UserHook* hook = (UserHook*)::form_userptr(form);  delete hook;  if (b_sub_owner) {    delete sub;    ::set_form_sub(form,(WINDOW *)0);  }  if (form) {    FIELD** fields = ::form_fields(form);    int cnt = count();    OnError(::set_form_fields(form,(FIELD**)0));    if (b_autoDelete) {      if (cnt>0) {	for (int i=0; i <= cnt; i++)	  delete my_fields[i];      }      delete[] my_fields;    }    ::free_form(form);    // It's essential to do this after free_form()    delete[] fields;  }}voidNCursesForm::setSubWindow(NCursesWindow& nsub) {  if (!isDescendant(nsub))    OnError(E_SYSTEM_ERROR);  else {    if (b_sub_owner)      delete sub;    sub = &nsub;    ::set_form_sub(form,sub->w);  }}/* Internal hook functions. They will route the hook * calls to virtual methods of the NCursesForm class, * so in C++ providing a hook is done simply by * implementing a virtual method in a derived class */voidNCursesForm::frm_init(FORM *f) {  getHook(f)->On_Form_Init();}voidNCursesForm::frm_term(FORM *f) {  getHook(f)->On_Form_Termination();}voidNCursesForm::fld_init(FORM *f) {  NCursesForm* F = getHook(f);  F->On_Field_Init (*(F->current_field ()));}voidNCursesForm::fld_term(FORM *f) {  NCursesForm* F = getHook(f);  F->On_Field_Termination (*(F->current_field ()));}voidNCursesForm::On_Form_Init() {}voidNCursesForm::On_Form_Termination() {}voidNCursesForm::On_Field_Init(NCursesFormField& field) {}voidNCursesForm::On_Field_Termination(NCursesFormField& field) {}// call the form driver and do basic error checking.intNCursesForm::driver (int c) {  int res = ::form_driver (form, c);  switch (res) {  case E_OK:  case E_REQUEST_DENIED:  case E_INVALID_FIELD:  case E_UNKNOWN_COMMAND:    break;  default:    OnError (res);  }  return (res);}void NCursesForm::On_Request_Denied(int c) const {  ::beep();}void NCursesForm::On_Invalid_Field(int c) const {  ::beep();}void NCursesForm::On_Unknown_Command(int c) const {  ::beep();}static const int CMD_QUIT = MAX_COMMAND + 1;NCursesFormField*NCursesForm::operator()(void) {  int drvCmnd;  int err;  int c;  post();  show();  refresh();  while (((drvCmnd = virtualize((c=getKey()))) != CMD_QUIT)) {    switch((err=driver(drvCmnd))) {    case E_REQUEST_DENIED:      On_Request_Denied(c);      break;    case E_INVALID_FIELD:      On_Invalid_Field(c);      break;    case E_UNKNOWN_COMMAND:      On_Unknown_Command(c);      break;    case E_OK:      break;    default:      OnError(err);    }  }  unpost();  hide();  refresh();  return my_fields[::field_index (::current_field (form))];}// Provide a default key virtualization. Translate the keyboard// code c into a form request code.// The default implementation provides a hopefully straightforward// mapping for the most common keystrokes and form requests.intNCursesForm::virtualize(int c) {  switch(c) {  case KEY_HOME      : return(REQ_FIRST_FIELD);  case KEY_END       : return(REQ_LAST_FIELD);  case KEY_DOWN      : return(REQ_DOWN_CHAR);  case KEY_UP        : return(REQ_UP_CHAR);  case KEY_LEFT      : return(REQ_PREV_CHAR);  case KEY_RIGHT     : return(REQ_NEXT_CHAR);  case KEY_NPAGE     : return(REQ_NEXT_PAGE);  case KEY_PPAGE     : return(REQ_PREV_PAGE);  case KEY_BACKSPACE : return(REQ_DEL_PREV);  case KEY_ENTER     : return(REQ_NEW_LINE);  case KEY_CLEAR     : return(REQ_CLR_FIELD);  case CTRL('X')     : return(CMD_QUIT);        // eXit  case CTRL('F')     : return(REQ_NEXT_FIELD);  // Forward  case CTRL('B')     : return(REQ_PREV_FIELD);  // Backward  case CTRL('L')     : return(REQ_LEFT_FIELD);  // Left  case CTRL('R')     : return(REQ_RIGHT_FIELD); // Right  case CTRL('U')     : return(REQ_UP_FIELD);    // Up  case CTRL('D')     : return(REQ_DOWN_FIELD);  // Down  case CTRL('W')     : return(REQ_NEXT_WORD);  case CTRL('T')     : return(REQ_PREV_WORD);  case CTRL('A')     : return(REQ_BEG_FIELD);  case CTRL('E')     : return(REQ_END_FIELD);  case CTRL('I')     : return(REQ_INS_CHAR);  case CTRL('M')     :  case CTRL('J')     : return(REQ_NEW_LINE);  case CTRL('O')     : return(REQ_INS_LINE);  case CTRL('V')     : return(REQ_DEL_CHAR);  case CTRL('H')     : return(REQ_DEL_PREV);  case CTRL('Y')     : return(REQ_DEL_LINE);  case CTRL('G')     : return(REQ_DEL_WORD);  case CTRL('K')     : return(REQ_CLR_EOF);  case CTRL('N')     : return(REQ_NEXT_CHOICE);  case CTRL('P')     : return(REQ_PREV_CHOICE);  default:    return(c);  }}//// -------------------------------------------------------------------------// User Defined Fieldtypes// -------------------------------------------------------------------------//bool UserDefinedFieldType::fcheck(FIELD *f, const void *u) {  NCursesFormField* F = (NCursesFormField*)u;  assert(F != 0);  UserDefinedFieldType* udf = (UserDefinedFieldType*)(F->fieldtype());  assert(udf != 0);  return udf->field_check(*F);}bool UserDefinedFieldType::ccheck(int c, const void *u) {  NCursesFormField* F = (NCursesFormField*)u;  assert(F != 0);  UserDefinedFieldType* udf =    (UserDefinedFieldType*)(F->fieldtype());  assert(udf != 0);  return udf->char_check(c);}void* UserDefinedFieldType::makearg(va_list* va) {  return va_arg(*va,NCursesFormField*);}FIELDTYPE* UserDefinedFieldType::generic_fieldtype =  ::new_fieldtype(UserDefinedFieldType::fcheck,		  UserDefinedFieldType::ccheck);FIELDTYPE* UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice =  ::new_fieldtype(UserDefinedFieldType::fcheck,		  UserDefinedFieldType::ccheck);bool UserDefinedFieldType_With_Choice::next_choice(FIELD *f, const void *u) {  NCursesFormField* F = (NCursesFormField*)u;  assert(F != 0);  UserDefinedFieldType_With_Choice* udf =    (UserDefinedFieldType_With_Choice*)(F->fieldtype());  assert(udf != 0);  return udf->next(*F);}bool UserDefinedFieldType_With_Choice::prev_choice(FIELD *f, const void *u) {  NCursesFormField* F = (NCursesFormField*)u;  assert(F != 0);  UserDefinedFieldType_With_Choice* udf =    (UserDefinedFieldType_With_Choice*)(F->fieldtype());  assert(udf != 0);  return udf->previous(*F);}class UDF_Init {private:  int code;  static UDF_Init* I;public:  UDF_Init() {    code = ::set_fieldtype_arg(UserDefinedFieldType::generic_fieldtype,			       UserDefinedFieldType::makearg,			       NULL,			       NULL);    if (code==E_OK)      code = ::set_fieldtype_arg	(UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice,	 UserDefinedFieldType::makearg,	 NULL,	 NULL);    if (code==E_OK)      code = ::set_fieldtype_choice	(UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice,	 UserDefinedFieldType_With_Choice::next_choice,	 UserDefinedFieldType_With_Choice::prev_choice);  }};UDF_Init* UDF_Init::I = new UDF_Init();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产亚洲另类动漫| 三级亚洲高清视频| 一区二区三区产品免费精品久久75| 玉米视频成人免费看| 国产精品一线二线三线精华| 欧美亚洲动漫制服丝袜| xfplay精品久久| 亚洲毛片av在线| 国产成人自拍高清视频在线免费播放| 91精品91久久久中77777| 精品国产乱码久久久久久蜜臀| 一区二区视频免费在线观看| 激情小说欧美图片| 欧美一区日本一区韩国一区| 亚洲久草在线视频| 成人午夜伦理影院| 日韩一区二区在线看| 亚洲愉拍自拍另类高清精品| 东方aⅴ免费观看久久av| 精品国产乱码久久久久久蜜臀 | 欧美自拍偷拍一区| 国产欧美一区二区精品忘忧草| 日韩电影在线免费看| 一本大道久久a久久综合婷婷| 中文乱码免费一区二区| 国模无码大尺度一区二区三区| 欧美一区二区三区人| 亚洲一区二区av电影| 欧美色图免费看| 一区二区在线免费观看| 91麻豆精品视频| 亚洲婷婷在线视频| 99久久精品情趣| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日韩色在线观看| 午夜久久久影院| 在线91免费看| 调教+趴+乳夹+国产+精品| 在线日韩国产精品| 亚洲一区成人在线| 欧美日韩中文另类| 五月天精品一区二区三区| 欧美精品欧美精品系列| 麻豆精品视频在线观看免费| 精品少妇一区二区三区日产乱码 | 成人欧美一区二区三区在线播放| 国产在线精品一区二区不卡了 | 国产又粗又猛又爽又黄91精品| 日韩一区二区三区免费看| 日韩高清电影一区| 欧美日韩视频在线第一区 | 久久精品噜噜噜成人av农村| 欧美一区二区网站| 精品一区二区三区免费观看 | 中文字幕第一区第二区| 成人黄色免费短视频| 亚洲日本va在线观看| 欧美日韩美少妇| 老司机午夜精品| 欧美激情一区在线| 色婷婷久久99综合精品jk白丝| 天堂影院一区二区| 久久亚洲精品国产精品紫薇| 波波电影院一区二区三区| 夜色激情一区二区| 欧美电影免费提供在线观看| 成人av在线影院| 亚洲综合免费观看高清完整版 | 国产精品一区免费在线观看| 中文字幕一区二区三区av| 欧美视频中文一区二区三区在线观看| 奇米影视在线99精品| 日本一区二区电影| 欧洲一区在线观看| 国产一区二区三区蝌蚪| 亚洲另类在线一区| 日韩欧美在线123| 99国产精品久久久久久久久久| 日韩精品成人一区二区三区| 国产精品素人视频| 亚洲黄色小说网站| 国产精品一区一区| 久久久不卡网国产精品一区| 色拍拍在线精品视频8848| 成人免费视频免费观看| 亚洲国产日韩一区二区| 久久免费国产精品| 5858s免费视频成人| 不卡的av电影在线观看| 麻豆免费精品视频| 亚洲国产综合色| 综合久久久久综合| 久久久综合精品| 日韩视频在线观看一区二区| 91黄色免费观看| 丁香婷婷综合网| 国内外成人在线视频| 亚洲第一久久影院| 一区二区成人在线视频| 中文字幕高清不卡| 国产亚洲欧美日韩在线一区| 欧美一区二区私人影院日本| 在线免费观看一区| 99精品桃花视频在线观看| 国产v综合v亚洲欧| 国产一区二区免费看| 久久精品国产999大香线蕉| 亚洲国产精品嫩草影院| 一区二区三区不卡在线观看 | 国产精品99久久久久久有的能看 | 亚洲黄网站在线观看| 国产精品区一区二区三区 | 欧美一二三区在线观看| 欧美这里有精品| 91亚洲国产成人精品一区二区三 | 亚洲自拍偷拍av| 亚洲乱码国产乱码精品精的特点 | 日日摸夜夜添夜夜添国产精品| 一区二区视频免费在线观看| 亚洲精品国产成人久久av盗摄| 一色屋精品亚洲香蕉网站| 欧美激情资源网| 亚洲欧洲另类国产综合| 综合网在线视频| 一区二区三区精品| 日韩专区欧美专区| 激情综合亚洲精品| 国产激情视频一区二区在线观看| 国产一区二区三区香蕉| 国产91精品一区二区麻豆亚洲| 色av成人天堂桃色av| 欧美影视一区在线| 欧美三级中文字幕在线观看| 欧美日韩成人综合天天影院| 91精品视频网| 欧美一区二区三区四区久久| 日韩美女一区二区三区| 国产亚洲精品bt天堂精选| 国产精品网站在线观看| 亚洲视频小说图片| 亚洲图片自拍偷拍| 久久成人18免费观看| jizz一区二区| 欧美性xxxxxx少妇| 欧美一区二区三区免费视频| 日韩免费福利电影在线观看| 国产精品免费视频网站| 亚洲精品高清视频在线观看| 日本成人在线电影网| 国产宾馆实践打屁股91| 91成人免费网站| 精品欧美乱码久久久久久| 欧美国产国产综合| 午夜精品影院在线观看| 国产麻豆成人传媒免费观看| kk眼镜猥琐国模调教系列一区二区| 欧美手机在线视频| 久久免费偷拍视频| 亚洲国产日韩av| 国产盗摄一区二区三区| 在线视频一区二区三| 久久蜜桃av一区二区天堂| 伊人一区二区三区| 国产一区二区三区精品视频| 在线看国产一区| 国产日韩欧美电影| 日本怡春院一区二区| 99麻豆久久久国产精品免费优播| 欧美日本精品一区二区三区| 国产欧美一区二区精品忘忧草| 亚洲成人免费观看| 91在线看国产| www激情久久| 婷婷综合五月天| 91老师片黄在线观看| 久久久久久久一区| 天天亚洲美女在线视频| 99久久伊人久久99| 久久久久久久综合狠狠综合| 天天影视涩香欲综合网| 91麻豆国产自产在线观看| 久久久午夜电影| 日本不卡的三区四区五区| 在线视频一区二区免费| 亚洲三级电影网站| 成人精品视频.| 国产亚洲精品免费| 国产一区二区女| 亚洲精品一区二区精华| 日韩va亚洲va欧美va久久| 欧美亚洲国产一区二区三区va| 国产精品传媒视频| 不卡的av中国片| 亚洲国产精品激情在线观看| 国产乱码精品1区2区3区| 欧美一区二区成人| 日韩精品免费专区| 欧美精品乱码久久久久久按摩| 午夜精品一区二区三区免费视频| 在线观看区一区二|