]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_gui_misc.C
fix the smallcaps drawing, move xfont metrics functions out from LyXFont, move non...
[lyx.git] / src / lyx_gui_misc.C
index 0260d6d28268d68f4cc8e6a194620435976c01d8..96959eb131b77010bd5e319a122a645ddcb5f32c 100644 (file)
@@ -1,13 +1,13 @@
 // -*- C++ -*-
 /* This file is part of
- * ======================================================
+ * ====================================================== 
  * 
  *           LyX, The Document Processor
  *        
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-1999 The LyX Team.
+ *           Copyright 1995-2000 The LyX Team.
  *
- * ======================================================*/
+ * ====================================================== */
 
 #include <config.h>
 
 #include "print_form.h"
 #include "sp_form.h"
 #include "insets/insetindex.h"
+#include "LyXView.h"
 
-extern MiniBuffer *minibuffer;
-extern BufferView *current_view;
+using std::pair;
+using std::make_pair;
+
+extern BufferView * current_view;
 
 extern FD_form_paragraph * fd_form_paragraph;
 extern FD_form_paragraph_extra * fd_form_paragraph_extra;
-extern FD_form_search * fd_form_search;
 extern FD_form_character * fd_form_character;
 extern FD_form_document * fd_form_document;
 extern FD_form_paper * fd_form_paper;
@@ -49,9 +51,6 @@ extern FD_form_sendto * fd_form_sendto;
 extern FD_form_figure * fd_form_figure;
 extern FD_form_toc * fd_form_toc;
 extern FD_form_ref * fd_form_ref;
-#if 0
-extern FD_form_url * fd_form_url;
-#endif
 extern FD_form_paragraph_extra * fd_form_paragraph_extra;
 extern FD_LaTeXLog * fd_latex_log;
 extern FD_form_spell_check * fd_form_spell_check;
@@ -99,9 +98,6 @@ void CloseAllBufferRelatedPopups()
        if (fd_form_paragraph_extra->form_paragraph_extra->visible) {
                fl_hide_form(fd_form_paragraph_extra->form_paragraph_extra);
        }
-       if (fd_form_search->form_search->visible) {
-               fl_hide_form(fd_form_search->form_search);
-       }
        if (fd_form_character->form_character->visible) {
                fl_hide_form(fd_form_character->form_character);
        }
@@ -129,11 +125,6 @@ void CloseAllBufferRelatedPopups()
        if (fd_form_ref->form_ref->visible) {
                fl_hide_form(fd_form_ref->form_ref);
        }
-#if 0
-       if (fd_form_url->form_url->visible) {
-               fl_hide_form(fd_form_url->form_url);
-       }
-#endif
        if (fd_form_paper->form_paper->visible) {
                fl_hide_form(fd_form_paper->form_paper);
        }
@@ -235,7 +226,7 @@ void updateAllVisibleBufferRelatedPopups()
                }
        }
        if (fd_form_toc->browser_toc->visible) {
-               TocUpdateCB(0,0);
+               TocUpdateCB(0, 0);
        }
 #ifdef ALWAYS_UPDATE_REF
        // Ideally, the RefUpdateCB should be modified so that if the
@@ -247,10 +238,10 @@ void updateAllVisibleBufferRelatedPopups()
        // of course a compromise and an annoyance for users switching
        // between separate documents.  ARRae 241198
        if (fd_form_ref->form_ref->visible) {
-               RefUpdateCB(0,0);
+               RefUpdateCB(0, 0);
        }
 #endif
-       if (current_view->currentBuffer()->isReadonly()) {
+       if (current_view->buffer()->isReadonly()) {
                // a little crude perhaps but it works. ARRae
                if (fd_form_character->form_character->visible) {
                        fl_hide_form(fd_form_character->form_character);
@@ -313,42 +304,47 @@ void updateAllVisibleBufferRelatedPopups()
 }
 
 // Extract shortcut from <ident>|<shortcut> string
-const char* flyx_shortcut_extract(const char*sc)
+char const * flyx_shortcut_extract(char const * sc)
 {
        // Find '|' in the sc and return the string after that.
-       register const char *sd = sc;
-       while(sd[0]!=0 && sd[0] != '|') sd++;
+       register char const * sd = sc;
+       while(sd[0]!= 0 && sd[0] != '|') ++sd;
 
-       if (sd[0]=='|') {
-               sd++;
+       if (sd[0] == '|') {
+               ++sd;
                //lyxerr << sd << endl;
                return sd;
        }
        return "";
 }
 
+
 // Extract identifier from <ident>|<shortcut> string
-const char* flyx_ident_extract(const char *sc)
+char const * flyx_ident_extract(char const * sc)
 {
-       register const char *se = sc;
-       while(se[0]!=0 && se[0] != '|') se++;
+       register char const * se = sc;
+       while(se[0]!= 0 && se[0] != '|') ++se;
 
-       if (se[0]==0) return sc;
+       if (se[0] == 0) return sc;
        
-       char * sb = new char[se-sc + 1];
+       char * sb = new char[se - sc + 1];
        int index = 0;
-       register const char *sd = sc;
+       register char const * sd = sc;
        while (sd != se) {
                sb[index] = sd[0];
-               index++; sd++;
+               ++index; ++sd;
        }
-       sb[index]=0;
+       sb[index] = 0;
        return sb;
 }
 
+
 //
 void WriteAlert(string const & s1, string const & s2, string const & s3)
 {
+       MiniBuffer * minibuffer = 0;
+       if (current_view && current_view->owner())
+               minibuffer = current_view->owner()->getMiniBuffer();
        if (minibuffer) {
                ProhibitInput();
                minibuffer->Set(s1, s2, s3);
@@ -373,51 +369,43 @@ bool AskQuestion(string const & s1, string const & s2, string const & s3)
 {
        fl_set_resource("flQuestion.yes.label", idex(_("Yes|Yy#y")));
        fl_set_resource("flQuestion.no.label", idex(_("No|Nn#n")));
-#if FL_REVISION > 85
        return fl_show_question((s1 + "\n" + s2 + "\n" + s3).c_str(), 0);
-#else
-       return fl_show_question(s1.c_str(), s2.c_str(), s3.c_str());
-#endif
 }
 
+
 // Returns 1 for yes, 2 for no, 3 for cancel.
 int AskConfirmation(string const & s1, string const & s2, string const & s3)
 {
        fl_set_choices_shortcut(scex(_("Yes|Yy#y")),
                                scex(_("No|Nn#n")),
                                scex(_("Cancel|^[")));
-#if FL_REVISION < 86
-        return fl_show_choice(s1.c_str(), s2.c_str(), s3.c_str(), 
-                             3, idex(_("Yes|Yy#y")),
-                             idex(_("No|Nn#n")),
-                             idex(_("Cancel|^[")));
-#endif
-#if FL_REVISION > 85
         return fl_show_choice(s1.c_str(), s2.c_str(), s3.c_str(), 
                              3, idex(_("Yes|Yy#y")),
                              idex(_("No|Nn#n")),
                               idex(_("Cancel|^[")), 3);
-#endif
 }
 
 
 // Asks for a text
-string askForText(string const & msg, string const & dflt)
+pair<bool, string> askForText(string const & msg, string const & dflt)
 {
-       string tmp;
+       char const * tmp;
        fl_set_resource("flInput.cancel.label", idex(_("Cancel|^[")));
        fl_set_resource("flInput.ok.label", idex(_("OK|#O")));
        fl_set_resource("flInput.clear.label", idex(_("Clear|#e")));
        tmp = fl_show_input(msg.c_str(), dflt.c_str());
-       return tmp;
+       if (tmp != 0)
+         return make_pair<bool, string>(true, tmp);
+       else
+         return make_pair<bool, string>(false, string());
 }
 
+
 // Inform the user that the buffer is read-only, and that changes in the
 // dialog box that is to appear will be ignored.
-void WarnReadonly()
+void WarnReadonly(string const & file)
 {
        WriteAlert(_("Any changes will be ignored"),
                   _("The document is read-only:"),
-                  current_view->currentBuffer()->getFileName());
+                  file);
 }
-