mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-11 21:49:51 +00:00
158 lines
3.4 KiB
C
158 lines
3.4 KiB
C
|
// -*- 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
|