lyx_mirror/src/filedlg.h

158 lines
3.4 KiB
C
Raw Normal View History

// -*- C++ -*-
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright (C) 1995 1996 Matthias Ettrich
* and the LyX Team.
*
*======================================================*/
#ifndef __FILEDLG_H__
#define __FILEDLG_H__
#ifdef __GNUG__
#pragma interface
#endif
#include "LString.h"
// necessary for xForms related stuff
#include FORMS_H_LOCATION
#include "form1.h"
/// User cache class definition
class UserCache
{
public:
///
UserCache(LString const & pszName = LString(), uid_t ID = 0,
UserCache *pRoot = NULL);
///
~UserCache();
// interface
/// seeks user name from user ID
LString Find(uid_t ID);
private:
///
uid_t ID;
///
LString pszName;
///
UserCache *pNext, *pRoot;
// internal methods
/// creates a new user entry
UserCache *Add(uid_t ID);
};
extern UserCache lyxUserCache;
/// Group cache class definition
class GroupCache
{
public:
///
GroupCache(LString const & pszName = LString(), gid_t ID = 0,
GroupCache *pRoot = NULL);
///
~GroupCache();
// interface
/// seeks group name from group ID
LString Find(gid_t ID);
private:
///
gid_t ID;
///
LString pszName;
///
GroupCache *pNext, *pRoot;
// internal methods
/// creates a new group entry
GroupCache *Add(gid_t ID);
};
extern GroupCache lyxGroupCache;
/// LyXDirEntry internal structure definition
class LyXDirEntry
{
private:
friend class LyXFileDlg;
LString pszName;
LString pszDisplayed;
LString pszLsEntry;
/// compares two LyXDirEntry objects content (used by qsort)
static int ldeCompProc(const LyXDirEntry *r1, const LyXDirEntry *r2);
LyXDirEntry() {};
};
/// FileDlg class definition
class LyXFileDlg
{
public:
///
LyXFileDlg();
///
~LyXFileDlg();
/// sets file selector user button action
void SetButton(int iIndex, LString const & pszName = LString(),
LString const & pszPath = LString());
/// gets last dialog directory
LString GetDirectory();
/// launches dialog and returns selected file
LString Select(LString const & pszTitle = LString(),
LString const & pszPath = LString(),
LString const & pszMask = LString(),
LString const & pszSuggested = LString());
/// XForms objects callback (static)
static void FileDlgCB(FL_OBJECT *, long);
/// Callback for double click in list
static void DoubleClickCB(FL_OBJECT *, long);
private:
// data
static FD_FileDlg *pFileDlgForm;
static LyXFileDlg *pCurrentDlg;
LString pszUserPath1;
LString pszUserPath2;
LString pszDirectory;
LString pszMask;
LString pszFileName;
int iDepth;
int iLastSel;
long lLastTime;
LString pszInfoLine;
LyXDirEntry *pCurrentNames;
int iNumNames;
bool force_cancel;
bool force_ok;
// internal functions
/// updates dialog list to match class directory
void Reread();
/// sets dialog current directory
void SetDirectory(LString const & pszPath);
/// sets dialog file mask
void SetMask(LString const & pszNewMask);
/// sets dialog information line
void SetInfoLine(LString const & pszLine);
/// handle dialog during file selection
bool RunDialog();
/// Handle callback from list
void HandleListHit();
/// Handle double click from list
bool HandleDoubleClick();
/// Handle OK button call
bool HandleOK();
/// Handle Cancel CB from WM close
static int CancelCB(FL_FORM *, void *);
/// Simulates a click on OK/Cancel
void Force(bool);
};
#endif