//------------------------------------------------------------------------------------------------- void ConsoleMenu::EditMsg(tty_save_state& tty, const FieldTable::Pair *fld, Message *msg) const { string txt; int rval(-1); if (fld->_value._rlm) rval = SelectRealm(fld->_key, fld->_value._rlm); else { _os << endl << fld->_value._name << ": " << flush; GetString(tty, txt); if (msg->get_fp().is_group(fld->_key)) { int cnt(GetValue<int>(txt)); GroupBase *gb(msg->find_group(fld->_key)); if (gb && cnt) { for (int ii(0); ii < cnt; ++ii) { Message *gmsg(static_cast<Message *>(gb->create_group())); const FieldTable::Pair *fld; while((fld = SelectField(gmsg, ii + 1))) EditMsg(tty, fld, gmsg); _os << endl << endl << *static_cast<MessageBase *>(gmsg) << endl; if (get_yn("Add group to msg? (y/n):", true)) *gb += gmsg; } } } } BaseField *bf(fld->_value._create(txt, fld->_value._rlm, rval)); msg->add_field(bf->get_tag(), msg->get_fp().get_presence().end(), 0, bf, true); }
/* --------------------------------------------------------------------------- */ void cVideoOut::DrawVideo_420pl(cSyncTimer *syncTimer, sPicBuffer *pic) { if (hurryUp && (frame % dropInterval) == 0) { ++frame; ++droppedFrames; fprintf(stderr,"X"); delay -= dispTime = syncTimer->GetRelTime(); return; } if (stillPictureMode) { SelectField (pic); } sPicBuffer *scale_pic=NULL; if (scaleVid != 0) { scale_pic=GetBuffer(pic->format,pic->max_width,pic->max_height); CopyScalePicBuf(scale_pic, pic, 0, 0, pic->width, pic->height, vidX1, vidY1, vidX2-vidX1, vidY2-vidY1, 0,0,0,0); CopyPicBufferContext(scale_pic,pic); scale_pic->width=pic->width; scale_pic->height=pic->height; pic=scale_pic; }; if (delay > frametime * 100) ++repeatedFrames; Sync(syncTimer, &delay); oldPictureMutex.Lock(); OsdRefreshCounter=0; Osd_changed=0; CheckAspectDimensions(pic); // display picture YUV(pic); SetOldPicture(pic); oldPictureMutex.Unlock(); delay -= dispTime = syncTimer->GetRelTime(); ProcessEvents(); if (scale_pic) ReleaseBuffer(scale_pic); ++frame; }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::EditMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { Message *msg(SelectFromMsg(lst)); if (msg) { const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; } else break; } return lst.size(); }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::CreateMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { const BaseMsgEntry *mc(SelectMsg()); if (mc) { Message *msg(mc->_create()); const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; if (get_yn("Add to list? (y/n):", true)) lst.push_back(msg); } else break; } return lst.size(); }