]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_cb.C
Fix fuer #209
[lyx.git] / src / lyx_cb.C
index c8b5566d2a8b57dace66d87d5ea0578e5b02e0ec..4dba209bcbc6f595b01c62b569ead25dcb198027 100644 (file)
 
 #include <config.h>
 
-#include <fstream>
-#include <algorithm>
-#include <utility> 
-#include <iostream>
-
 #include "lyx_cb.h"
-#include "lyx_gui_misc.h"
 #include "lyx_main.h"
+#include "buffer.h"
 #include "bufferlist.h"
 #include "bufferview_funcs.h"
+#include "debug.h"
 #include "lastfiles.h"
 #include "LyXView.h"
 #include "lyxrc.h"
 #include "lyxtext.h"
+#include "gettext.h"
+#include "BufferView.h"
+#include "lyxtextclasslist.h"
+
+#include "insets/insetlabel.h"
+
+#include "frontends/Alert.h"
 #include "frontends/FileDialog.h"
 #include "frontends/GUIRunTime.h"
-#include "insets/insetlabel.h"
+
 #include "support/FileInfo.h"
 #include "support/filetools.h"
 #include "support/path.h"
 #include "support/syscall.h"
-#include "gettext.h"
-#include "BufferView.h"
+#include "support/lstrings.h"
+
+#include <fstream>
+#include <algorithm>
+#include <utility> 
+#include <iostream>
 
 using std::vector;
 using std::ifstream;
@@ -114,9 +121,10 @@ void ShowMessage(Buffer const * buf,
                 string const & msg2,
                 string const & msg3)
 {
-       if (lyxrc.use_gui) {
-               string const str = msg1 + ' ' + msg2 + ' ' + msg3;
-               buf->getUser()->owner()->message(str);
+       if (lyxrc.use_gui
+           && buf && buf->getUser() && buf->getUser()->owner()) {
+                       string const str = msg1 + ' ' + msg2 + ' ' + msg3;
+                       buf->getUser()->owner()->message(str);
        } else
                lyxerr << msg1 << msg2 << msg3 << endl;
 }
@@ -136,10 +144,8 @@ bool MenuWrite(BufferView * bv, Buffer * buffer)
        XFlush(GUIRunTime::x11Display());
  
        if (!buffer->save()) {
-               string const fname = buffer->fileName();
-               string const s = MakeAbsPath(fname);
-               if (AskQuestion(_("Save failed. Rename and try again?"),
-                               MakeDisplayPath(s, 50),
+               if (Alert::askQuestion(_("Save failed. Rename and try again?"),
+                               MakeDisplayPath(buffer->fileName(), 50),
                                _("(If not, document is not saved.)"))) {
                        return WriteAs(bv, buffer);
                }
@@ -156,16 +162,16 @@ bool MenuWrite(BufferView * bv, Buffer * buffer)
 bool WriteAs(BufferView * bv, Buffer * buffer, string const & filename)
 {
        string fname = buffer->fileName();
-       string oldname = fname;
+       string const oldname = fname;
 
        if (filename.empty()) {
 
                FileDialog fileDlg(bv->owner(),
                                   _("Choose a filename to save document as"),
                        LFUN_WRITEAS,
-                       make_pair(string(_("Documents")),
+                       make_pair(string(_("Documents|#o#O")),
                                  string(lyxrc.document_path)),
-                       make_pair(string(_("Templates")),
+                       make_pair(string(_("Templates|#T#t")),
                                  string(lyxrc.template_path)));
 
                if (!IsLyXFilename(fname))
@@ -193,7 +199,7 @@ bool WriteAs(BufferView * bv, Buffer * buffer, string const & filename)
 
        // Same name as we have already?
        if (!buffer->isUnnamed() && fname == oldname) {
-               if (!AskQuestion(_("Same name as document already has:"),
+               if (!Alert::askQuestion(_("Same name as document already has:"),
                                 MakeDisplayPath(fname, 50),
                                 _("Save anyway?")))
                        return false;
@@ -201,7 +207,7 @@ bool WriteAs(BufferView * bv, Buffer * buffer, string const & filename)
        } 
        // No, but do we have another file with this name open?
        else if (!buffer->isUnnamed() && bufferlist.exists(fname)) {
-               if (AskQuestion(_("Another document with same name open!"),
+               if (Alert::askQuestion(_("Another document with same name open!"),
                                MakeDisplayPath(fname, 50),
                                _("Replace with current document?")))
                        {
@@ -218,7 +224,7 @@ bool WriteAs(BufferView * bv, Buffer * buffer, string const & filename)
        } // Check whether the file exists
        else {
                FileInfo const myfile(fname);
-               if (myfile.isOK() && !AskQuestion(_("Document already exists:"), 
+               if (myfile.isOK() && !Alert::askQuestion(_("Document already exists:"), 
                                                  MakeDisplayPath(fname, 50),
                                                  _("Replace file?")))
                        return false;
@@ -248,7 +254,7 @@ int MenuRunChktex(Buffer * buffer)
        int ret;
 
        if (buffer->isSGML()) {
-               WriteAlert(_("Chktex does not work with SGML derived documents."));
+               Alert::alert(_("Chktex does not work with SGML derived documents."));
                return 0;
        } else 
                ret = buffer->runChktex();
@@ -260,15 +266,15 @@ int MenuRunChktex(Buffer * buffer)
                        s = _("No warnings found.");
                } else if (ret == 1) {
                        s = _("One warning found.");
-                       t = _("Use 'Edit->Go to Error' to find it.");
+                       t = _("Use `Navigate->Error' to find it.");
                } else {
                        s += tostr(ret);
                        s += _(" warnings found.");
-                       t = _("Use 'Edit->Go to Error' to find them.");
+                       t = _("Use `Navigate->Error' to find them.");
                }
-               WriteAlert(_("Chktex run successfully"), s, t);
+               Alert::alert(_("Chktex run successfully"), s, t);
        } else {
-               WriteAlert(_("Error!"), _("It seems chktex does not work."));
+               Alert::alert(_("Error!"), _("It seems chktex does not work."));
        }
        return ret;
 }
@@ -318,7 +324,7 @@ void AutoSave(BufferView * bv)
        bv->owner()->message(_("Autosaving current document..."));
        
        // create autosave filename
-       string fname =  OnlyPath(bv->buffer()->fileName());
+       string fname =  bv->buffer()->filePath();
        fname += "#";
        fname += OnlyFilename(bv->buffer()->fileName());
        fname += "#";
@@ -355,7 +361,7 @@ void AutoSave(BufferView * bv)
                                // It is dangerous to do this in the child,
                                // but safe in the parent, so...
                                if (pid == -1)
-                                       bv->owner()->message(_("Autosave Failed!"));
+                                       bv->owner()->message(_("Autosave failed!"));
                        }
                }
                if (pid == 0) { // we are the child so...
@@ -413,7 +419,7 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
                FileDialog fileDlg(bv->owner(), _("Select file to insert"),
                        (asParagraph) ? LFUN_FILE_INSERT_ASCII_PARA : LFUN_FILE_INSERT_ASCII);
  
-               FileDialog::Result result = fileDlg.Select(bv->owner()->buffer()->filepath);
+               FileDialog::Result result = fileDlg.Select(bv->owner()->buffer()->filePath());
 
                if (result.first == FileDialog::Later)
                        return;
@@ -427,14 +433,14 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
        FileInfo fi(fname);
 
        if (!fi.readable()) {
-               WriteFSAlert(_("Error! Specified file is unreadable: "),
+               Alert::err_alert(_("Error! Specified file is unreadable: "),
                             MakeDisplayPath(fname, 50));
                return;
        }
 
        ifstream ifs(fname.c_str());
        if (!ifs) {
-               WriteFSAlert(_("Error! Cannot open specified file: "),
+               Alert::err_alert(_("Error! Cannot open specified file: "),
                             MakeDisplayPath(fname, 50));
                return;
        }
@@ -473,7 +479,7 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
        string label(arg);
        bv->owner()->prohibitInput();
        if (label.empty()) {
-               Paragraph * par = bv->text->cursor.par();
+               Paragraph * par = bv->getLyXText()->cursor.par();
                LyXLayout const * layout =
                        &textclasslist.Style(bv->buffer()->params.textclass,
                                             par->getLayout());
@@ -509,7 +515,7 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
                }
 
                pair<bool, string> result =
-                       askForText(_("Enter new label to insert:"), text);
+                       Alert::askForText(_("Enter new label to insert:"), text);
                if (result.first) {
                        label = frontStrip(strip(result.second));
                }
@@ -523,18 +529,6 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
 }
 
 
-void MenuLayoutSave(BufferView * bv)
-{
-       if (!bv->available())
-               return;
-
-       if (AskQuestion(_("Do you want to save the current settings"),
-                       _("for Character, Document, Paper and Quotes"),
-                       _("as default for new documents?")))
-               bv->buffer()->saveParamsAsDefaults();
-}
-
-
 // This function runs "configure" and then rereads lyx.defaults to
 // reconfigure the automatic settings.
 void Reconfigure(BufferView * bv)
@@ -548,7 +542,7 @@ void Reconfigure(BufferView * bv)
        p.pop();
        bv->owner()->message(_("Reloading configuration..."));
        lyxrc.read(LibFileSearch(string(), "lyxrc.defaults"));
-       WriteAlert(_("The system has been reconfigured."), 
+       Alert::alert(_("The system has been reconfigured."), 
                   _("You need to restart LyX to make use of any"),
                   _("updated document class specifications."));
 }