Changeset 29 for trunk/Lucide/SOURCE


Ignore:
Timestamp:
May 28, 2006, 8:03:27 AM (15 years ago)
Author:
Eugene Romanenko
Message:

added asynch open document, but disabled due to unexpectable crashes

Location:
trunk/Lucide/SOURCE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/lucide.cpp

    r28 r29  
    55#include <string>
    66#include <stdio.h>
    7 //#include <stdlib.h>
     7#include <process.h>
    88
    99#include <ludoc.xh>
     
    1515#include "docInfoDlg.h"
    1616#include "findDlg.h"
     17#include "progressDlg.h"
    1718#include "docViewer.h"
    1819#include "indexWindow.h"
     
    4647IndexWindow    *indexWin  = NULL;
    4748FindDlg        *findDlg   = NULL;
     49char           *title     = NULL;
    4850
    4951bool  Lucide::dontSwitchPage = false;
     
    272274
    273275
     276// static data for asynch loading document
     277ProgressDlg *Lucide::loadProgressDlg       = NULL;
     278char         Lucide::docName[ CCHMAXPATH ] = "";
     279bool         Lucide::docLoaded             = false;;
     280char        *Lucide::loadError             = NULL;
     281
     282void Lucide::loadthread( void *p )
     283{
     284    HAB thab = WinInitialize( 0 );
     285    HMQ thmq = WinCreateMsgQueue( thab, 0 );
     286
     287    docLoaded = doc->loadFile( ev, docName, NULL, &loadError );
     288    loadProgressDlg->hide();
     289
     290    WinDestroyMsgQueue( thmq );
     291    WinTerminate( thab );
     292    _endthread();
     293}
     294
    274295void Lucide::loadDocument( const char *fn )
    275296{
     
    285306    {
    286307        // test if extension supported and then close previous opened document
    287         if ( pluginMan->createDocumentForExt( ext + 1, true ) != NULL ) {
    288             docViewer->close();
    289             delete doc;
    290             doc = NULL;
    291         }
    292 
    293         LuDocument *d = pluginMan->createDocumentForExt( ext + 1, false );
    294         if ( d == NULL ) {
     308        if ( pluginMan->createDocumentForExt( ext + 1, true ) == NULL )
     309        {
    295310            WinMessageBox( HWND_DESKTOP, hWndFrame, msg,
    296311                           NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
     
    298313        else
    299314        {
    300             char *error = NULL;
    301             if ( d->loadFile( ev, (char *)fn, NULL, &error ) ) {
    302                 doc = d;
    303                 setDocument( doc );
     315            docViewer->close();
     316            delete doc;
     317            doc = NULL;
     318            WinSetWindowText( hWndFrame, title );
     319
     320            doc = pluginMan->createDocumentForExt( ext + 1, false );
     321            if ( doc == NULL ) {
     322                WinMessageBox( HWND_DESKTOP, hWndFrame, msg,
     323                               NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
    304324            }
    305325            else
    306326            {
    307                 if ( error == NULL ) {
    308                     char *m = newstrdupL( MSGS_FILE_LOAD_ERROR );
    309                     WinMessageBox( HWND_DESKTOP, hWndFrame, m,
    310                                    NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
    311                     delete m;
     327                strcpy( docName, fn );
     328                docLoaded = false;;
     329                loadError = NULL;
     330
     331#if 0
     332                loadProgressDlg = new ProgressDlg( hWndFrame );
     333                loadProgressDlg->setText( "Loading document, please wait..." );
     334                loadProgressDlg->show( loadthread, NULL ); // doc will be loaded
     335                delete loadProgressDlg;
     336#else
     337                docLoaded = doc->loadFile( ev, docName, NULL, &loadError );
     338#endif
     339
     340                if ( docLoaded )
     341                {
     342                    char *t = new char[ 2048 ];
     343                    char _fn[ _MAX_NAME ];
     344                    char _ex[ _MAX_EXT ];
     345                    _splitpath( fn, NULL, NULL, _fn, _ex );
     346                    strcpy( t, _fn );
     347                    strcat( t, _ex );
     348                    strcat( t, " - " );
     349                    strcat( t, title );
     350                    WinSetWindowText( hWndFrame, t );
     351                    delete t;
     352                    setDocument( doc );
    312353                }
    313                 else {
    314                     WinMessageBox( HWND_DESKTOP, hWndFrame, error,
    315                                    NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
    316                     SOMFree( error );
     354                else
     355                {
     356                    if ( loadError == NULL )
     357                    {
     358                        char *m = newstrdupL( MSGS_FILE_LOAD_ERROR );
     359                        WinMessageBox( HWND_DESKTOP, hWndFrame, m,
     360                                       NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
     361                        delete m;
     362                    }
     363                    else
     364                    {
     365                        WinMessageBox( HWND_DESKTOP, hWndFrame, loadError,
     366                                       NULL, 0, MB_OK | MB_ICONEXCLAMATION | MB_MOVEABLE );
     367                        SOMFree( loadError );
     368                    }
     369
     370                    delete doc;
     371                    doc = NULL;
    317372                }
    318 
    319                 delete d;
    320373            }
     374
    321375        }
     376
    322377    }
    323378    delete msg;
     
    520575    ULONG ulFrameFlags = FCF_TITLEBAR | FCF_SIZEBORDER | FCF_SYSMENU |
    521576                         FCF_MINMAX | FCF_TASKLIST | FCF_NOBYTEALIGN;
    522     char *title = newstrdupL( MSGS_MAIN_WIN_TITLE );
     577    title = newstrdupL( MSGS_MAIN_WIN_TITLE );
    523578    hWndFrame = WinCreateStdWindow( HWND_DESKTOP, 0, &ulFrameFlags, NULL, title,
    524579                                    WS_SYNCPAINT|WS_VISIBLE, NULLHANDLE, 100, NULL );
    525     delete title;
    526580    WinSetAccelTable( hab, WinLoadAccelTable( hab, NULLHANDLE, IDA_MAINACCEL ), hWndFrame );
    527581    hWndMenu = WinLoadMenu( hWndFrame, NULLHANDLE, IDM_MAINMENU );
     
    566620    findDlg = new FindDlg( hWndFrame );
    567621    Lucide::checkMenus();
     622
     623    // ®ª § âì ®ª­® ¯à®£à ¬¬ë
     624    if ( !PMRestoreWindowPos( NULL, appName, fwp, hWndFrame,
     625                              TRUE, TRUE, FALSE, FALSE, FALSE ) ) {
     626        WinSetWindowPos( hWndFrame, HWND_TOP, 100, 100, 630, 400,
     627                         SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ACTIVATE );
     628    }
     629
    568630    if ( argc > 1 ) {
    569631        Lucide::loadDocument( argv[1] );
     
    571633
    572634    Lucide::checkNavpane();
    573 
    574     // ®ª § âì ®ª­® ¯à®£à ¬¬ë
    575     if ( !PMRestoreWindowPos( NULL, appName, fwp, hWndFrame,
    576                               TRUE, TRUE, FALSE, FALSE, FALSE ) )
    577     {
    578         WinSetWindowPos( hWndFrame, HWND_TOP, 100, 100, 630, 400,
    579                          SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ACTIVATE );
    580     }
    581635
    582636    // Messsage loop
     
    607661
    608662    delete findDlg;
     663    delete title;
    609664
    610665    return 0;
  • trunk/Lucide/SOURCE/gui/lucide.h

    r26 r29  
    88
    99class LuDocument;
     10class ProgressDlg;
    1011
    1112enum ViewMode { SinglePage, Continuous };
     
    1415{
    1516    private:
     17   
     18                static ProgressDlg *loadProgressDlg;
     19                static char docName[ CCHMAXPATH ];
     20                static bool docLoaded;
     21                static char *loadError;
     22   
    1623        static void setOfPages( long pages );
    1724        static void enableZoomMenus();
    1825        static void setZoomChecks( SHORT cmd, SHORT cbind, double zoom );
     26        static void loadthread( void *p );
    1927
    2028    public:
  • trunk/Lucide/SOURCE/gui/makefile

    r17 r29  
    9393-bm
    9494-xs
     95-sg
    9596-I..\plugins\ludoc
    9697-DOS2
  • trunk/Lucide/SOURCE/plugins/lupoppler/makefile

    r17 r29  
    5454-xs
    5555-xr
     56-sg
    5657-I..\ludoc
    5758-I..\..\..\..\poppler\mypoppler
Note: See TracChangeset for help on using the changeset viewer.