Ticket #1465: filezilla_unicode_status.patch

File filezilla_unicode_status.patch, 2.8 KB (added by tommywu, 20 years ago)

show unicode string in status window (CRichEditCtrl)

  • StatusCtrl.cpp

    diff -Nur source/StatusCtrl.cpp source.patch/StatusCtrl.cpp
    old new  
    4747{
    4848}
    4949
    50 
    5150BEGIN_MESSAGE_MAP(CStatusCtrl, CRichEditCtrl)
    5251    //{{AFX_MSG_MAP(CStatusCtrl)
    5352    ON_WM_ERASEBKGND()
     
    184183        Copy();
    185184}
    186185
    187 /* Unused Unicode code
     186/* Unused Unicode code*/
    188187BOOL CStatusCtrl::Create(DWORD in_dwStyle,  const RECT& in_rcRect,
    189188                             CWnd* in_pParentWnd, UINT in_nID)
    190189{
     
    231230    }
    232231   
    233232    return l_pState->m_hInstRichEdit20 != NULL ;
    234 }*/
     233}/**/
    235234
    236235int CStatusCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
    237236{
     
    239238        return -1;
    240239
    241240    USES_CONVERSION;
    242    
     241
     242#ifdef _UNICODE
     243    m_RTFHeader = "{\\rtf1\\ansi\\deff0\\ud";
     244#else
    243245    m_RTFHeader = "{\\rtf1\\ansi\\deff0";
     246#endif
    244247
    245248    HFONT hSysFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
    246249
     
    317320    status.Replace(_T("\r"), _T(""));
    318321    status.Replace(_T("\n"), _T("\\status"));
    319322
     323#ifdef _UNICODE
     324    int len = status.GetLength();
     325    int i;
     326    CString ustatus = "\\uc0";
     327    bool last_unicode = false;
     328    for (i = 0; i < len; i++) {
     329        wchar_t x;
     330        char buf[20];
     331
     332        x = status[i];
     333        if (x < 256) {
     334            if (last_unicode && x >= '0' && x <= '9') {
     335                ustatus += "{";
     336                ustatus += x;
     337                ustatus += "}";
     338            }
     339            else
     340                ustatus += x;
     341            last_unicode = false;
     342        }
     343        else {
     344            sprintf(buf, "\\u%d.", (signed short)x);
     345            ustatus += buf;
     346            last_unicode = true;
     347        }
     348    }
     349    status = ustatus;
     350#endif
     351
    320352    CString stime;
    321353    if (timestamps)
    322354    {
     
    501525
    502526void CStatusCtrl::ChangeFont(void)
    503527{
     528#ifdef _UNICODE
     529    m_RTFHeader = "{\\rtf1\\ansi\\deff0\\ud";
     530#else
    504531    m_RTFHeader = "{\\rtf1\\ansi\\deff0";
     532#endif
    505533
    506534    HFONT hSysFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
    507535
  • StatusCtrl.h

    diff -Nur source/StatusCtrl.h source.patch/StatusCtrl.h
    old new  
    4242    virtual ~CStatusCtrl();
    4343
    4444    void ShowStatus(CString status, int nType);
    45 
    46 //  virtual BOOL Create( DWORD in_dwStyle, const RECT& in_rcRect,
    47 //                         CWnd* in_pParentWnd, UINT in_nID );
     45/**/
     46    virtual BOOL Create( DWORD in_dwStyle, const RECT& in_rcRect,
     47                         CWnd* in_pParentWnd, UINT in_nID );
    4848
    4949    // Generierte Nachrichtenzuordnungsfunktionen
    5050protected:
     
    7676    void ChangeFont(void);
    7777};
    7878
    79 /*class _AFX_RICHEDITEX_STATE
     79/**/class _AFX_RICHEDITEX_STATE
    8080{
    8181public:
    8282    _AFX_RICHEDITEX_STATE();
     
    8686};
    8787
    8888BOOL PASCAL AfxInitRichEditEx();
    89 */
     89/**/
    9090
    9191/////////////////////////////////////////////////////////////////////////////
    9292