Ignore:
Timestamp:
Apr 19, 2010, 6:00:05 PM (11 years ago)
Author:
dmik
Message:

Added support for copying text from the document information dialog to the clipboard (fixes ticket:142).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/gui/docInfoDlg.cpp

    r367 r406  
    4444#include "Lucide_res.h"
    4545#include "messages.h"
     46#include "cpconv.h"
    4647
    4748
     
    133134}
    134135
     136static bool addPropToString( HWND hwndCntr, PRECORDCORE pRec, void *pUser )
     137{
     138    ListRec *rec = reinterpret_cast<ListRec *>( pRec );
     139    std::string *str = static_cast<std::string *>( pUser );
     140    if ( !str->empty() )
     141        *str += '\n';
     142    *str += rec->miniRecordCore.pszIcon;
     143    *str += ' ';
     144    *str += rec->value;
     145    return true;
     146}
     147
     148static bool selectProp( HWND hwndCntr, PRECORDCORE pRec, void *pUser )
     149{
     150    ListRec *rec = reinterpret_cast<ListRec *>( pRec );
     151    return WinSendMsg( hwndCntr, CM_SETRECORDEMPHASIS,
     152                       MPFROMP( &rec->miniRecordCore ),
     153                       MPFROM2SHORT( TRUE, CRA_SELECTED ) ) == (MRESULT)TRUE;
     154}
    135155
    136156MRESULT EXPENTRY DocInfoDlg::docInfoDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
     
    154174            localizeDialog( hwnd );
    155175            centerWindow( _this->hFrame, hwnd );
     176
     177            // setup the accelerators
     178            WinSetAccelTable( hab, WinLoadAccelTable( hab, _hmod, IDA_DOCINFOACCEL ), hwnd );
    156179
    157180            // init container
     
    210233        break;
    211234
     235        case WM_COMMAND:
     236        {
     237            switch( SHORT1FROMMP(mp1) )
     238            {
     239                case CM_COPY:
     240                {
     241                    HWND cntr = WinWindowFromID( hwnd, IDC_PROPSLIST );
     242                    std::string props;
     243                    enumCntrEmphasis( cntr, CRA_SELECTED, addPropToString, &props );
     244                    if ( !props.empty()) {
     245                        char *utf8 = uniSysToUtf8( props.c_str(), NULL, NULL );
     246                        if ( utf8 )
     247                            textToClipbrd( hab, utf8 );
     248                        delete[] utf8;
     249                    }
     250                }
     251                return (MRESULT)FALSE;
     252
     253                case CM_SELECTALL:
     254                {
     255                    HWND cntr = WinWindowFromID( hwnd, IDC_PROPSLIST );
     256                    enumCntrRecords( cntr, selectProp, NULL );
     257                }
     258                return (MRESULT)FALSE;
     259
     260                default:
     261                    break;
     262            }
     263        }
     264        break;
    212265    }
    213266    return WinDefDlgProc( hwnd, msg, mp1, mp2 );
Note: See TracChangeset for help on using the changeset viewer.