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.
132 lines
4.0 KiB
132 lines
4.0 KiB
/***************************************************************************
|
|
* Copyright (C) 2005 Nicolas Hadacek <hadacek@kde.org> *
|
|
* Copyright (C) 2003-2004 Alain Gibaud <alain.gibaud@free.fr> *
|
|
* *
|
|
* 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. *
|
|
***************************************************************************/
|
|
#ifndef EDITOR_MANAGER_H
|
|
#define EDITOR_MANAGER_H
|
|
|
|
class TQEvent;
|
|
#include <ktabbar.h>
|
|
#include <ktabwidget.h>
|
|
#include <klineedit.h>
|
|
|
|
#include "text_editor.h"
|
|
#include "common/gui/misc_gui.h"
|
|
#include "common/gui/dialog.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class SwitchToDialog : public Dialog
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
public:
|
|
SwitchToDialog(const TQStringList &names, TQWidget *parent);
|
|
TQString name() const { return _edit->text(); }
|
|
|
|
private:
|
|
KLineEdit *_edit;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class EditorTabBar : public TabBar
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
public:
|
|
EditorTabBar(TQWidget *parent) : TabBar(parent, "editor_tab_bar") {}
|
|
void setReadOnly(uint index, bool readOnly) { _readOnly[tabAt(index)] = readOnly; }
|
|
|
|
private:
|
|
TQMap<TQTab *, bool> _readOnly;
|
|
virtual void paintLabel(TQPainter *p, const TQRect &br, TQTab *t, bool has_focus) const;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class EditorHistory
|
|
{
|
|
public:
|
|
EditorHistory() : _current(0) {}
|
|
bool hasBack() const { return _current!=0; }
|
|
bool hasForward() const { return (_current+1)<_names.count(); }
|
|
void add(const TQString &name);
|
|
void closedLast();
|
|
TQString goBack();
|
|
TQString goForward();
|
|
|
|
private:
|
|
uint _current;
|
|
TQValueVector<TQString> _names;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
class EditorManager : public TabWidget
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
public:
|
|
EditorManager(TQWidget *parent);
|
|
|
|
PURL::UrlList files() const;
|
|
TQValueList<Editor *> &editors() { return _editors; }
|
|
uint nbEditors() const { return _editors.count(); }
|
|
Editor *createEditor(PURL::FileType type, const PURL::Url &url);
|
|
void addEditor(Editor *e);
|
|
Editor *currentEditor() const { return _current; }
|
|
Editor *findEditor(const PURL::Url &file);
|
|
Editor *findEditor(const TQString &tag);
|
|
void showEditor(Editor *e);
|
|
bool closeEditor(const PURL::Url &url);
|
|
bool closeEditor(Editor *e, bool ask);
|
|
bool openFile(const PURL::Url &url);
|
|
Editor *openEditor(const PURL::Url &url);
|
|
void connectEditor(Editor *editor);
|
|
void disconnectEditor(Editor *editor);
|
|
const EditorHistory &history() const { return _history; }
|
|
enum EditorType { DeviceEditor = 0, RegisterEditor, Nb_EditorTypes };
|
|
Editor *openEditor(EditorType type);
|
|
|
|
public slots:
|
|
void updateTitles();
|
|
void slotDropEvent(TQDropEvent *e);
|
|
void saveAllFiles();
|
|
bool closeCurrentEditor();
|
|
bool closeAllEditors();
|
|
bool closeAllOtherEditors();
|
|
void switchHeaderImplementation();
|
|
void switchToEditor();
|
|
void goBack();
|
|
void goForward();
|
|
|
|
signals:
|
|
void modified(const PURL::Url &url);
|
|
void guiChanged();
|
|
void statusChanged(const TQString &);
|
|
|
|
private:
|
|
void changeToEditor(Editor *e);
|
|
void enableActions(bool enable);
|
|
TQString title(const Editor &e) const;
|
|
TQString name(const Editor &e) const;
|
|
virtual void contextMenu(int i, const TQPoint &p);
|
|
void saveBookmarks(const Editor &e);
|
|
void restoreBookmarks(Editor &e);
|
|
|
|
private slots:
|
|
void showEditor(TQWidget *w) { showEditor(static_cast<Editor *>(w)); }
|
|
void closeRequest(int i);
|
|
void modifiedSlot();
|
|
|
|
private:
|
|
Editor *_current;
|
|
TQValueList<Editor *> _editors;
|
|
EditorHistory _history;
|
|
static const char * const EDITOR_TAGS[Nb_EditorTypes];
|
|
};
|
|
|
|
#endif
|