示例#1
0
//-------------------------------------------------------------------------------------------------
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);
}
示例#2
0
/* ---------------------------------------------------------------------------
 */
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;
}
示例#3
0
//-------------------------------------------------------------------------------------------------
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();
}
示例#4
0
//-------------------------------------------------------------------------------------------------
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();
}