]> git.lyx.org Git - features.git/commitdiff
* InsetHyperlink.{cpp,h}:
authorJürgen Spitzmüller <spitz@lyx.org>
Sun, 29 Aug 2010 17:23:35 +0000 (17:23 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Sun, 29 Aug 2010 17:23:35 +0000 (17:23 +0000)
* stdcontext.inc:
- basic implementation of inset-edit (only for file: now) (part of bug #6864)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35230 a592a061-630c-0410-9148-cb99ea01b6c8

lib/ui/stdcontext.inc
src/insets/InsetHyperlink.cpp
src/insets/InsetHyperlink.h

index 526be9fb691936d4206bea4a98aa64110ea01dca..ce419bbf5f5f95aad7e6a88dd273ebf62733b34e 100644 (file)
@@ -645,6 +645,8 @@ Menuset
 #
        Menu "context-hyperlink"
                Item "Settings...|S" "inset-settings"
+               Separator
+               Item "Open Target...|O" "inset-edit"
        End
 
 End
index e85fb4558a39615a0a7f174e70fcc9b1f554b91a..e9c9efea9164b5e251d5079c70e92246c87e3bde 100644 (file)
 
 #include "InsetHyperlink.h"
 
+#include "Buffer.h"
 #include "DispatchResult.h"
+#include "Format.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
 #include "LaTeXFeatures.h"
 #include "OutputParams.h"
 #include "output_xhtml.h"
 
 #include "support/docstream.h"
+#include "support/FileName.h"
+#include "support/filetools.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
@@ -63,6 +69,45 @@ docstring InsetHyperlink::screenLabel() const
        return temp + url;
 }
 
+void InsetHyperlink::doDispatch(Cursor & cur, FuncRequest & cmd)
+{
+       switch (cmd.action()) {
+
+       case LFUN_INSET_EDIT:
+               viewTarget();
+               break;
+
+       default:
+               InsetCommand::doDispatch(cur, cmd);
+               break;
+       }
+}
+
+
+bool InsetHyperlink::getStatus(Cursor & cur, FuncRequest const & cmd,
+               FuncStatus & flag) const
+{
+       switch (cmd.action()) {
+       case LFUN_INSET_EDIT:
+               flag.setEnabled(getParam("type") == "file:");
+               return true;
+
+       default:
+               return InsetCommand::getStatus(cur, cmd, flag);
+       }
+}
+
+
+void InsetHyperlink::viewTarget() const
+{
+       // FIXME implement viewer for web url
+       if (getParam("type") != "file:")
+               return;
+       FileName url = makeAbsPath(to_utf8(getParam("target")), buffer().filePath());
+       string format = formats.getFormatFromFile(url);
+       formats.view(buffer(), url, format);
+}
+
 
 int InsetHyperlink::latex(odocstream & os,
                          OutputParams const & runparams) const
index 4362ad039a943b09ec9b44942d9015e7b2ba6deb..247f703ee81f0a001ff78ca136e4c59f6c51e915 100644 (file)
@@ -60,6 +60,14 @@ public:
        ///
        docstring toolTip(BufferView const & bv, int x, int y) const;
 private:
+       ///
+       void doDispatch(Cursor & cur, FuncRequest & cmd);
+       ///
+       bool getStatus(Cursor & cur, FuncRequest const & cmd,
+               FuncStatus & flag) const;
+       ///
+       void viewTarget() const;
+       ///
        Inset * clone() const { return new InsetHyperlink(*this); }
 };