You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kbibtex/src/documentwidget.h

175 lines
6.0 KiB

/***************************************************************************
* Copyright (C) 2004-2006 by Thomas Fischer *
* fischer@unix-ag.uni-kl.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program 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 General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef KBIBTEXDOCUMENTWIDGET_H
#define KBIBTEXDOCUMENTWIDGET_H
#include <qtabwidget.h>
#include <kdirwatch.h>
#include <fileimporter.h>
#include <file.h>
#include <settings.h>
class QIODevice;
class QProgressDialog;
class QListViewItem;
class QWidget;
class QSplitter;
class KPopupMenu;
class KActionMenu;
class KURL;
class KTextEdit;
class KLineEdit;
namespace KBibTeX
{
class DocumentListView;
class DocumentListViewItem;
class DocumentSourceView;
class SearchBar;
class SideBar;
class WebQuery;
class DocumentWidget : public QTabWidget
{
Q_OBJECT
public:
DocumentWidget( bool isReadOnly, QWidget *parent = 0, const char *name = 0 );
~DocumentWidget();
bool open( const QString &fileName, bool mergeOnly = FALSE );
bool open( QIODevice *iodevice, bool mergeOnly = FALSE, const QString &label = QString::null, BibTeX::FileImporter *importer = NULL );
bool save( const QString &fileName, QStringList *errorLog = NULL );
bool save( QIODevice *iodevice, BibTeX::File::FileFormat format = BibTeX::File::formatBibTeX, const QString &label = QString::null, QStringList *errorLog = NULL );
bool newElement( const QString& elementType );
void searchWebsites( const QString& searchURL, bool includeAuthor );
void updateViews();
void showStatistics();
void setFactory( KXMLGUIFactory *factory, KXMLGUIClient *client );
void updateViewDocumentMenu( );
void updateAssignKeywords( );
void deferredInitialization();
void saveState();
void restoreState();
KDirWatch &dirWatch();
signals:
void modified();
void listViewSelectionChanged( int numSelected );
void undoChanged( bool undoAvailable );
public slots:
void executeElement( DocumentListViewItem* );
bool editElement();
bool editElement( DocumentListViewItem* );
bool editElement( BibTeX::Element* );
void deleteElements();
void sendSelectedToLyx();
void cutElements();
void copyElements();
void copyRefElements();
void pasteElements();
void selectAll();
void setReadOnly( bool isReadOnly );
void configureEditor();
void undoEditor();
void find();
void findNext();
void refreshBibTeXFile();
void onlineSearch();
void findDuplicates();
void slotViewFirstDocument();
void slotViewFirstDocumentsOnlineRef();
void slotNormalizeIds();
private:
enum EditMode
{
emList, emSource
};
KLineEdit *m_lineEditNewKeyword;
bool m_isReadOnly;
QSplitter *m_horSplitter;
QSplitter *m_vertSplitter;
QWidget *m_container;
SearchBar *m_searchBar;
DocumentListView *m_listViewElements;
KTextEdit * m_preview;
DocumentSourceView *m_sourceView;
SideBar* m_sideBar;
BibTeX::File *m_bibtexfile;
QString m_filename;
QProgressDialog *m_progressDialog;
int m_newElementCounter;
EditMode m_editMode;
KActionMenu *m_viewDocumentActionMenu;
KActionMenu *m_assignKeywordsActionMenu;
QStringList m_viewDocumentActionMenuURLs;
QMap<int, QString> m_assignKeywordsActionMenuURLs;
KActionMenu *m_searchWebsitesActionMenu;
KAction *m_actionEditCut;
KAction *m_actionEditCopy;
KAction *m_actionEditCopyRef;
KAction *m_actionEditPaste;
KAction *m_actionEditSelectAll;
KAction *m_actionEditFind;
KAction *m_actionEditFindNext;
KAction *m_actionNormalizeIds;
KDirWatch m_dirWatch;
void setupGUI();
void startProgress( const QString &label, QObject *progressFrom );
void endProgress( QObject *progressFrom );
void searchWebsites( BibTeX::Element *element, const QString& searchURL, bool includeAuthor );
bool editElementDialog( BibTeX::Element *element );
void updateFromGUI();
QString nextNewEntry();
KURL::List getEntryURLs( BibTeX::Entry *entry );
BibTeX::FileImporter *fileImporterFactory( const QString &fileName );
private slots:
void slotShowProgress( int current, int total );
void slotSelectionChanged();
void slotPreviewElement( QListViewItem * item = NULL );
void slotTabChanged( QWidget *tab );
void slotModified();
void slotFileGotDirty( const QString& path );
void slotRefreshDirtyFile();
void slotViewDocument( int id );
void slotAssignKeywords( int id );
void slotAddKeyword();
};
}
#endif