]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_cb.C
Herbert's patch, part 1
[lyx.git] / src / lyx_cb.C
index e79258f12c7ae6f7a9288d38e9e52422282cf647..1306b2bddf820c18679e0b00ff5d432af49597ff 100644 (file)
@@ -4,7 +4,7 @@
  *           LyX, The Document Processor
  *      
  *         Copyright 1995 Matthias Ettrich,
  *           LyX, The Document Processor
  *      
  *         Copyright 1995 Matthias Ettrich,
- *          Copyright 1995-2000 The LyX Team.
+ *          Copyright 1995-2001 The LyX Team.
  *
  * ====================================================== */
 
  *
  * ====================================================== */
 
 #include <utility> 
 #include <iostream>
 
 #include <utility> 
 #include <iostream>
 
-#include FORMS_H_LOCATION
-
 #include "lyx_cb.h"
 #include "lyx_gui_misc.h"
 #include "lyx_main.h"
 #include "lyx_cb.h"
 #include "lyx_gui_misc.h"
 #include "lyx_main.h"
+#include "buffer.h"
 #include "bufferlist.h"
 #include "bufferview_funcs.h"
 #include "bufferlist.h"
 #include "bufferview_funcs.h"
+#include "debug.h"
 #include "lastfiles.h"
 #include "LyXView.h"
 #include "lyxrc.h"
 #include "lyxtext.h"
 #include "lastfiles.h"
 #include "LyXView.h"
 #include "lyxrc.h"
 #include "lyxtext.h"
-#include "minibuffer.h"
 #include "frontends/FileDialog.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 "insets/insetlabel.h"
 #include "support/FileInfo.h"
 #include "support/filetools.h"
 #include "support/path.h"
 #include "support/syscall.h"
+#include "support/lstrings.h"
+#include "gettext.h"
+#include "BufferView.h"
 
 using std::vector;
 using std::ifstream;
 
 using std::vector;
 using std::ifstream;
@@ -62,15 +65,15 @@ extern bool finished; // all cleanup done just let it run through now.
 
    During the lock, all button and keyboard events will be modified
    and send to the inset through the following inset-features. Note that
 
    During the lock, all button and keyboard events will be modified
    and send to the inset through the following inset-features. Note that
-   Inset::InsetUnlock will be called from inside UnlockInset. It is meant
+   Inset::insetUnlock will be called from inside UnlockInset. It is meant
    to contain the code for restoring the menus and things like this.
 
    
    to contain the code for restoring the menus and things like this.
 
    
-   virtual void InsetButtonPress(int x, int y, int button);
-   virtual void InsetButtonRelease(int x, int y, int button);
-   virtual void InsetKeyPress(XKeyEvent *ev);
-   virtual void InsetMotionNotify(int x, int y, int state);
-   virtual void InsetUnlock();
+   virtual void insetButtonPress(int x, int y, int button);
+   virtual void insetButtonRelease(int x, int y, int button);
+   virtual void insetKeyPress(XKeyEvent *ev);
+   virtual void insetMotionNotify(int x, int y, int state);
+   virtual void insetUnlock();
 
    If a inset wishes any redraw and/or update it just has to call
    UpdateInset(this).
 
    If a inset wishes any redraw and/or update it just has to call
    UpdateInset(this).
@@ -112,12 +115,12 @@ void ToggleLockedInsetCursor(int x, int y, int asc, int desc);
 void ShowMessage(Buffer const * buf,
                 string const & msg1,
                 string const & msg2,
 void ShowMessage(Buffer const * buf,
                 string const & msg1,
                 string const & msg2,
-                string const & msg3, int delay)
+                string const & msg3)
 {
 {
-       if (lyxrc.use_gui)
-               buf->getUser()->owner()->getMiniBuffer()->Set(msg1, msg2,
-                                                             msg3, delay);
-       else
+       if (lyxrc.use_gui) {
+               string const str = msg1 + ' ' + msg2 + ' ' + msg3;
+               buf->getUser()->owner()->message(str);
+       else
                lyxerr << msg1 << msg2 << msg3 << endl;
 }
 
                lyxerr << msg1 << msg2 << msg3 << endl;
 }
 
@@ -133,7 +136,7 @@ void ShowMessage(Buffer const * buf,
 bool MenuWrite(BufferView * bv, Buffer * buffer)
 {
        // FIXME: needed ?
 bool MenuWrite(BufferView * bv, Buffer * buffer)
 {
        // FIXME: needed ?
-       XFlush(fl_get_display());
+       XFlush(GUIRunTime::x11Display());
  
        if (!buffer->save()) {
                string const fname = buffer->fileName();
  
        if (!buffer->save()) {
                string const fname = buffer->fileName();
@@ -276,10 +279,10 @@ int MenuRunChktex(Buffer * buffer)
 
 void QuitLyX()
 {
 
 void QuitLyX()
 {
-       lyxerr.debug() << "Running QuitLyX." << endl;
+       lyxerr[Debug::INFO] << "Running QuitLyX." << endl;
 
        if (lyxrc.use_gui) {
 
        if (lyxrc.use_gui) {
-               if (!bufferlist.QwriteAll())
+               if (!bufferlist.qwriteAll())
                        return;
 
                lastfiles->writeFile(lyxrc.lastfiles);
                        return;
 
                lastfiles->writeFile(lyxrc.lastfiles);
@@ -293,7 +296,7 @@ void QuitLyX()
        bufferlist.closeAll();
 
        // do any other cleanup procedures now
        bufferlist.closeAll();
 
        // do any other cleanup procedures now
-       lyxerr.debug() << "Deleting tmp dir " << system_tempdir << endl;
+       lyxerr[Debug::INFO] << "Deleting tmp dir " << system_tempdir << endl;
 
        DestroyLyXTmpDir(system_tempdir);
 
 
        DestroyLyXTmpDir(system_tempdir);
 
@@ -315,7 +318,7 @@ void AutoSave(BufferView * bv)
                return;
        }
 
                return;
        }
 
-       bv->owner()->getMiniBuffer()->Set(_("Autosaving current document..."));
+       bv->owner()->message(_("Autosaving current document..."));
        
        // create autosave filename
        string fname =  OnlyPath(bv->buffer()->fileName());
        
        // create autosave filename
        string fname =  OnlyPath(bv->buffer()->fileName());
@@ -355,7 +358,7 @@ void AutoSave(BufferView * bv)
                                // It is dangerous to do this in the child,
                                // but safe in the parent, so...
                                if (pid == -1)
                                // It is dangerous to do this in the child,
                                // but safe in the parent, so...
                                if (pid == -1)
-                                       bv->owner()->getMiniBuffer()->Set(_("Autosave Failed!"));
+                                       bv->owner()->message(_("Autosave Failed!"));
                        }
                }
                if (pid == 0) { // we are the child so...
                        }
                }
                if (pid == 0) { // we are the child so...
@@ -389,9 +392,9 @@ Buffer * NewLyxFile(string const & filename)
                tmpname = split(tmpname, ':');
        }
 #endif
                tmpname = split(tmpname, ':');
        }
 #endif
-       lyxerr.debug() << "Arg is " << filename
-                      << "\nName is " << name
-                      << "\nTemplate is " << tmpname << endl;
+       lyxerr[Debug::INFO] << "Arg is " << filename
+                           << "\nName is " << name
+                           << "\nTemplate is " << tmpname << endl;
 
        // find a free buffer 
        Buffer * tmpbuf = bufferlist.newFile(name, tmpname);
 
        // find a free buffer 
        Buffer * tmpbuf = bufferlist.newFile(name, tmpname);
@@ -461,9 +464,9 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
        // clear the selection
        bv->beforeChange(bv->text);
        if (!asParagraph)
        // clear the selection
        bv->beforeChange(bv->text);
        if (!asParagraph)
-               bv->text->InsertStringA(bv, tmpstr);
+               bv->text->insertStringAsLines(bv, tmpstr);
        else
        else
-               bv->text->InsertStringB(bv, tmpstr);
+               bv->text->insertStringAsParagraphs(bv, tmpstr);
        bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 }
 
        bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 }
 
@@ -471,28 +474,18 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
 void MenuInsertLabel(BufferView * bv, string const & arg)
 {
        string label(arg);
 void MenuInsertLabel(BufferView * bv, string const & arg)
 {
        string label(arg);
-       ProhibitInput(bv);
+       bv->owner()->prohibitInput();
        if (label.empty()) {
        if (label.empty()) {
-#ifndef NEW_INSETS
-               LyXParagraph * par =
-                       bv->text->cursor.par()->FirstPhysicalPar();
-#else
-               LyXParagraph * par = bv->text->cursor.par();
-#endif
+               Paragraph * par = bv->text->cursor.par();
                LyXLayout const * layout =
                        &textclasslist.Style(bv->buffer()->params.textclass,
                LyXLayout const * layout =
                        &textclasslist.Style(bv->buffer()->params.textclass,
-                                            par->GetLayout());
+                                            par->getLayout());
 
 
-#ifndef NEW_INSETS
-               if (layout->latextype == LATEX_PARAGRAPH && par->previous_) {
-                       LyXParagraph * par2 = par->previous_->FirstPhysicalPar();
-#else
                if (layout->latextype == LATEX_PARAGRAPH && par->previous()) {
                if (layout->latextype == LATEX_PARAGRAPH && par->previous()) {
-                       LyXParagraph * par2 = par->previous();
-#endif
+                       Paragraph * par2 = par->previous();
                        LyXLayout const * layout2 =
                                &textclasslist.Style(bv->buffer()->params.textclass,
                        LyXLayout const * layout2 =
                                &textclasslist.Style(bv->buffer()->params.textclass,
-                                                    par2->GetLayout());
+                                                    par2->getLayout());
                        if (layout2->latextype != LATEX_PARAGRAPH) {
                                par = par2;
                                layout = layout2;
                        if (layout2->latextype != LATEX_PARAGRAPH) {
                                par = par2;
                                layout = layout2;
@@ -501,30 +494,12 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
                string text = layout->latexname().substr(0, 3);
                if (layout->latexname() == "theorem")
                        text = "thm"; // Create a correct prefix for prettyref
                string text = layout->latexname().substr(0, 3);
                if (layout->latexname() == "theorem")
                        text = "thm"; // Create a correct prefix for prettyref
-#ifndef NEW_INSETS
-               if (par->footnoteflag==LyXParagraph::OPEN_FOOTNOTE)
-                       switch (par->footnotekind) {
-                       case LyXParagraph::FIG:
-                       case LyXParagraph::WIDE_FIG:
-                               text = "fig";
-                               break;
-                       case LyXParagraph::TAB:
-                       case LyXParagraph::WIDE_TAB:
-                               text = "tab";
-                               break;
-                       case LyXParagraph::ALGORITHM:
-                               text = "alg";
-                               break;
-                       case LyXParagraph::FOOTNOTE:    
-                       case LyXParagraph::MARGIN:
-                               break;
-                       }
-#endif
+
                text += ":";
                if (layout->latextype == LATEX_PARAGRAPH ||
                    lyxrc.label_init_length < 0)
                        text.erase();
                text += ":";
                if (layout->latextype == LATEX_PARAGRAPH ||
                    lyxrc.label_init_length < 0)
                        text.erase();
-               string par_text = par->String(bv->buffer(), false);
+               string par_text = par->asString(bv->buffer(), false);
                for (int i = 0; i < lyxrc.label_init_length; ++i) {
                        if (par_text.empty())
                                break;
                for (int i = 0; i < lyxrc.label_init_length; ++i) {
                        if (par_text.empty())
                                break;
@@ -547,7 +522,7 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
                InsetLabel * inset = new InsetLabel( p );
                bv->insertInset( inset );
        }
                InsetLabel * inset = new InsetLabel( p );
                bv->insertInset( inset );
        }
-       AllowInput(bv);
+       bv->owner()->allowInput();
 }
 
 
 }
 
 
@@ -567,14 +542,14 @@ void MenuLayoutSave(BufferView * bv)
 // reconfigure the automatic settings.
 void Reconfigure(BufferView * bv)
 {
 // reconfigure the automatic settings.
 void Reconfigure(BufferView * bv)
 {
-       bv->owner()->getMiniBuffer()->Set(_("Running configure..."));
+       bv->owner()->message(_("Running configure..."));
 
        // Run configure in user lyx directory
        Path p(user_lyxdir);
        Systemcalls one(Systemcalls::System, 
                        AddName(system_lyxdir, "configure"));
        p.pop();
 
        // Run configure in user lyx directory
        Path p(user_lyxdir);
        Systemcalls one(Systemcalls::System, 
                        AddName(system_lyxdir, "configure"));
        p.pop();
-       bv->owner()->getMiniBuffer()->Set(_("Reloading configuration..."));
+       bv->owner()->message(_("Reloading configuration..."));
        lyxrc.read(LibFileSearch(string(), "lyxrc.defaults"));
        WriteAlert(_("The system has been reconfigured."), 
                   _("You need to restart LyX to make use of any"),
        lyxrc.read(LibFileSearch(string(), "lyxrc.defaults"));
        WriteAlert(_("The system has been reconfigured."), 
                   _("You need to restart LyX to make use of any"),