Your IP : 216.73.216.48
/* This file is part of the KDE project
Copyright (C) 2010 KO GmbH <ben.martin@kogmbh.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __koDocumentRdfEditWidget_h__
#define __koDocumentRdfEditWidget_h__
#include "kordf_export.h"
#include "RdfForward.h"
// Calligra
#include <KoPageWidgetItem.h>
// Qt
#include <QWidget>
class KoDocumentRdf;
class KoSemanticStylesheet;
class QComboBox;
/**
* @short A widget to let the user view and edit the Rdf for with the document
* @author Ben Martin <ben.martin@kogmbh.com>
* @see KoDocumentRdf
*
* This is initially used by the KoDocumentInfoDlg class to add a new page
* that shows you and editable interface for your Rdf. The class was kept
* as its own QWidget so that it can be moved to other dialogs and or shown
* in many places.
*
* The widget lets the user edit Rdf that is stored both inline in content.xml
* as well as from manifest.rdf and other external Rdf files from the OASIS
* document.
*
*/
class KORDF_EXPORT KoDocumentRdfEditWidget : public QWidget, public KoPageWidgetItem
{
Q_OBJECT
public:
/**
* The constructor
* @param parent a pointer to the parent widget
* @param docRdf a pointer to the KoDocumentRdf to show/edit
*/
explicit KoDocumentRdfEditWidget(KoDocumentRdf *docRdf);
/** The destructor */
virtual ~KoDocumentRdfEditWidget();
/** Add this widget to a user interface where you want Rdf editing */
QWidget *widget();
bool shouldDialogCloseBeVetoed();
/** OK button in dialog, if this returns false then do not close the dialog */
void apply();
QString name() const;
QString iconName() const;
public Q_SLOTS:
/**
* Create a new triple in the model and UI in the Triples page.
*/
void addTriple();
/**
* copy the triples which are currently selected in the Triples
* page. new triples will have a unique identifier appended to
* their object to avoid attempting to insert the same
* subj,pred,obj twice.
*/
void copyTriples();
/**
* Delete the selected triples in the Triples page
*/
void deleteTriples();
/**
* Create a new namespace
*/
void addNamespace();
/**
* Delete the selected namespaces
*/
void deleteNamespace();
/**
* Execute the SPARQL query the user has provided.
*
* query is taken from m_ui->m_sparqlQuery
* results are added to m_ui->m_sparqlResultView
*/
void sparqlExecute();
private Q_SLOTS:
/**
* This methods set the default stylesheet to the
* user selection for each type of KoRdfSemanticItem.
*/
void onDefaultSheetButtonClicked();
void onDefaultAllSheetButtonClicked();
/**
* Show a context menu for the semantic treeview
*/
void showSemanticViewContextMenu(const QPoint &at);
/**
* The user edited a semantic item, update the view.
*/
void semanticObjectUpdated(hKoRdfSemanticItem item);
private:
hKoSemanticStylesheet stylesheetFromComboBox(QComboBox *w) const;
void applyStylesheetFromComboBox(QComboBox *comboBox) const;
private:
class KoDocumentRdfEditWidgetPrivate;
KoDocumentRdfEditWidgetPrivate *const d;
};
#endif