bool DictViewInstance::Save()
{
  reg.SetRegKey(reg_key.c_str(), dict_view_uid_key, reg_key.c_str());
  reg.SetRegKey(reg_key.c_str(), dict_view_name_key, name.c_str());
  reg.SetFarString(reg_key.c_str(), dict_view_logic_key, logic.AsString());
  return true;
}
void CMailViewTpl::processHeaders( IWriteSink & f )
{
  PKludges Kludges = m_origMsg->GetKludges();

  for ( int i = 0; i < Kludges->Count(); i ++ )
  {
    FarString kludge = Kludges->At( i );

    m_origMsg->DecodeKludge( kludge.GetBuffer() ); kludge.ReleaseBuffer();

    int pos = 1;

    while ( ( pos = kludge.IndexOf( '\t', pos ) ) != -1 )
    {
      FarString ss = kludge.Left( pos );
      if (ss.Length() > 0 && ss[ss.Length() - 1] == ':')
      {
        pos ++;
        continue;
      }
      f.write( ss.c_str(), ss.Length() );
      f.write( "\r\n", 2 );
      kludge = kludge.Right( kludge.Length() - pos );
    }

    f.write( kludge.c_str(), kludge.Length() );

    if ( i < Kludges->Count() - 1 )
      f.write( "\r\n", 2 );
  }
}
void DbgMsgV( char const * const Title, char const * const Fmt, va_list argList )
{
  FarString Tmp;
  Tmp.Format( "%s\n%s", Title, Tmp.FormatV( Fmt, argList ).c_str() );

  FarMessage::Show( FMSG_WARNING|FMSG_ALLINONE|FMSG_MB_OK, NULL, (LPCSTR const*)Tmp.c_str(), 0, 0 );
}
void CMessageTemplate::writeFormatted( const FarString& str, int len, int fill, IWriteSink & f )
{
  if ( len > 0 )
  {
    f.write( str.c_str(), min( len, str.Length() ) );

    if ( fill != 0 )
    {
      for ( int i = str.Length(); i < len; i ++ )
        f.write( (const char*)&fill, 1 );
    }
  }
  else
    f.write( str.c_str(), str.Length() );

}
int DictViewFactory::FindDictViewId(const FarString& id, 
  const FarString& name, void* client_context)
{
  FindDictViewId_Ctx* ctx = (FindDictViewId_Ctx *)client_context;
  if (ctx->name == name) {
    ctx->uid = atoi(id.c_str()+prefix_length);
    return 0;
  } else 
    return 1;
}
void CMailViewTpl::processText( int len, IWriteSink & f )
{
  // TODO: check File
  FarFileName bodyFile = FarFileName::MakeTemp( "mvb" );

  File::mkdirs( bodyFile.GetPath() );

  PMsgPart TextPart = m_origMsg->GetTextPart();
  if ( TextPart )
  {
    long Encoding = GetMsgEncoding( m_origMsg, TextPart, m_defaultEncoding );

    if ( len > 20 )
    {
      FarStringArray Src;
      StrPtr sp = { NULL, 0, (LPSTR)TextPart->GetContentData() };
      LPCSTR Last = sp.Nxt + TextPart->GetContentSize();
      while ( sp.Nxt )
      {
        GetStrPtr( sp.Nxt, &sp, Last );
        Src.Add( ToOEMString( FarString( sp.Str, sp.Len ), Encoding ) );
      }
      FarStringArray * Dst = WordWrapLines( Src, len, true );
      for ( int i = 0; i < Dst->Count(); i ++ )
      {
        f.write( Dst->At( i ), strlen( Dst->At( i ) ) );
        f.write( "\r\n", 2 );
      }
      delete Dst;
    }
    else
    {
      FarString s = (LPCSTR)TextPart->GetContentData();

      s.SetLength( TextPart->GetContentSize() );

      s = ToOEMString( s, Encoding );

      f.write( s.c_str(), s.Length() );
    }

    File::deleteit( bodyFile );
  }
}
int DictViewInstance::NextUID()
{
  int uid = reg.GetRegKey(reg_key.c_str(), dict_view_last_uid_key, 100000) + 1;
  reg.SetRegKey(reg_key.c_str(), dict_view_last_uid_key, uid);
  return uid;
}
void CMailViewTpl::processKludge( LPCSTR kludge, IWriteSink & f )
{
  FarString s = m_origMsg->GetDecodedKludge( kludge );

  f.write( s.c_str(), s.Length() );
}
	void SetText (FarString &String)
	{
		far_assert(fItem);
		strncpy (fItem->Data, String.c_str(), sizeof (fItem->Data)-1);
	}