source: trunk/Lucide/SOURCE/gui/lucide.cpp @ 24

Last change on this file since 24 was 24, checked in by Eugene Romanenko, 15 years ago

open file: remember last used directory

File size: 18.6 KB
RevLine 
[2]1#define INCL_WIN
2#define INCL_DOS
3#include <os2.h>
4
5#include <string>
6#include <stdio.h>
7//#include <stdlib.h>
8
9#include <ludoc.xh>
10
11#include "Lucide.h"
12#include "pluginman.h"
13#include "pluginViewDlg.h"
14#include "fontsInfoDlg.h"
15#include "docInfoDlg.h"
16#include "findDlg.h"
17#include "docViewer.h"
18#include "indexWindow.h"
19#include "luutils.h"
20#include "tb_spl.h"
21#include "Lucide_res.h"
22#include "messages.h"
23
24
25const char *appName = "Lucide";
26const char *fwp = "FrameWindowPos";
[24]27const char *lvd = "LastViewedDir";
[2]28
29
30HWND createToolbar( HWND hwnd );
31
32HAB   hab;
33HWND  hWndFrame;
34HWND  hWndMenu;
35HWND  hToolBar;
36
37Environment    *ev        = somGetGlobalEnvironment();
38LuDocument     *doc       = NULL;
39PluginManager  *pluginMan = NULL;
40DocumentViewer *docViewer = NULL;
41IndexWindow    *indexWin  = NULL;
42FindDlg        *findDlg   = NULL;
43
44bool Lucide::dontSwitchPage = false;
45
46PFNWP pOldSplProc;
47
48void Lucide::enableCopy( bool enable )
49{
50    WinEnableMenuItem( hWndMenu, CM_COPY, enable );
51}
52
53static void setOfPages( long pages )
54{
55    char *pgfrm = newstrdupL( TB_PAGENUM );
56    char pgnum[ 32 ];
57    snprintf( pgnum, sizeof( pgnum ), pgfrm, pages );
58    delete pgfrm;
59    WinSetDlgItemText( hToolBar, TBID_OFPAGES, pgnum );
60    WinSendDlgItemMsg( hToolBar, TBID_PAGENUM, SPBM_SETLIMITS, (MPARAM)pages, (MPARAM)1 );
61}
62
63void Lucide::checkNavigationMenus()
64{
65    BOOL enfirst = ( docViewer->getCurrentPage() != 0 );
66    BOOL enlast = ( docViewer->getCurrentPage() != ( doc->getPageCount( ev ) - 1 ) );
67    WinEnableMenuItem( hWndMenu, CM_FIRSTPAGE, enfirst );
68    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FIRSTPAGE), (MPARAM)enfirst );
69    WinEnableMenuItem( hWndMenu, CM_PREVPAGE, enfirst );
70    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_PREVPAGE), (MPARAM)enfirst );
71    WinEnableMenuItem( hWndMenu, CM_NEXTPAGE, enlast );
72    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_NEXTPAGE), (MPARAM)enlast );
73    WinEnableMenuItem( hWndMenu, CM_LASTPAGE, enlast );
74    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_LASTPAGE), (MPARAM)enlast );
75
76    dontSwitchPage = true;
77    WinSendDlgItemMsg( hToolBar, TBID_PAGENUM, SPBM_SETCURRENTVALUE,
78                       MPFROMLONG( docViewer->getCurrentPage() + 1 ), MPVOID );
79    dontSwitchPage = false;
80    indexWin->goToPage( NULL, docViewer->getCurrentPage() );
81}
82
83void enableZoomMenus()
84{
85    BOOL scalable = doc->isScalable( ev );
86    WinEnableMenuItem( hWndMenu, CM_FITWINDOW, scalable );
87    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FITWINDOW), (MPARAM)scalable );
88    WinEnableMenuItem( hWndMenu, CM_ACTSIZE, scalable );
89    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_ACTSIZE), (MPARAM)scalable );
90    WinEnableMenuItem( hWndMenu, CM_FITWIDTH, scalable );
91    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FITWIDTH), (MPARAM)scalable );
92    WinEnableControl( hToolBar, TBID_ZOOM, scalable );
93    BOOL rotable = doc->isRotable( ev );
94    WinEnableMenuItem( hWndMenu, CM_ROTATE90CW, rotable );
95    WinEnableMenuItem( hWndMenu, CM_ROTATE90CCW, rotable );
96}
97
98
99void setZoomChecks( SHORT cmd, SHORT cbind, double zoom )
100{
101    if ( cmd != -1 )
102    {
103        WinSendMsg( hWndMenu, MM_SETITEMATTR, MPFROM2SHORT( cmd, TRUE ),
104                            MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED ) );
105        WinSendMsg( hToolBar, TBM_SETCHECK, MPFROMSHORT( cmd ), (MPARAM)TRUE );
106    }
107
108    if ( cbind != -1 )
109    {
110        char buf[ 255 ] = "";
111        WinSendDlgItemMsg( hToolBar, TBID_ZOOM, LM_QUERYITEMTEXT,
112                           MPFROM2SHORT( cbind, sizeof( buf ) ), MPFROMP( buf ) );
113        WinSetDlgItemText( hToolBar, TBID_ZOOM, buf );
114    }
115
116    if ( zoom != 0 )
117    {
118        std::string z = str( zoom * 100.0 ) + "%";
119        WinSetDlgItemText( hToolBar, TBID_ZOOM, z.c_str() );
120    }
121}
122
123void Lucide::checkZoomMenus()
124{
125    double zoom = docViewer->getZoom();
126
127    WinSendMsg( hWndMenu, MM_SETITEMATTR, MPFROM2SHORT( CM_FITWINDOW, TRUE ),
128                        MPFROM2SHORT( MIA_CHECKED, FALSE ) );
129    WinSendMsg( hToolBar, TBM_SETCHECK, MPFROMSHORT(CM_FITWINDOW), (MPARAM)FALSE );
130    WinSendMsg( hWndMenu, MM_SETITEMATTR, MPFROM2SHORT( CM_ACTSIZE, TRUE ),
131                        MPFROM2SHORT( MIA_CHECKED, FALSE ) );
132    WinSendMsg( hToolBar, TBM_SETCHECK, MPFROMSHORT(CM_ACTSIZE), (MPARAM)FALSE );
133    WinSendMsg( hWndMenu, MM_SETITEMATTR, MPFROM2SHORT( CM_FITWIDTH, TRUE ),
134                        MPFROM2SHORT( MIA_CHECKED, FALSE ) );
135    WinSendMsg( hToolBar, TBM_SETCHECK, MPFROMSHORT(CM_FITWIDTH), (MPARAM)FALSE );
136
137    if ( zoom == -2 ) {
138        setZoomChecks( CM_FITWINDOW, 1, 0 );
139    } else if ( zoom == -1 ) {
140        setZoomChecks( CM_FITWIDTH, 2, 0 );
141    } else if ( zoom == 1 ) {
142        setZoomChecks( CM_ACTSIZE, 0, 0 );
143    } else {
144        setZoomChecks( -1, -1, zoom );
145    }
146}
147
148void Lucide::checkMenus()
149{
150    // pre-set "Actual size"
151    setZoomChecks( CM_ACTSIZE, 0, 0 );
152
153    if ( doc == NULL )
154    {
[18]155        // "single page" mode by default
156        WinSendMsg( hWndMenu, MM_SETITEMATTR,
157                    MPFROM2SHORT( CM_SINGLEPAGE, TRUE ),
158                    MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED ) );
159
[2]160        WinEnableMenuItem( hWndMenu, CM_SAVEAS, FALSE );
161        WinEnableMenuItem( hWndMenu, CM_EXPORTTOPS, FALSE );
162        WinEnableMenuItem( hWndMenu, CM_PAGESETUP, FALSE );
163        WinEnableMenuItem( hWndMenu, CM_PRINT, FALSE );
164        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_PRINT), (MPARAM)FALSE );
165        WinEnableMenuItem( hWndMenu, CM_DOCINFO, FALSE );
166        WinEnableMenuItem( hWndMenu, CM_FONTSINFO, FALSE );
167
168        WinEnableMenuItem( hWndMenu, CM_COPY, FALSE );
169        WinEnableMenuItem( hWndMenu, CM_SELECTALL, FALSE );
170        WinEnableMenuItem( hWndMenu, CM_FIND, FALSE );
171        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FIND), (MPARAM)FALSE );
172        WinEnableMenuItem( hWndMenu, CM_FINDAGAIN, FALSE );
173
174        WinEnableMenuItem( hWndMenu, CM_FIRSTPAGE, FALSE );
175        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FIRSTPAGE), (MPARAM)FALSE );
176        WinEnableMenuItem( hWndMenu, CM_PREVPAGE, FALSE );
177        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_PREVPAGE), (MPARAM)FALSE );
178        WinEnableMenuItem( hWndMenu, CM_NEXTPAGE, FALSE );
179        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_NEXTPAGE), (MPARAM)FALSE );
180        WinEnableMenuItem( hWndMenu, CM_LASTPAGE, FALSE );
181        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_LASTPAGE), (MPARAM)FALSE );
182        WinEnableMenuItem( hWndMenu, CM_GOTOPAGE, FALSE );
183
184        WinEnableMenuItem( hWndMenu, CM_FITWINDOW, FALSE );
185        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FITWINDOW), (MPARAM)FALSE );
186        WinEnableMenuItem( hWndMenu, CM_ACTSIZE, FALSE );
187        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_ACTSIZE), (MPARAM)FALSE );
188        WinEnableMenuItem( hWndMenu, CM_FITWIDTH, FALSE );
189        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FITWIDTH), (MPARAM)FALSE );
190        WinEnableControl( hToolBar, TBID_ZOOM, FALSE );
191
192        WinEnableMenuItem( hWndMenu, CM_ROTATE90CW, FALSE );
193        WinEnableMenuItem( hWndMenu, CM_ROTATE90CCW, FALSE );
194        WinEnableMenuItem( hWndMenu, CM_NAVPANE, FALSE );
195        WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_NAVPANE), (MPARAM)FALSE );
196        WinEnableMenuItem( hWndMenu, CM_SINGLEPAGE, FALSE );
197        WinEnableMenuItem( hWndMenu, CM_CONTINUOUS, FALSE );
198
199        setOfPages( 0 );
200        return;
201    }
202
203
204    checkNavigationMenus();
205    enableZoomMenus();
206    checkZoomMenus();
207
208    setOfPages( doc->getPageCount( ev ) );
209    WinEnableMenuItem( hWndMenu, CM_FONTSINFO, doc->isHaveFontInfo( ev ) );
210    WinEnableMenuItem( hWndMenu, CM_DOCINFO, TRUE );
211
212    BOOL haveText = doc->isHaveText( ev );
213    WinEnableMenuItem( hWndMenu, CM_FIND, haveText );
214    WinSendMsg( hToolBar, TBM_ENABLEITEM, MPFROMSHORT(CM_FIND), (MPARAM)haveText );
[18]215
216    WinEnableMenuItem( hWndMenu, CM_SINGLEPAGE, TRUE );
217    WinEnableMenuItem( hWndMenu, CM_CONTINUOUS, TRUE );
[2]218}
219
220void Lucide::goToPage( long page )
221{
222    if ( docViewer != NULL ) {
223        docViewer->goToPage( page );
224    }
225}
226
227void Lucide::setZoom( double zoom )
228{
229    if ( docViewer != NULL ) {
230        docViewer->setZoom( zoom );
231        checkZoomMenus();
232    }
233}
234
235void Lucide::setDocument( LuDocument *_doc )
236{
237    docViewer->setDocument( _doc );
238    indexWin->setDocument( _doc );
239    Lucide::checkMenus();
240}
241
[18]242void Lucide::setViewMode( ViewMode mode )
243{
244    if ( mode == SinglePage )
245    {
246        WinSendMsg( hWndMenu, MM_SETITEMATTR,
247                    MPFROM2SHORT( CM_SINGLEPAGE, TRUE ),
248                    MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED ) );
249        WinSendMsg( hWndMenu, MM_SETITEMATTR,
250                    MPFROM2SHORT( CM_CONTINUOUS, TRUE ),
251                    MPFROM2SHORT( MIA_CHECKED, FALSE ) );
252    }
253    else
254    {
255        WinSendMsg( hWndMenu, MM_SETITEMATTR,
256                    MPFROM2SHORT( CM_SINGLEPAGE, TRUE ),
257                    MPFROM2SHORT( MIA_CHECKED, FALSE ) );
258        WinSendMsg( hWndMenu, MM_SETITEMATTR,
259                    MPFROM2SHORT( CM_CONTINUOUS, TRUE ),
260                    MPFROM2SHORT( MIA_CHECKED, MIA_CHECKED ) );
261    }
[2]262
[18]263    docViewer->setViewMode( mode );
264}
265
266
[2]267static void loadDocument( const char *fn )
268{
269    char *msg = newstrdupL( MSGS_NO_SUIT_PLUG );
270
271    // find extension
272    char *ext = strrchr( fn, '.' );
273    if ( ext == NULL ) {
274        WinMessageBox( HWND_DESKTOP, hWndFrame, msg,
275                       NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
276    }
277    else
278    {
279        doc = pluginMan->createDocumentForExt( ext + 1 );
280        if ( doc == NULL ) {
281            WinMessageBox( HWND_DESKTOP, hWndFrame, msg,
282                           NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
283        }
284        else
285        {
286            char *error = NULL;
287            if ( doc->loadFile( ev, (char *)fn, NULL, &error ) ) {
288                Lucide::setDocument( doc );
289            }
290            else
291            {
292                if ( error == NULL ) {
293                    char *m = newstrdupL( MSGS_FILE_LOAD_ERROR );
294                    WinMessageBox( HWND_DESKTOP, hWndFrame, m,
295                                   NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
296                    delete m;
297                }
298                else {
299                    WinMessageBox( HWND_DESKTOP, hWndFrame, error,
300                                   NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
301                    SOMFree( error );
302                }
303
304                delete doc;
305                doc = NULL;
306            }
307        }
308    }
309    delete msg;
310}
311
312static void openDocument()
313{
314    PFILEDLG fd = new FILEDLG;
315    memset( fd, 0, sizeof( FILEDLG ) );
316    fd->cbSize = sizeof( FILEDLG );
317    fd->fl = FDS_CENTER | FDS_OPEN_DIALOG;
[24]318    PrfQueryProfileString( HINI_USERPROFILE, appName, lvd, "",
319                           fd->szFullFile, sizeof( fd->szFullFile ) );
320    strcat( fd->szFullFile, pluginMan->getExtsMask().c_str() );
[2]321    WinFileDlg( HWND_DESKTOP, hWndFrame, fd );
[24]322    if ( fd->lReturn == DID_OK )
323    {
324        char drv[ _MAX_DRIVE ] = "";
325        char dir[ _MAX_PATH ] = "";
326        char buf[ _MAX_PATH ] = "";
327        _splitpath( fd->szFullFile, drv, dir, NULL, NULL );
328        _makepath( buf, drv, dir, NULL, NULL );
329        PrfWriteProfileString( HINI_USERPROFILE, appName, lvd, buf );
330
[2]331        loadDocument( fd->szFullFile );
332    }
333    delete fd;
334}
335
336
337static MRESULT EXPENTRY splProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
338{
339    switch ( msg )
340    {
341
342        case WM_COMMAND:
343        {
344            switch ( SHORT1FROMMP(mp1) )
345            {
346                case CM_OPEN:
347                    openDocument();
348                    return (MRESULT)FALSE;
349
350                case CM_EXIT:
351                    WinPostMsg( hWndFrame, WM_CLOSE, NULL, NULL );
352                    return (MRESULT)FALSE;
353
354                case CM_DOCINFO:
355                {
356                    LuDocumentInfo *dinfo = doc->getDocumentInfo( ev );
357                    DocInfoDlg *d = new DocInfoDlg( hWndFrame, dinfo );
358                    d->doDialog();
359                    LuDocument::freeDocumentInfo( ev, dinfo );
360                    return (MRESULT)FALSE;
361                }
362
363                case CM_FONTSINFO:
364                {
365                    FontsInfoDlg *d = new FontsInfoDlg( hWndFrame, doc );
366                    d->doDialog();
367                    return (MRESULT)FALSE;
368                }
369
370                case CM_PLUGINSLIST:
371                {
372                    PluginViewDlg *d = new PluginViewDlg( hWndFrame,
373                                                pluginMan->getPluginsList() );
374                    d->doDialog();
375                    return (MRESULT)FALSE;
376                }
377
378                case CM_COPY:
379                    docViewer->copyToClipbrd();
380                    return (MRESULT)FALSE;
381
382                case CM_FIND:
383                    if ( findDlg->showDialog() == DID_OK ) {
384                        if ( strlen( findDlg->getSearchString() ) > 0 )
385                        {
386                            docViewer->searchDocument( findDlg->getSearchString(),
387                                            findDlg->isCaseSensitive(), false );
388
389                            WinEnableMenuItem( hWndMenu, CM_FINDAGAIN, TRUE );
390                        }
391                    }
392                    return (MRESULT)FALSE;
393
394                case CM_FINDAGAIN:
395                    docViewer->searchDocument( findDlg->getSearchString(),
396                                               findDlg->isCaseSensitive(), true );
397                    return (MRESULT)FALSE;
398
399                case CM_FIRSTPAGE:
400                    Lucide::goToPage( 0 );
401                    return (MRESULT)FALSE;
402
403                case CM_NEXTPAGE:
404                    Lucide::goToPage( docViewer->getCurrentPage() + 1 );
405                    return (MRESULT)FALSE;
406
407                case CM_PREVPAGE:
408                    Lucide::goToPage( docViewer->getCurrentPage() - 1 );
409                    return (MRESULT)FALSE;
410
411                case CM_LASTPAGE:
412                    Lucide::goToPage( doc->getPageCount( ev ) - 1 );
413                    return (MRESULT)FALSE;
414
415                case CM_FITWINDOW:
416                    Lucide::setZoom( -2 );
417                    return (MRESULT)FALSE;
418
419                case CM_ACTSIZE:
420                    Lucide::setZoom( 1 );
421                    return (MRESULT)FALSE;
422
423                case CM_FITWIDTH:
424                    Lucide::setZoom( -1 );
425                    return (MRESULT)FALSE;
426
[18]427                case CM_SINGLEPAGE:
428                    Lucide::setViewMode( SinglePage );
429                    return (MRESULT)FALSE;
430
431                case CM_CONTINUOUS:
432                    Lucide::setViewMode( Continuous );
433                    return (MRESULT)FALSE;
[2]434            }
435        }
436        break;
437    }
438    return pOldSplProc( hwnd, msg, mp1, mp2 );
439}
440
441
442char deffont[] = "9.WarpSans";
443int deffontlen = sizeof( deffont );
444
445int main( int argc, char **argv )
446{
447    PPIB pib;
448    PTIB tib;
449    DosGetInfoBlocks(&tib, &pib);
450    pib->pib_ultype = 3;
451
452    HMQ   hmq;
453    QMSG  qmsg;
454    hab = WinInitialize( 0 );
455    hmq = WinCreateMsgQueue( hab, 0 );
456
457    loadLang();
458
459    pluginMan = new PluginManager;
460
461    InitPMSplitterClass( hab );
462    InitPMToolbarClass( hab );
463
464    ULONG ulFrameFlags = FCF_TITLEBAR | FCF_SIZEBORDER | FCF_SYSMENU |
465                         FCF_MINMAX | FCF_TASKLIST | FCF_NOBYTEALIGN;
466    char *title = newstrdupL( MSGS_MAIN_WIN_TITLE );
467    hWndFrame = WinCreateStdWindow( HWND_DESKTOP, 0, &ulFrameFlags, NULL, title,
468                                    WS_SYNCPAINT|WS_VISIBLE, NULLHANDLE, 100, NULL );
469    delete title;
470    WinSetAccelTable( hab, WinLoadAccelTable( hab, NULLHANDLE, IDA_MAINACCEL ), hWndFrame );
471    hWndMenu = WinLoadMenu( hWndFrame, NULLHANDLE, IDM_MAINMENU );
472    localizeMenu( hWndMenu );
473    WinSetWindowUShort( hWndMenu, QWS_ID, FID_MENU );
474
475    // Vertical splitter and his windows - Index and Document view
476    HWND hVertSplitter = WinCreateWindow( hWndFrame, WC_ER_SPLITTER, "",
477                                          WS_VISIBLE | SBS_VSPLIT,
478                                          0, 0, 0, 0, hWndFrame, HWND_TOP,
479                                          0, NULL, NULL );
480
481    indexWin = new IndexWindow( hab, hWndFrame );
482
483    DocumentViewer::registerClass( hab );
484
485    docViewer = new DocumentViewer( hab, hWndFrame );
486
487    WinSendMsg( hVertSplitter, SBM_SETWINDOWS,
488                MPFROMHWND( indexWin->getHWND() ), MPFROMHWND( docViewer->getHWND() ) );
489    WinSendMsg( hVertSplitter, SBM_SETSPLITTERPOS, MPFROMSHORT( 80 ), MPVOID );
490
491    // Horizontal splitter and its windows - Toolbar and Vertical splitter
492    // Horizontal splitter is client window
493    HWND hHorizSplitter = WinCreateWindow( hWndFrame, WC_ER_SPLITTER, "",
494                                           WS_VISIBLE | SBS_HSPLIT | SBS_SECONDFIXED,
495                                           0, 0, 0, 0, hWndFrame, HWND_TOP,
496                                           FID_CLIENT, NULL, NULL );
497    pOldSplProc = WinSubclassWindow( hHorizSplitter, splProc );
498
499    hToolBar = createToolbar( hWndFrame );
500
501    WinSendMsg( hHorizSplitter, SBM_SETWINDOWS,
502                MPFROMHWND( hVertSplitter ), MPFROMHWND( hToolBar ) );
503    // ãáâ ­®¢šâì 䚪ášà®¢ ­­ë© à §¬¥à €«ï âã«¡ à 
504    WinSendMsg( hHorizSplitter, SBM_SETFIXEDSIZE,
505                MPFROMSHORT( DEFAULT_PICTSIZE + TOOLBAR_HEIGHT_ADD ), MPVOID );
506
507    findDlg = new FindDlg( hWndFrame );
508    Lucide::checkMenus();
509    if ( argc > 1 ) {
510        loadDocument( argv[1] );
511    }
512
513    // ®ª § âì ®ª­® ¯à®£à ¬¬ë
514    if ( !PMRestoreWindowPos( NULL, appName, fwp, hWndFrame,
515                              TRUE, TRUE, FALSE, FALSE, FALSE ) )
516    {
517        WinSetWindowPos( hWndFrame, HWND_TOP, 100, 100, 630, 400,
518                         SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ACTIVATE );
519    }
520
521    // Messsage loop
522    while ( WinGetMsg( hab, &qmsg, 0, 0, 0 ) ) {
523        WinDispatchMsg( hab, &qmsg );
524    }
525
526    if ( WinIsWindow( hab, hWndFrame ) ) {
527        PMStoreWindowPos( NULL, appName, fwp, hWndFrame );
528    }
529
530    WinDestroyWindow( hWndFrame );
531    WinDestroyMsgQueue( hmq );
532    WinTerminate( hab );
533
534    delete docViewer;
535    delete indexWin;
536    // must be freed _before_ plugin manager
537    delete doc;
538    // must be freed _after_ document
539    delete pluginMan;
540
541    delete findDlg;
542
543    return 0;
544}
545
Note: See TracBrowser for help on using the repository browser.