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
This commit is contained in:
Georg Baum 2006-07-08 15:11:18 +00:00
parent 7cca51ed18
commit 457b334926
11 changed files with 124 additions and 73 deletions

View File

@ -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<Gtk::Clipboard> 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<Gtk::Clipboard> clipboard =
Gtk::Clipboard::get(GDK_SELECTION_PRIMARY);
clipboard->set_text(Glib::convert(str, "UTF-8", "ISO-8859-1"));
}
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx

View File

@ -81,10 +81,6 @@ public:
virtual void setScrollbarParams(int height, int pos, int line_height); virtual void setScrollbarParams(int height, int pos, int line_height);
/// a selection exists /// a selection exists
virtual void haveSelection(bool); virtual void haveSelection(bool);
///
virtual std::string const getClipboard() const;
///
virtual void putClipboard(std::string const &);
void inputCommit(gchar * str); void inputCommit(gchar * str);
private: private:
bool onExpose(GdkEventExpose * event); bool onExpose(GdkEventExpose * event);

View File

@ -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 <config.h>
// 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 <gtkmm.h>
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<Gtk::Clipboard> 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<Gtk::Clipboard> clipboard =
Gtk::Clipboard::get(GDK_SELECTION_PRIMARY);
clipboard->set_text(Glib::convert(str, "UTF-8", "ISO-8859-1"));
}
} // namespace frontend
} // namespace lyx

View File

@ -40,15 +40,9 @@ public:
old_work_area_->haveSelection(own); old_work_area_->haveSelection(own);
} }
std::string const get() const std::string const get() const;
{
return old_work_area_->getClipboard();
}
void put(std::string const & str) void put(std::string const & str);
{
old_work_area_->putClipboard(str);
}
//@} //@}
private: private:

View File

@ -111,7 +111,7 @@ libgtk_la_SOURCES = \
GToolbar.h \ GToolbar.h \
GUrl.C \ GUrl.C \
GUrl.h \ GUrl.h \
GuiClipboard.h \ GuiClipboard.C GuiClipboard.h \
GuiWorkArea.h \ GuiWorkArea.h \
GView.C \ GView.C \
GView.h \ GView.h \

View File

@ -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 <config.h>
#include "GuiClipboard.h"
#include "qt_helpers.h"
#include "debug.h"
#include <qapplication.h>
#include <qclipboard.h>
#include <qstring.h>
#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

View File

@ -19,15 +19,13 @@
namespace lyx { namespace lyx {
namespace frontend { namespace frontend {
typedef QWorkArea FWorkArea;
/** /**
* The Qt3 version of the Clipboard. * The Qt3 version of the Clipboard.
*/ */
class GuiClipboard: public lyx::frontend::Clipboard class GuiClipboard: public lyx::frontend::Clipboard
{ {
public: public:
GuiClipboard(FWorkArea * work_area) GuiClipboard(QWorkArea * work_area)
: old_work_area_(work_area) : old_work_area_(work_area)
{ {
} }
@ -42,19 +40,13 @@ public:
old_work_area_->haveSelection(own); old_work_area_->haveSelection(own);
} }
std::string const get() const std::string const get() const;
{
return old_work_area_->getClipboard();
}
void put(std::string const & str) void put(std::string const & str);
{
old_work_area_->putClipboard(str);
}
//@} //@}
private: private:
FWorkArea * old_work_area_; QWorkArea * old_work_area_;
}; };
} // namespace frontend } // namespace frontend

View File

@ -27,7 +27,7 @@ libqt3_la_SOURCES = \
Alert_pimpl.C \ Alert_pimpl.C \
Dialogs.C \ Dialogs.C \
FileDialog.C \ FileDialog.C \
GuiClipboard.h \ GuiClipboard.C GuiClipboard.h \
GuiImplementation.h \ GuiImplementation.h \
GuiWorkArea.h \ GuiWorkArea.h \
LyXKeySymFactory.C \ LyXKeySymFactory.C \

View File

@ -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) void QWorkArea::dragEnterEvent(QDragEnterEvent * event)
{ {
event->accept(QUriDrag::canDecode(event)); event->accept(QUriDrag::canDecode(event));

View File

@ -52,10 +52,6 @@ public:
/// a selection exists /// a selection exists
virtual void haveSelection(bool); virtual void haveSelection(bool);
/// ///
virtual std::string const getClipboard() const;
///
virtual void putClipboard(std::string const &);
///
virtual void dragEnterEvent(QDragEnterEvent * event); virtual void dragEnterEvent(QDragEnterEvent * event);
/// ///
virtual void dropEvent(QDropEvent* event); virtual void dropEvent(QDropEvent* event);

View File

@ -21,8 +21,6 @@
#include <QClipboard> #include <QClipboard>
#include <QString> #include <QString>
#include <string>
#include "support/lstrings.h" #include "support/lstrings.h"
using lyx::support::internalLineEnding; using lyx::support::internalLineEnding;
using lyx::support::externalLineEnding; using lyx::support::externalLineEnding;
@ -58,7 +56,8 @@ void GuiClipboard::haveSelection(bool own)
string const GuiClipboard::get() const string const GuiClipboard::get() const
{ {
QString str = qApp->clipboard()->text(CLIPBOARD_MODE); 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()) if (str.isNull())
return string(); return string();
@ -68,7 +67,7 @@ string const GuiClipboard::get() const
void GuiClipboard::put(string const & str) 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); qApp->clipboard()->setText(toqstr(externalLineEnding(str)), CLIPBOARD_MODE);
} }