From 435067c0f13bd3311351a93d4f34a1f5f18c199e Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Sun, 29 Aug 2010 17:23:35 +0000 Subject: [PATCH] * InsetHyperlink.{cpp,h}: * 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 | 2 ++ src/insets/InsetHyperlink.cpp | 45 +++++++++++++++++++++++++++++++++++ src/insets/InsetHyperlink.h | 8 +++++++ 3 files changed, 55 insertions(+) diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc index 526be9fb69..ce419bbf5f 100644 --- a/lib/ui/stdcontext.inc +++ b/lib/ui/stdcontext.inc @@ -645,6 +645,8 @@ Menuset # Menu "context-hyperlink" Item "Settings...|S" "inset-settings" + Separator + Item "Open Target...|O" "inset-edit" End End diff --git a/src/insets/InsetHyperlink.cpp b/src/insets/InsetHyperlink.cpp index e85fb4558a..e9c9efea91 100644 --- a/src/insets/InsetHyperlink.cpp +++ b/src/insets/InsetHyperlink.cpp @@ -13,12 +13,18 @@ #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 diff --git a/src/insets/InsetHyperlink.h b/src/insets/InsetHyperlink.h index 4362ad039a..247f703ee8 100644 --- a/src/insets/InsetHyperlink.h +++ b/src/insets/InsetHyperlink.h @@ -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); } }; -- 2.39.2