From: Georg Baum Date: Sat, 8 Jul 2006 15:11:18 +0000 (+0000) Subject: Move more methods from WorkArea to Clipboard in qt3 and gtk X-Git-Tag: 1.6.10~12987 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=457b33492662a503519f175b58c8dc02b36826ff;p=features.git Move more methods from WorkArea to Clipboard in qt3 and gtk * src/frontends/gtk/GWorkArea.[Ch] (getClipboard): Move to GuiClipboard.[Ch] (putClipboard): ditto * src/frontends/gtk/Makefile.am: add GuiClipboard.C * src/frontends/gtk/GuiClipboard.C: new file * src/frontends/gtk/GuiClipboard.h (get, put): only declare * src/frontends/qt3/Makefile.am: add GuiClipboard.C * src/frontends/qt3/QWorkArea.[Ch] (getClipboard): Move to GuiClipboard.[Ch] (putClipboard): ditto * src/frontends/qt3/GuiClipboard.C: new file * src/frontends/qt3/GuiClipboard.h (get, put): only declare * src/frontends/qt4/GuiClipboard.C: remove unneeded include (GuiClipboard::get): adjust debug output (GuiClipboard::put): ditto git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14378 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/gtk/GWorkArea.C b/src/frontends/gtk/GWorkArea.C index 5eda32f739..19cad5cecf 100644 --- a/src/frontends/gtk/GWorkArea.C +++ b/src/frontends/gtk/GWorkArea.C @@ -519,27 +519,5 @@ void GWorkArea::haveSelection(bool toHave) } } - -// ENCODING: Gtk::Clipboard returns UTF-8, we assume that the backend -// wants ISO-8859-1 and convert it to that. -string const GWorkArea::getClipboard() const -{ - Glib::RefPtr clipboard = - Gtk::Clipboard::get(GDK_SELECTION_PRIMARY); - return Glib::convert_with_fallback( - clipboard->wait_for_text(), "ISO-8859-1", "UTF-8"); -} - - -// ENCODING: we assume that the backend passes us ISO-8859-1 and -// convert from that to UTF-8 before passing to GTK -void GWorkArea::putClipboard(string const & str) -{ - Glib::RefPtr clipboard = - Gtk::Clipboard::get(GDK_SELECTION_PRIMARY); - clipboard->set_text(Glib::convert(str, "UTF-8", "ISO-8859-1")); -} - - } // namespace frontend } // namespace lyx diff --git a/src/frontends/gtk/GWorkArea.h b/src/frontends/gtk/GWorkArea.h index 46160aa451..7c397c5c2e 100644 --- a/src/frontends/gtk/GWorkArea.h +++ b/src/frontends/gtk/GWorkArea.h @@ -81,10 +81,6 @@ public: virtual void setScrollbarParams(int height, int pos, int line_height); /// a selection exists virtual void haveSelection(bool); - /// - virtual std::string const getClipboard() const; - /// - virtual void putClipboard(std::string const &); void inputCommit(gchar * str); private: bool onExpose(GdkEventExpose * event); diff --git a/src/frontends/gtk/GuiClipboard.C b/src/frontends/gtk/GuiClipboard.C new file mode 100644 index 0000000000..7aecf524dd --- /dev/null +++ b/src/frontends/gtk/GuiClipboard.C @@ -0,0 +1,58 @@ +// -*- C++ -*- +/** + * \file gtk/GuiClipboard.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Huang Ying + * \author Abdelrazak Younes + * + * Full author contact details are available in file CREDITS. + */ + +#include + +// Too hard to make concept checks work with this file +#ifdef _GLIBCXX_CONCEPT_CHECKS +#undef _GLIBCXX_CONCEPT_CHECKS +#endif +#ifdef _GLIBCPP_CONCEPT_CHECKS +#undef _GLIBCPP_CONCEPT_CHECKS +#endif + +#include "GuiClipboard.h" +#include "debug.h" + +#include + +using std::endl; +using std::string; + +namespace lyx { +namespace frontend { + +// ENCODING: Gtk::Clipboard returns UTF-8, we assume that the backend +// wants ISO-8859-1 and convert it to that. +string const GuiClipboard::get() const +{ + Glib::RefPtr clipboard = + Gtk::Clipboard::get(GDK_SELECTION_PRIMARY); + string const str = Glib::convert_with_fallback( + clipboard->wait_for_text(), "ISO-8859-1", "UTF-8"); + lyxerr[Debug::ACTION] << "GuiClipboard::get: " << str << endl; + return str; +} + + +// ENCODING: we assume that the backend passes us ISO-8859-1 and +// convert from that to UTF-8 before passing to GTK +void GuiClipboard::put(string const & str) +{ + lyxerr[Debug::ACTION] << "GuiClipboard::put: " << str << endl; + Glib::RefPtr clipboard = + Gtk::Clipboard::get(GDK_SELECTION_PRIMARY); + clipboard->set_text(Glib::convert(str, "UTF-8", "ISO-8859-1")); +} + +} // namespace frontend +} // namespace lyx diff --git a/src/frontends/gtk/GuiClipboard.h b/src/frontends/gtk/GuiClipboard.h index 1b481a2d98..93edbfe321 100644 --- a/src/frontends/gtk/GuiClipboard.h +++ b/src/frontends/gtk/GuiClipboard.h @@ -40,15 +40,9 @@ public: old_work_area_->haveSelection(own); } - std::string const get() const - { - return old_work_area_->getClipboard(); - } + std::string const get() const; - void put(std::string const & str) - { - old_work_area_->putClipboard(str); - } + void put(std::string const & str); //@} private: diff --git a/src/frontends/gtk/Makefile.am b/src/frontends/gtk/Makefile.am index 515d74b8a2..04d6ca5368 100644 --- a/src/frontends/gtk/Makefile.am +++ b/src/frontends/gtk/Makefile.am @@ -111,7 +111,7 @@ libgtk_la_SOURCES = \ GToolbar.h \ GUrl.C \ GUrl.h \ - GuiClipboard.h \ + GuiClipboard.C GuiClipboard.h \ GuiWorkArea.h \ GView.C \ GView.h \ diff --git a/src/frontends/qt3/GuiClipboard.C b/src/frontends/qt3/GuiClipboard.C new file mode 100644 index 0000000000..0961dedd5b --- /dev/null +++ b/src/frontends/qt3/GuiClipboard.C @@ -0,0 +1,55 @@ +// -*- C++ -*- +/** + * \file qt3/GuiClipboard.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author John Levon + * \author Abdelrazak Younes + * + * Full author contact details are available in file CREDITS. + */ + +#include + +#include "GuiClipboard.h" +#include "qt_helpers.h" + +#include "debug.h" + +#include +#include +#include + +#include "support/lstrings.h" +using lyx::support::internalLineEnding; +using lyx::support::externalLineEnding; + +using std::endl; +using std::string; + +namespace lyx { +namespace frontend { + +string const GuiClipboard::get() const +{ + QString const str = qApp->clipboard()->text(QClipboard::Selection); + lyxerr[Debug::ACTION] << "GuiClipboard::get: " << (const char*) str + << endl; + if (str.isNull()) + return string(); + + return internalLineEnding(fromqstr(str)); +} + + +void GuiClipboard::put(string const & str) +{ + lyxerr[Debug::ACTION] << "GuiClipboard::put: " << str << endl; + + qApp->clipboard()->setText(toqstr(externalLineEnding(str)), + QClipboard::Selection); +} + +} // namespace frontend +} // namespace lyx diff --git a/src/frontends/qt3/GuiClipboard.h b/src/frontends/qt3/GuiClipboard.h index f79c697d56..89de047034 100644 --- a/src/frontends/qt3/GuiClipboard.h +++ b/src/frontends/qt3/GuiClipboard.h @@ -19,15 +19,13 @@ namespace lyx { namespace frontend { -typedef QWorkArea FWorkArea; - /** * The Qt3 version of the Clipboard. */ class GuiClipboard: public lyx::frontend::Clipboard { public: - GuiClipboard(FWorkArea * work_area) + GuiClipboard(QWorkArea * work_area) : old_work_area_(work_area) { } @@ -42,19 +40,13 @@ public: old_work_area_->haveSelection(own); } - std::string const get() const - { - return old_work_area_->getClipboard(); - } + std::string const get() const; - void put(std::string const & str) - { - old_work_area_->putClipboard(str); - } + void put(std::string const & str); //@} private: - FWorkArea * old_work_area_; + QWorkArea * old_work_area_; }; } // namespace frontend diff --git a/src/frontends/qt3/Makefile.am b/src/frontends/qt3/Makefile.am index abaf567d01..42af82c82b 100644 --- a/src/frontends/qt3/Makefile.am +++ b/src/frontends/qt3/Makefile.am @@ -27,7 +27,7 @@ libqt3_la_SOURCES = \ Alert_pimpl.C \ Dialogs.C \ FileDialog.C \ - GuiClipboard.h \ + GuiClipboard.C GuiClipboard.h \ GuiImplementation.h \ GuiWorkArea.h \ LyXKeySymFactory.C \ diff --git a/src/frontends/qt3/QWorkArea.C b/src/frontends/qt3/QWorkArea.C index b16075f7e2..9fe3273d42 100644 --- a/src/frontends/qt3/QWorkArea.C +++ b/src/frontends/qt3/QWorkArea.C @@ -210,23 +210,6 @@ void QWorkArea::haveSelection(bool own) } -string const QWorkArea::getClipboard() const -{ - QApplication::clipboard()->setSelectionMode(true); - QString str = QApplication::clipboard()->text(); - if (str.isNull()) - return string(); - return internalLineEnding(fromqstr(str)); -} - - -void QWorkArea::putClipboard(string const & str) -{ - QApplication::clipboard()->setSelectionMode(true); - QApplication::clipboard()->setText(toqstr(externalLineEnding(str))); -} - - void QWorkArea::dragEnterEvent(QDragEnterEvent * event) { event->accept(QUriDrag::canDecode(event)); diff --git a/src/frontends/qt3/QWorkArea.h b/src/frontends/qt3/QWorkArea.h index 84affb9429..f558d4817c 100644 --- a/src/frontends/qt3/QWorkArea.h +++ b/src/frontends/qt3/QWorkArea.h @@ -52,10 +52,6 @@ public: /// a selection exists virtual void haveSelection(bool); /// - virtual std::string const getClipboard() const; - /// - virtual void putClipboard(std::string const &); - /// virtual void dragEnterEvent(QDragEnterEvent * event); /// virtual void dropEvent(QDropEvent* event); diff --git a/src/frontends/qt4/GuiClipboard.C b/src/frontends/qt4/GuiClipboard.C index 483fa81414..6e951a4f45 100644 --- a/src/frontends/qt4/GuiClipboard.C +++ b/src/frontends/qt4/GuiClipboard.C @@ -21,8 +21,6 @@ #include #include -#include - #include "support/lstrings.h" using lyx::support::internalLineEnding; using lyx::support::externalLineEnding; @@ -58,7 +56,8 @@ void GuiClipboard::haveSelection(bool own) string const GuiClipboard::get() const { QString str = qApp->clipboard()->text(CLIPBOARD_MODE); - lyxerr[Debug::ACTION] << "getClipboard: " << (const char*) str << endl; + lyxerr[Debug::ACTION] << "GuiClipboard::get: " << (const char*) str + << endl; if (str.isNull()) return string(); @@ -68,7 +67,7 @@ string const GuiClipboard::get() const void GuiClipboard::put(string const & str) { - lyxerr[Debug::ACTION] << "putClipboard: " << str << endl; + lyxerr[Debug::ACTION] << "GuiClipboard::put: " << str << endl; qApp->clipboard()->setText(toqstr(externalLineEnding(str)), CLIPBOARD_MODE); }