home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / filedlg.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  158 lines

  1. // -*- C++ -*-
  2. /* This file is part of
  3. * ======================================================
  4. *           LyX, The Document Processor
  5. *        
  6. *           Copyright (C) 1995 1996 Matthias Ettrich
  7. *           and the LyX Team.
  8. *
  9. *======================================================*/
  10.  
  11. #ifndef __FILEDLG_H__
  12. #define __FILEDLG_H__
  13.  
  14. #ifdef __GNUG__
  15. #pragma interface
  16. #endif
  17.  
  18. #include "LString.h"
  19.  
  20. // necessary for xForms related stuff
  21. #include FORMS_H_LOCATION
  22. #include "form1.h"
  23.  
  24.  
  25. /// User cache class definition
  26. class UserCache
  27. {
  28. public:
  29.     ///
  30.     UserCache(LString const & pszName = LString(), uid_t ID = 0, 
  31.           UserCache *pRoot = NULL);
  32.     ///
  33.     ~UserCache();
  34.     // interface
  35.     /// seeks user name from user ID
  36.     LString Find(uid_t ID);
  37. private:
  38.     ///
  39.     uid_t ID;
  40.     ///
  41.     LString pszName;
  42.     ///
  43.     UserCache *pNext, *pRoot;
  44.     // internal methods
  45.     /// creates a new user entry
  46.     UserCache *Add(uid_t ID);
  47. };
  48. extern UserCache lyxUserCache;
  49.  
  50.  
  51. /// Group cache class definition
  52. class GroupCache
  53. {
  54. public:
  55.     ///
  56.     GroupCache(LString const & pszName = LString(), gid_t ID = 0,
  57.            GroupCache *pRoot = NULL);
  58.     ///
  59.     ~GroupCache();
  60.     // interface
  61.     /// seeks group name from group ID
  62.     LString Find(gid_t ID);
  63.  
  64. private:
  65.     ///
  66.     gid_t ID;
  67.     ///
  68.     LString pszName;
  69.     ///
  70.     GroupCache *pNext, *pRoot;
  71.     // internal methods
  72.     /// creates a new group entry
  73.     GroupCache *Add(gid_t ID);
  74. };
  75. extern GroupCache lyxGroupCache;
  76.  
  77.  
  78. /// LyXDirEntry internal structure definition
  79. class LyXDirEntry
  80. {
  81. private:
  82.     friend class LyXFileDlg;
  83.     LString pszName;
  84.     LString pszDisplayed;
  85.     LString pszLsEntry;
  86.     /// compares two LyXDirEntry objects content (used by qsort)
  87.     static int ldeCompProc(const LyXDirEntry *r1, const LyXDirEntry *r2);
  88.     LyXDirEntry() {};
  89. };
  90.  
  91.  
  92. /// FileDlg class definition
  93. class LyXFileDlg 
  94. {
  95. public:
  96.     ///
  97.     LyXFileDlg();
  98.     ///
  99.     ~LyXFileDlg();
  100.     /// sets file selector user button action
  101.     void SetButton(int iIndex, LString const & pszName = LString(), 
  102.                LString const & pszPath = LString());
  103.     /// gets last dialog directory
  104.     LString GetDirectory();
  105.     /// launches dialog and returns selected file
  106.     LString Select(LString const & pszTitle = LString(),
  107.                LString const & pszPath = LString(),
  108.                LString const & pszMask = LString(), 
  109.                LString const & pszSuggested = LString());
  110.     /// XForms objects callback (static)
  111.     static void FileDlgCB(FL_OBJECT *, long);
  112.     /// Callback for double click in list
  113.     static void DoubleClickCB(FL_OBJECT *, long);
  114. private:
  115.     // data
  116.     static FD_FileDlg *pFileDlgForm;
  117.     static LyXFileDlg *pCurrentDlg;
  118.     LString pszUserPath1;
  119.     LString pszUserPath2;
  120.     LString pszDirectory;
  121.     LString pszMask;
  122.     LString pszFileName;
  123.     int iDepth;
  124.     int iLastSel;
  125.     long lLastTime;
  126.     LString pszInfoLine;
  127.     LyXDirEntry *pCurrentNames;
  128.     int iNumNames;
  129.  
  130.     bool force_cancel;
  131.     bool force_ok;
  132.  
  133.     // internal functions
  134.     /// updates dialog list to match class directory
  135.     void Reread();
  136.     /// sets dialog current directory
  137.     void SetDirectory(LString const & pszPath);
  138.     /// sets dialog file mask
  139.     void SetMask(LString const & pszNewMask);
  140.     /// sets dialog information line
  141.     void SetInfoLine(LString const & pszLine);
  142.     /// handle dialog during file selection
  143.     bool RunDialog();
  144.     /// Handle callback from list
  145.     void HandleListHit();
  146.     /// Handle double click from list
  147.     bool HandleDoubleClick();
  148.     /// Handle OK button call
  149.     bool HandleOK();
  150.     /// Handle Cancel CB from WM close
  151.     static int CancelCB(FL_FORM *, void *);
  152.     /// Simulates a click on OK/Cancel
  153.     void Force(bool);
  154. };
  155.  
  156. #endif
  157.