Changeset 222 for trunk/Lucide/SOURCE


Ignore:
Timestamp:
Aug 5, 2007, 4:57:03 PM (14 years ago)
Author:
Eugene Romanenko
Message:

subsequently load supported files in same directory, Next/Previous? menuitem (part of ticket #66)

Location:
trunk/Lucide/SOURCE
Files:
6 edited

Legend:

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

    r212 r222  
    2929        MENUITEM "MENU_NEW_WINDOW", CM_NEW_WINDOW
    3030        MENUITEM "MENU_OPEN", CM_OPEN
     31        SUBMENU "MENU_NEXT_PREVIOUS", 150
     32        BEGIN
     33            MENUITEM "MENU_FIRST", CM_FILEFIRST
     34            MENUITEM "MENU_PREVIOUS", CM_FILEPREVIOUS
     35            MENUITEM "MENU_NEXT", CM_FILENEXT
     36            MENUITEM "MENU_LAST", CM_FILELAST
     37        END
    3138        MENUITEM "MENU_SAVE_AS", CM_SAVEAS
    3239        MENUITEM SEPARATOR
     
    114121    "+", CM_ROTATE90CW, CONTROL, SHIFT
    115122    "-", CM_ROTATE90CCW, CONTROL, SHIFT
     123    VK_HOME, CM_FILEFIRST, VIRTUALKEY, SHIFT
     124    VK_PAGEUP, CM_FILEPREVIOUS, VIRTUALKEY, SHIFT
     125    VK_PAGEDOWN, CM_FILENEXT, VIRTUALKEY, SHIFT
     126    VK_END, CM_FILELAST, VIRTUALKEY, SHIFT
    116127END
    117128
  • trunk/Lucide/SOURCE/gui/Lucide_res.H

    r212 r222  
    6666#define CM_PLUGINSLIST  105
    6767#define CM_EXIT         106
     68
     69#define CM_FILEFIRST    151
     70#define CM_FILEPREVIOUS 152
     71#define CM_FILENEXT     153
     72#define CM_FILELAST     154
    6873
    6974#define CM_COPY         201
  • trunk/Lucide/SOURCE/gui/lucide.cpp

    r215 r222  
    4141
    4242#include <string>
     43#include <set>
    4344#include <stdio.h>
    4445#include <process.h>
     46#include <dos.h>
    4547
    4648#include <ludoc.xh>
     
    106108char         Lucide::docFullName[ CCHMAXPATH ]     = "";
    107109char         Lucide::docFileName[ CCHMAXPATHCOMP ] = "";
     110char         Lucide::docDirName[ CCHMAXPATHCOMP ]  = "";
    108111char        *Lucide::password                      = NULL;
    109112ActiveWindow Lucide::activeWindow                  = AwView;
     
    116119int          Lucide::thumbnailDataLen              = 0;
    117120
     121// List of files in current directory
     122static std::set<std::string> fileList;
     123static std::set<std::string>::const_iterator fileListIterator;
    118124
    119125HMODULE _hmod = NULLHANDLE;
     
    430436                {
    431437                    char *t = new char[ 2048 ];
     438                    char _dr[ _MAX_DRIVE ];
     439                    char _di[ _MAX_DIR ];
    432440                    char _fn[ _MAX_FNAME ];
    433441                    char _ex[ _MAX_EXT ];
    434                     _splitpath( fn, NULL, NULL, _fn, _ex );
     442                    _splitpath( fn, _dr, _di, _fn, _ex );
     443                    strcpy( docDirName, _dr );
     444                    strcat( docDirName, _di );
    435445                    strcpy( docFileName, _fn );
    436446                    strcat( docFileName, _ex );
     
    520530}
    521531
     532void Lucide::readMask( const char *mask )
     533{
     534    char *buf = new char[ CCHMAXPATH ];
     535    strcpy( buf, docFullName );
     536    char *r = strrchr( buf, '\\' );
     537    if ( r != NULL )
     538    {
     539        *( r + 1 ) = 0;
     540        strcat( buf, mask );
     541
     542        struct find_t ffblk;
     543        unsigned done = _dos_findfirst( buf, _A_RDONLY | _A_NORMAL, &ffblk );
     544        while ( done == 0 )
     545        {
     546            fileList.insert( ffblk.name );
     547            done = _dos_findnext( &ffblk );
     548        }
     549        _dos_findclose( &ffblk );
     550
     551    }
     552    delete buf;
     553}
     554
     555void Lucide::loadFileList()
     556{
     557    fileList.clear();
     558
     559    char *exts = newstrdup( pluginMan->getExtsMask().c_str() );
     560
     561    char *p = strtok( exts, ";" );
     562    while( p != NULL )
     563    {
     564        readMask( p );
     565        p = strtok( NULL, ";" );
     566    }
     567    delete exts;
     568
     569    fileListIterator = fileList.find( docFileName );
     570}
     571
    522572void Lucide::openDocument()
    523573{
     
    542592
    543593        loadDocument( fd->szFullFile );
     594        loadFileList();
    544595    }
    545596    delete fd;
     
    783834}
    784835
     836void Lucide::gotoFile( FileList file )
     837{
     838    if ( file == ListFirst ) {
     839        fileListIterator = fileList.begin();
     840    }
     841    else if ( file == ListPrevious )
     842    {
     843        if ( fileListIterator == fileList.begin() ) {
     844            fileListIterator = fileList.end();
     845        }
     846        fileListIterator--;
     847    }
     848    else if ( file == ListNext )
     849    {
     850        fileListIterator++;
     851        if ( fileListIterator == fileList.end() ) {
     852            fileListIterator = fileList.begin();
     853        }
     854    }
     855    else if ( file == ListLast ) {
     856        fileListIterator = fileList.end();
     857        fileListIterator--;
     858    }
     859
     860    std::string fname = *fileListIterator;
     861    char *fn = new char[ CCHMAXPATH ];
     862    strcpy( fn, docDirName );
     863    strcat( fn, fname.c_str() );
     864
     865    loadDocument( fn );
     866    delete fn;
     867}
     868
    785869static MRESULT EXPENTRY splProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
    786870{
     
    821905                    return (MRESULT)FALSE;
    822906
     907                case CM_FILEFIRST:
     908                    Lucide::gotoFile( ListFirst );
     909                    return (MRESULT)FALSE;
     910
     911                case CM_FILEPREVIOUS:
     912                    Lucide::gotoFile( ListPrevious );
     913                    return (MRESULT)FALSE;
     914
     915                case CM_FILENEXT:
     916                    Lucide::gotoFile( ListNext );
     917                    return (MRESULT)FALSE;
     918
     919                case CM_FILELAST:
     920                    Lucide::gotoFile( ListLast );
     921                    return (MRESULT)FALSE;
     922
    823923                case CM_PRINT:
    824924                {
    825                     PrintDlg *d = new PrintDlg( hWndFrame, doc, Lucide::docFileName, docViewer->getCurrentPage() + 1 );
     925                    PrintDlg *d = new PrintDlg( hWndFrame, doc, Lucide::docFileName,
     926                                                docViewer->getCurrentPage() + 1 );
    826927                    if ( d->showDialog() == DID_OK )
    827928                    {
  • trunk/Lucide/SOURCE/gui/lucide.h

    r213 r222  
    4444enum PgLayout { SinglePage = 0, Continuous = 1 };
    4545enum ActiveWindow { AwIndex, AwView };
     46enum FileList { ListFirst, ListPrevious, ListNext, ListLast };
    4647
    4748struct LuWindowPos
     
    6263                static ProgressDlg *loadProgressDlg;
    6364                static char docFullName[ CCHMAXPATH ];
     65                static char docDirName[ CCHMAXPATHCOMP ];
    6466                static char *password;
    6567                static bool docLoaded;
     
    7476        static void setZoomChecks( SHORT cmd, SHORT cbind, double zoom );
    7577        static void loadthread( void *p );
     78        static void readMask( const char *mask );
     79        static void loadFileList();
    7680       
    7781        static void *thumbnailData;
     
    110114        static bool isThumbNeeded( const char *fn );
    111115        static void writeThumbnail( const char *fn );
     116        static void gotoFile( FileList file );
    112117};
    113118
  • trunk/Lucide/SOURCE/gui/makefile

    r221 r222  
    11.autodepend
    22
    3 TEST=1
     3TEST=0
    44VERSION=1.02
    55
  • trunk/Lucide/SOURCE/plugins/ludoc/lupixbuf.cpp

    r221 r222  
    5252#define LuPixbuf_Class_Source
    5353
     54#define INCL_DOS
     55#include <os2.h>
     56#include <assert.h>
     57
    5458#include "lupixbuf.xih"
    5559
    5660
    57 SOM_Scope void SOMLINK LuPixbufInit(LuPixbuf *somSelf,  Environment *ev, 
    58                                     somInitCtrl* ctrl, long w, 
     61SOM_Scope void SOMLINK LuPixbufInit(LuPixbuf *somSelf,  Environment *ev,
     62                                    somInitCtrl* ctrl, long w,
    5963                                    long h, short bpp)
    6064{
     65    APIRET rc = 0;
    6166    LuPixbufData *somThis;
    6267    somInitCtrl globalCtrl;
     
    7176    somThis->rowsize = ( somThis->width * somThis->bpp );
    7277    if ( bpp != 4 ) {
    73             somThis->rowsize = (somThis->rowsize + 3) &~3;
    74         }
     78        somThis->rowsize = (somThis->rowsize + 3) &~3;
     79    }
    7580    somThis->dlen = somThis->rowsize * somThis->height;
     81
    7682    //somPrintf( "LuPixbufInit: allocating %d bytes\n", somThis->dlen );
    77     somThis->data = (char *)SOMMalloc( somThis->dlen );
     83
     84    // To support HUGE pixbufs we need HMA
     85    // (Is OBJ_ANY compatible with old (9.0xx) kernels?)
     86    rc = DosAllocMem( &(somThis->data), somThis->dlen, PAG_COMMIT | fPERM | OBJ_ANY );
     87    assert( rc == 0 );
     88
    7889    memset( somThis->data, 0xff, somThis->dlen );
    7990}
     
    142153
    143154    // local LuPixbuf deinitialization code
    144     SOMFree( somThis->data );
     155    DosFreeMem( somThis->data );
    145156    // local LuPixbuf deinitialization code end
    146157
Note: See TracChangeset for help on using the changeset viewer.