Changeset 406 for trunk/Lucide


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

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

Location:
trunk/Lucide/gui
Files:
5 edited

Legend:

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

    r402 r406  
    150150END
    151151
     152ACCELTABLE IDA_DOCINFOACCEL
     153BEGIN
     154    "C", CM_COPY, CONTROL
     155    "c", CM_COPY, CONTROL
     156    "/", CM_SELECTALL, CONTROL
     157    "A", CM_SELECTALL, CONTROL
     158    "a", CM_SELECTALL, CONTROL
     159    VK_INSERT, CM_COPY, VIRTUALKEY, CONTROL
     160END
     161
    152162rcinclude dialogs.rc
    153163
  • trunk/Lucide/gui/Lucide_res.H

    r399 r406  
    5959
    6060#define IDM_MAINMENU    100
    61 #define IDA_MAINACCEL   101
     61
     62#define IDA_MAINACCEL       101
     63#define IDA_DOCINFOACCEL    102
    6264
    6365#define CM_NEW_WINDOW   101
  • trunk/Lucide/gui/Makefile.kmk

    r385 r406  
    5858        ludoc.lib
    5959
     60Lucide.rc_DEPS = dialogs.rc
     61
    6062#
    6163# Lucide GUI application
  • trunk/Lucide/gui/dialogs.rc

    r367 r406  
    3333        DIALOG "DOCINFO_DOCUMENT_INFO", 100, 6, 52, 348, 112, WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
    3434        BEGIN
    35                 CONTROL "", IDC_PROPSLIST, 2, 26, 344, 84, WC_CONTAINER, CCS_MINIRECORDCORE | CCS_MINIICONS | CCS_READONLY | CCS_SINGLESEL | WS_VISIBLE | WS_GROUP | WS_TABSTOP
     35                CONTROL "", IDC_PROPSLIST, 2, 26, 344, 84, WC_CONTAINER, CCS_MINIRECORDCORE | CCS_MINIICONS | CCS_READONLY | CCS_EXTENDSEL | WS_VISIBLE | WS_GROUP | WS_TABSTOP
    3636                PRESPARAMS PP_FONTNAMESIZE "9.WarpSans"
    3737                DEFPUSHBUTTON "DOCINFO_CLOSE", DID_OK, 282, 4, 57, 14
  • 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.