lyx_mirror/src/filedlg.h

158 lines
3.3 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(string const & pszName = string(), uid_t ID = 0,
UserCache *pRoot = 0);
///
~UserCache();
// interface
/// seeks user name from user ID
string Find(uid_t ID);
private:
///
uid_t ID;
///
string 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(string const & pszName = string(), gid_t ID = 0,
GroupCache *pRoot = 0);
///
~GroupCache();
// interface
/// seeks group name from group ID
string Find(gid_t ID);
private:
///
gid_t ID;
///
string 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;
string pszName;
string pszDisplayed;
string 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, string const & pszName = string(),
string const & pszPath = string());
/// gets last dialog directory
string GetDirectory();
/// launches dialog and returns selected file
string Select(string const & pszTitle = string(),
string const & pszPath = string(),
string const & pszMask = string(),
string const & pszSuggested = string());
/// 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;
string pszUserPath1;
string pszUserPath2;
string pszDirectory;
string pszMask;
string pszFileName;
int iDepth;
int iLastSel;
long lLastTime;
string 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(string const & pszPath);
/// sets dialog file mask
void SetMask(string const & pszNewMask);
/// sets dialog information line
void SetInfoLine(string 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