// -*- 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__
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 1995 Matthias Ettrich
+ * Copyright 1995-2000 The LyX Team.
+ *
+ * ====================================================== */
+
+#ifndef FILEDLG_H
+#define FILEDLG_H
#ifdef __GNUG__
#pragma interface
#endif
-#include "LString.h"
+#include <vector>
+#include <sigc++/signal_system.h>
-// necessary for xForms related stuff
+#include "LString.h"
#include FORMS_H_LOCATION
#include "form1.h"
+#ifdef SIGC_CXX_NAMESPACES
+using SigC::Object;
+using SigC::Connection;
+#endif
-/// 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
-{
+/// LyXDirEntry internal structure definition
+class LyXDirEntry {
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
+class LyXFileDlg : public Object
{
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();
+ string const GetDirectory() const;
/// launches dialog and returns selected file
- string Select(string const & pszTitle = string(),
+ string const Select(string const & pszTitle = string(),
string const & pszPath = string(),
string const & pszMask = string(),
string const & pszSuggested = string());
static void FileDlgCB(FL_OBJECT *, long);
/// Callback for double click in list
static void DoubleClickCB(FL_OBJECT *, long);
+ /// Handle Cancel CB from WM close
+ static int CancelCB(FL_FORM *, void *);
private:
- // data
- static FD_FileDlg *pFileDlgForm;
- static LyXFileDlg *pCurrentDlg;
+ /// 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;
-
+ ///
+ typedef std::vector<LyXDirEntry> DirEntries;
+ ///
+ DirEntries direntries;
+ ///
bool force_cancel;
+ ///
bool force_ok;
- // internal functions
+ /** Redraw the form (on receipt of a Signal indicating, for example,
+ that the xform colors have been re-mapped).
+ */
+ void redraw();
/// updates dialog list to match class directory
void Reread();
/// sets dialog current directory
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);
+ /// Redraw connection.
+ Connection r_;
};
#endif