Changeset 407 for trunk


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

Added support for copying text from the font information dialog to the clipboard.

Location:
trunk/Lucide/gui
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/gui/Lucide.rc

    r406 r407  
    160160END
    161161
     162ACCELTABLE IDA_FONTSINFOACCEL
     163BEGIN
     164    "C", CM_COPY, CONTROL
     165    "c", CM_COPY, CONTROL
     166    "/", CM_SELECTALL, CONTROL
     167    "A", CM_SELECTALL, CONTROL
     168    "a", CM_SELECTALL, CONTROL
     169    VK_INSERT, CM_COPY, VIRTUALKEY, CONTROL
     170END
     171
    162172rcinclude dialogs.rc
    163173
  • trunk/Lucide/gui/Lucide_res.H

    r406 r407  
    6262#define IDA_MAINACCEL       101
    6363#define IDA_DOCINFOACCEL    102
     64#define IDA_FONTSINFOACCEL  103
    6465
    6566#define CM_NEW_WINDOW   101
  • trunk/Lucide/gui/dialogs.rc

    r406 r407  
    1919        DIALOG "FONTINFO_FONTINFO", 100, 6, 52, 348, 112, WS_VISIBLE, FCF_TITLEBAR
    2020        BEGIN
    21                 CONTROL "", IDC_FONTSLIST, 2, 26, 344, 84, WC_CONTAINER, CCS_MINIRECORDCORE | CCS_MINIICONS | CCS_READONLY | CCS_SINGLESEL | WS_VISIBLE | WS_GROUP | WS_TABSTOP
     21                CONTROL "", IDC_FONTSLIST, 2, 26, 344, 84, WC_CONTAINER, CCS_MINIRECORDCORE | CCS_MINIICONS | CCS_READONLY | CCS_EXTENDSEL | WS_VISIBLE | WS_GROUP | WS_TABSTOP
    2222                PRESPARAMS PP_FONTNAMESIZE "9.WarpSans"
    2323                DEFPUSHBUTTON "FONTINFO_CLOSE", DID_OK, 282, 4, 57, 14, BS_PUSHBUTTON | BS_DEFAULT | WS_VISIBLE | WS_DISABLED | WS_TABSTOP
  • trunk/Lucide/gui/fontsInfoDlg.cpp

    r367 r407  
    4444#include "Lucide_res.h"
    4545#include "messages.h"
     46#include "cpconv.h"
    4647
    4748
     
    150151}
    151152
     153static bool addPropToString( HWND hwndCntr, PRECORDCORE pRec, void *pUser )
     154{
     155    ListRec *rec = reinterpret_cast<ListRec *>( pRec );
     156    std::string *str = static_cast<std::string *>( pUser );
     157    if ( !str->empty() )
     158        *str += '\n';
     159    *str += rec->miniRecordCore.pszIcon;
     160    *str += " | ";
     161    *str += rec->type;
     162    *str += " | ";
     163    *str += rec->embed;
     164    return true;
     165}
     166
     167static bool selectProp( HWND hwndCntr, PRECORDCORE pRec, void *pUser )
     168{
     169    ListRec *rec = reinterpret_cast<ListRec *>( pRec );
     170    return WinSendMsg( hwndCntr, CM_SETRECORDEMPHASIS,
     171                       MPFROMP( &rec->miniRecordCore ),
     172                       MPFROM2SHORT( TRUE, CRA_SELECTED ) ) == (MRESULT)TRUE;
     173}
     174
    152175MRESULT EXPENTRY FontsInfoDlg::fontsInfoDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
    153176{
     
    172195            localizeDialog( hwnd );
    173196            centerWindow( _this->hFrame, hwnd );
     197
     198            // setup the accelerators
     199            WinSetAccelTable( hab, WinLoadAccelTable( hab, _hmod, IDA_FONTSINFOACCEL ), hwnd );
    174200
    175201            // init container
     
    234260        break;
    235261
     262        case WM_COMMAND:
     263        {
     264            switch( SHORT1FROMMP(mp1) )
     265            {
     266                case CM_COPY:
     267                {
     268                    HWND cntr = WinWindowFromID( hwnd, IDC_PROPSLIST );
     269                    std::string props;
     270                    enumCntrEmphasis( cntr, CRA_SELECTED, addPropToString, &props );
     271                    if ( !props.empty()) {
     272                        char *utf8 = uniSysToUtf8( props.c_str(), NULL, NULL );
     273                        if ( utf8 )
     274                            textToClipbrd( hab, utf8 );
     275                        delete[] utf8;
     276                    }
     277                }
     278                return (MRESULT)FALSE;
     279
     280                case CM_SELECTALL:
     281                {
     282                    HWND cntr = WinWindowFromID( hwnd, IDC_PROPSLIST );
     283                    enumCntrRecords( cntr, selectProp, NULL );
     284                }
     285                return (MRESULT)FALSE;
     286
     287                default:
     288                    break;
     289            }
     290        }
     291        break;
    236292    }
    237293    return WinDefDlgProc( hwnd, msg, mp1, mp2 );
Note: See TracChangeset for help on using the changeset viewer.