]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.cpp
On Linux show in crash message box the backtrace
[lyx.git] / src / frontends / qt4 / GuiView.cpp
index d76c3c87aaea9e1428b6aa955063b720fb6f5bea..a7cbbe49fed44c0026419e1a63c88d1aa6974ee4 100644 (file)
@@ -1002,6 +1002,12 @@ void GuiView::updateWindowTitle(GuiWorkArea * wa)
                return;
        setWindowTitle(qt_("LyX: ") + wa->windowTitle());
        setWindowIconText(wa->windowIconText());
+#if (QT_VERSION >= 0x040400)
+       // Sets the path for the window: this is used by OSX to 
+       // allow a context click on the title bar showing a menu
+       // with the path up to the file
+       setWindowFilePath(toqstr(wa->bufferView().buffer().absFileName()));
+#endif
 }
 
 
@@ -1732,7 +1738,8 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                else if (name == "print")
                        enable = doc_buffer->params().isExportable("dvi")
                                && lyxrc.print_command != "none";
-               else if (name == "character" || name == "symbols") {
+               else if (name == "character" || name == "symbols"
+                       || name == "mathdelimiter" || name == "mathmatrix") {
                        if (!buf || buf->isReadonly())
                                enable = false;
                        else {
@@ -1945,16 +1952,12 @@ void GuiView::openDocument(string const & fname)
        string filename;
 
        if (fname.empty()) {
-               FileDialog dlg(qt_("Select document to open"), LFUN_FILE_OPEN);
+               FileDialog dlg(qt_("Select document to open"));
                dlg.setButton1(qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
                dlg.setButton2(qt_("Examples|#E#e"),
                                toqstr(addPath(package().system_support().absFileName(), "examples")));
 
-               QStringList filter(qt_("LyX Documents (*.lyx)"));
-               filter << qt_("LyX-1.3.x Documents (*.lyx13)")
-                       << qt_("LyX-1.4.x Documents (*.lyx14)")
-                       << qt_("LyX-1.5.x Documents (*.lyx15)")
-                       << qt_("LyX-1.6.x Documents (*.lyx16)");
+               QStringList const filter(qt_("LyX Documents (*.lyx)"));
                FileDialog::Result result =
                        dlg.open(toqstr(initpath), filter);
 
@@ -2088,7 +2091,7 @@ void GuiView::importDocument(string const & argument)
                docstring const text = bformat(_("Select %1$s file to import"),
                        formats.prettyName(format));
 
-               FileDialog dlg(toqstr(text), LFUN_BUFFER_IMPORT);
+               FileDialog dlg(toqstr(text));
                dlg.setButton1(qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
                dlg.setButton2(qt_("Examples|#E#e"),
                        toqstr(addPath(package().system_support().absFileName(), "examples")));
@@ -2118,6 +2121,18 @@ void GuiView::importDocument(string const & argument)
        // get absolute path of file
        FileName const fullname(support::makeAbsPath(filename));
 
+       // Can happen if the user entered a path into the dialog
+       // (see bug #7437)
+       if (fullname.onlyFileName().empty()) {
+               docstring msg = bformat(_("The file name '%1$s' is invalid!\n"
+                                         "Aborting import."),
+                                       from_utf8(fullname.absFileName()));
+               frontend::Alert::error(_("File name error"), msg);
+               message(_("Canceled."));
+               return;
+       }
+
+
        FileName const lyxfile(support::changeExtension(fullname.absFileName(), ".lyx"));
 
        // Check if the document already is open
@@ -2210,7 +2225,7 @@ void GuiView::insertLyXFile(docstring const & fname)
                        initpath = trypath;
 
                // FIXME UNICODE
-               FileDialog dlg(qt_("Select LyX document to insert"), LFUN_FILE_INSERT);
+               FileDialog dlg(qt_("Select LyX document to insert"));
                dlg.setButton1(qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
                dlg.setButton2(qt_("Examples|#E#e"),
                        toqstr(addPath(package().system_support().absFileName(),
@@ -2252,8 +2267,7 @@ bool GuiView::renameBuffer(Buffer & b, docstring const & newname, RenameKind kin
 
                // No argument? Ask user through dialog.
                // FIXME UNICODE
-               FileDialog dlg(qt_("Choose a filename to save document as"),
-                                  LFUN_BUFFER_WRITE_AS);
+               FileDialog dlg(qt_("Choose a filename to save document as"));
                dlg.setButton1(qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
                dlg.setButton2(qt_("Templates|#T#t"), toqstr(lyxrc.template_path));
 
@@ -2889,7 +2903,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd, DispatchResult & dr)
                if (!buffer->lyxvc().inUse()) {
                        if (buffer->lyxvc().registrer()) {
                                reloadBuffer(*buffer);
-                               dr.suppressMessageUpdate();
+                               dr.clearMessageUpdate();
                        }
                }
                break;
@@ -2969,7 +2983,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd, DispatchResult & dr)
                LASSERT(buffer, return);
                if (buffer->lyxvc().revert()) {
                        reloadBuffer(*buffer);
-                       dr.suppressMessageUpdate();
+                       dr.clearMessageUpdate();
                }
                break;
 
@@ -2977,7 +2991,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd, DispatchResult & dr)
                LASSERT(buffer, return);
                buffer->lyxvc().undoLast();
                reloadBuffer(*buffer);
-               dr.suppressMessageUpdate();
+               dr.clearMessageUpdate();
                break;
 
        case LFUN_VC_REPO_UPDATE:
@@ -3458,7 +3472,6 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 
                case LFUN_FILE_INSERT_PLAINTEXT:
                case LFUN_FILE_INSERT_PLAINTEXT_PARA: {
-                       bool const as_paragraph = (cmd.action() == LFUN_FILE_INSERT_PLAINTEXT_PARA);
                        string const fname = to_utf8(cmd.argument());
                        if (!fname.empty() && !FileName::isAbsolute(fname)) {
                                dr.setMessage(_("Absolute filename expected."));
@@ -3467,8 +3480,7 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                        
                        FileName filename(fname);
                        if (fname.empty()) {
-                               FileDialog dlg(qt_("Select file to insert"), (as_paragraph ?
-                                       LFUN_FILE_INSERT_PLAINTEXT_PARA : LFUN_FILE_INSERT_PLAINTEXT));
+                               FileDialog dlg(qt_("Select file to insert"));
 
                                FileDialog::Result result = dlg.open(toqstr(bv->buffer().filePath()),
                                        QStringList(qt_("All Files (*)")));
@@ -3821,8 +3833,6 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
        if (isFullScreen()) {
                if (menuBar()->isVisible() && lyxrc.full_screen_menubar)
                        menuBar()->hide();
-               if (statusBar()->isVisible())
-                       statusBar()->hide();
        }
 }
 
@@ -3881,7 +3891,8 @@ void GuiView::toggleFullScreen()
                setContentsMargins(-2, -2, -2, -2);
                saveLayout();
                setWindowState(windowState() ^ Qt::WindowFullScreen);
-               statusBar()->hide();
+               if (lyxrc.full_screen_statusbar)
+                       statusBar()->hide();
                if (lyxrc.full_screen_menubar)
                        menuBar()->hide();
                if (lyxrc.full_screen_toolbars) {