]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.cpp
add progress view of system calls
[lyx.git] / src / frontends / qt4 / GuiView.cpp
index 0e16d88a56f532accc68185534d883e27c64203f..42e5e1ea67854832047c6f9ee9726ced2cf324d3 100644 (file)
@@ -23,6 +23,7 @@
 #include "GuiMenubar.h"
 #include "GuiToolbar.h"
 #include "GuiToolbars.h"
+#include "GuiProgress.h"
 
 #include "qt_helpers.h"
 
@@ -1032,6 +1033,49 @@ FuncStatus GuiView::getStatus(FuncRequest const & cmd)
 }
 
 
+static FileName selectTemplateFile()
+{
+       FileDialog dlg(_("Select template file"));
+       dlg.setButton1(_("Documents|#o#O"), from_utf8(lyxrc.document_path));
+       dlg.setButton1(_("Templates|#T#t"), from_utf8(lyxrc.template_path));
+
+       FileDialog::Result result =
+               dlg.open(from_utf8(lyxrc.template_path),
+                            FileFilterList(_("LyX Documents (*.lyx)")),
+                            docstring());
+
+       if (result.first == FileDialog::Later)
+               return FileName();
+       if (result.second.empty())
+               return FileName();
+       return FileName(to_utf8(result.second));
+}
+
+
+void GuiView::newDocument(string const & filename, bool from_template)
+{
+       FileName initpath(lyxrc.document_path);
+       Buffer * buf = buffer();
+       if (buf) {
+               FileName const trypath(buf->filePath());
+               // If directory is writeable, use this as default.
+               if (trypath.isDirWritable())
+                       initpath = trypath;
+       }
+
+       string templatefile = from_template ?
+               selectTemplateFile().absFilename() : string();
+       Buffer * b;
+       if (filename.empty())
+               b = newUnnamedFile(templatefile, initpath);
+       else
+               b = newFile(filename, templatefile, true);
+
+       if (b)
+               setBuffer(b);
+}
+
+
 void GuiView::insertLyXFile(docstring const & fname)
 {
        BufferView * bv = view();
@@ -1526,7 +1570,7 @@ char const * const dialognames[] = {
 "thesaurus",
 #endif
 
-"texinfo", "toc", "href", "view-source", "vspace", "wrap", "listings" };
+"texinfo", "toc", "href", "view-source", "latex-progress", "vspace", "wrap", "listings" };
 
 char const * const * const end_dialognames =
        dialognames + (sizeof(dialognames) / sizeof(char *));
@@ -1679,8 +1723,10 @@ void GuiView::updateBufferDependent(bool switched) const
 
        for(; it != end; ++it) {
                Dialog * dialog = it->second.get();
+               if (!dialog->isVisibleView())
+                       continue;
                if (switched && dialog->isBufferDependent()) {
-                       if (dialog->isVisibleView() && dialog->initialiseParams(""))
+                       if (dialog->initialiseParams(""))
                                dialog->updateView();
                        else
                                dialog->hide();
@@ -1748,6 +1794,7 @@ Dialog * createGuiThesaurus(GuiView & lv);
 Dialog * createGuiHyperlink(GuiView & lv);
 Dialog * createGuiVSpace(GuiView & lv);
 Dialog * createGuiViewSource(GuiView & lv);
+Dialog * createGuiProgress(GuiView & lv);
 Dialog * createGuiWrap(GuiView & lv);
 
 
@@ -1799,6 +1846,8 @@ Dialog * GuiView::build(string const & name)
                return createGuiLog(*this);
        if (name == "view-source")
                return createGuiViewSource(*this);
+       if (name == "latex-progress")
+               return createGuiProgress(*this);
        if (name == "mathdelimiter")
                return createGuiDelimiter(*this);
        if (name == "mathmatrix")