]> git.lyx.org Git - lyx.git/blobdiff - src/filedlg.C
removed a warning from screen and added CFLAGS in lyx.spec.in.
[lyx.git] / src / filedlg.C
index 6037454c905d89dbed2533549a8d922539385200..bbd63ba7ed6809cf7285ec94dc8b5752fe18c739 100644 (file)
@@ -75,6 +75,12 @@ static const long ONE_HOUR_SEC = 60L * 60L;
 // global instance (user cache root)
 UserCache lyxUserCache = UserCache(string(),0,0);
 
+// some "C" wrappers around callbacks
+extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *, long lArgument);
+extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *, long);
+extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *, void *);
+extern "C" int C_LyXDirEntryC_ldeCompProc(const void* r1, 
+                                         const void* r2);
 
 // Add: creates a new user entry
 UserCache * UserCache::Add(uid_t ID)
@@ -196,6 +202,13 @@ int LyXDirEntry::ldeCompProc(const LyXDirEntry * r1,
        return r1->pszName.compare(r2->pszName);
 }
 
+extern "C" int C_LyXDirEntry_ldeCompProc(const void * r1, 
+                                        const void * r2)
+{
+       return LyXDirEntry::ldeCompProc((const LyXDirEntry *)r1,
+                                       (const LyXDirEntry *)r2);
+}
+
 // *** LyXFileDlg class implementation
 
 // static members
@@ -280,14 +293,13 @@ void LyXFileDlg::Reread()
                File = AddName(pszDirectory, fname);
 
                fileInfo.newFile(File, true);
-
                fileInfo.modeString(szMode);
                unsigned int nlink = fileInfo.getNumberOfLinks();
                string user =   lyxUserCache.Find(fileInfo.getUid());
                string group = lyxGroupCache.Find(fileInfo.getGid());
 
                time_t modtime = fileInfo.getModificationTime();
-               Time += ctime(&modtime);
+               Time = ctime(&modtime);
                
                if (curTime > fileInfo.getModificationTime() + SIX_MONTH_SEC
                    || curTime < fileInfo.getModificationTime()
@@ -297,13 +309,14 @@ void LyXFileDlg::Reread()
                        // factor for what is considered "the future", to
                        // allow for NFS server/client clock disagreement.
                        // Show the year instead of the time of day.
-#warning fix!
-                       
                        Time.erase(10, 9);
+                       Time.erase(15, string::npos);
+               } else {
+                       Time.erase(16, string::npos);
                }
 
-               Buffer = szMode + ' ' +
-                       nlink + ' ' +
+               Buffer = string(szMode) + ' ' +
+                       tostr(nlink) + ' ' +
                        user + ' ' +
                        group + ' ' +
                        Time.substr(4, string::npos) + ' ';
@@ -361,7 +374,7 @@ void LyXFileDlg::Reread()
 
        // Sort the names
        qsort(pCurrentNames, iNumNames, sizeof(LyXDirEntry), 
-             (int (*)(const void *, const void *))LyXDirEntry::ldeCompProc);
+             C_LyXDirEntry_ldeCompProc);
 
        // Add them to directory box
        for (i = 0; i < iNumNames; ++i) {
@@ -412,27 +425,28 @@ LyXFileDlg::LyXFileDlg()
                pFileDlgForm = create_form_FileDlg();
                // Set callbacks. This means that we don't need a patch file
                fl_set_object_callback(pFileDlgForm->DirBox,
-                                      LyXFileDlg::FileDlgCB,0);
+                                      C_LyXFileDlg_FileDlgCB,0);
                fl_set_object_callback(pFileDlgForm->PatBox,
-                                      LyXFileDlg::FileDlgCB,1);
+                                      C_LyXFileDlg_FileDlgCB,1);
                fl_set_object_callback(pFileDlgForm->List,
-                                      LyXFileDlg::FileDlgCB,2);
+                                      C_LyXFileDlg_FileDlgCB,2);
                fl_set_object_callback(pFileDlgForm->Filename,
-                                      LyXFileDlg::FileDlgCB,3);
+                                      C_LyXFileDlg_FileDlgCB,3);
                fl_set_object_callback(pFileDlgForm->Rescan,
-                                      LyXFileDlg::FileDlgCB,10);
+                                      C_LyXFileDlg_FileDlgCB,10);
                fl_set_object_callback(pFileDlgForm->Home,
-                                      LyXFileDlg::FileDlgCB,11);
+                                      C_LyXFileDlg_FileDlgCB,11);
                fl_set_object_callback(pFileDlgForm->User1,
-                                      LyXFileDlg::FileDlgCB,12);
+                                      C_LyXFileDlg_FileDlgCB,12);
                fl_set_object_callback(pFileDlgForm->User2,
-                                      LyXFileDlg::FileDlgCB,13);
+                                      C_LyXFileDlg_FileDlgCB,13);
                
                // Make sure pressing the close box doesn't crash LyX. (RvdK)
-               fl_set_form_atclose(pFileDlgForm->FileDlg, CancelCB, 0);
+               fl_set_form_atclose(pFileDlgForm->FileDlg, 
+                                   C_LyXFileDlg_CancelCB, 0);
                // Register doubleclick callback
                fl_set_browser_dblclick_callback(pFileDlgForm->List,
-                                                DoubleClickCB,0);
+                                                C_LyXFileDlg_DoubleClickCB,0);
        }
        fl_hide_object(pFileDlgForm->User1);
        fl_hide_object(pFileDlgForm->User2);
@@ -469,7 +483,7 @@ void LyXFileDlg::SetButton(int iIndex, string const & pszName,
                *pTemp = pszPath;
        } else {
                fl_hide_object(pObject);
-               (*pTemp).erase();
+               (*pTemp).clear();
        }
 }
 
@@ -559,6 +573,11 @@ void LyXFileDlg::FileDlgCB(FL_OBJECT *, long lArgument)
        }
 }
 
+extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *ob, long data) 
+{
+       LyXFileDlg::FileDlgCB(ob, data);
+}
+
 
 // Handle callback from list
 void LyXFileDlg::HandleListHit()
@@ -581,6 +600,10 @@ void LyXFileDlg::DoubleClickCB(FL_OBJECT *, long)
                pCurrentDlg->Force(false);
 }
 
+extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *ob, long data)
+{
+       LyXFileDlg::DoubleClickCB(ob, data);
+}
 
 // Handle double click from list
 bool LyXFileDlg::HandleDoubleClick()
@@ -620,7 +643,7 @@ bool LyXFileDlg::HandleDoubleClick()
                        Temp += pszTemp;
                } else {
                        // Directory higher up
-                       Temp.erase();
+                       Temp.clear();
                        for (i = 0; i < iSelect; ++i) {
                                string piece = fl_get_browser_line(pFileDlgForm->List, i+1);
                                // The '+2' is here to count the '@b' (JMarc)
@@ -685,6 +708,10 @@ int LyXFileDlg::CancelCB(FL_FORM *, void *)
        return FL_IGNORE;
 }
 
+extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *fl, void *xev)
+{
+       return LyXFileDlg::CancelCB(fl, xev);
+}
 
 // Simulates a click on OK/Cancel
 void LyXFileDlg::Force(bool cancel)