/* * Copyright (C) 2009, Martin Robinson * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #include "DataObjectGtk.h" #include "markup.h" #include <gtk/gtk.h> namespace WebCore { String DataObjectGtk::text() { if (m_range) return m_range->text(); return m_text; } String DataObjectGtk::markup() { if (m_range) createMarkup(m_range.get(), 0, AnnotateForInterchange); return m_markup; } void DataObjectGtk::setText(const String& newText) { m_range = 0; m_text = newText; } void DataObjectGtk::setMarkup(const String& newMarkup) { m_range = 0; m_markup = newMarkup; } Vector<String> DataObjectGtk::files() { Vector<KURL> uris(uriList()); Vector<String> files; for (size_t i = 0; i < uris.size(); i++) { KURL& uri = uris[0]; if (!uri.isValid() || !uri.isLocalFile()) continue; files.append(uri.string()); } return files; } String DataObjectGtk::url() { Vector<KURL> uris(uriList()); for (size_t i = 0; i < uris.size(); i++) { KURL& uri = uris[0]; if (uri.isValid()) return uri; } return String(); } String DataObjectGtk::urlLabel() { if (hasText()) return text(); if (hasURL()) return url(); return String(); } bool DataObjectGtk::hasURL() { return !url().isEmpty(); } void DataObjectGtk::clear() { m_text = ""; m_markup = ""; m_uriList.clear(); m_image = 0; m_range = 0; } DataObjectGtk* DataObjectGtk::forClipboard(GtkClipboard* clipboard) { static HashMap<GtkClipboard*, RefPtr<DataObjectGtk> > objectMap; if (!objectMap.contains(clipboard)) { RefPtr<DataObjectGtk> dataObject = DataObjectGtk::create(); objectMap.set(clipboard, dataObject); return dataObject.get(); } HashMap<GtkClipboard*, RefPtr<DataObjectGtk> >::iterator it = objectMap.find(clipboard); return it->second.get(); } }