summaryrefslogtreecommitdiffstats
path: root/kimagemapeditor/kimagemapeditor.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commite9ae80694875f869892f13f4fcaf1170a00dea41 (patch)
treeaa2f8d8a217e2d376224c8d46b7397b68d35de2d /kimagemapeditor/kimagemapeditor.h
downloadtdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.tar.gz
tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kimagemapeditor/kimagemapeditor.h')
-rw-r--r--kimagemapeditor/kimagemapeditor.h460
1 files changed, 460 insertions, 0 deletions
diff --git a/kimagemapeditor/kimagemapeditor.h b/kimagemapeditor/kimagemapeditor.h
new file mode 100644
index 00000000..bf76349e
--- /dev/null
+++ b/kimagemapeditor/kimagemapeditor.h
@@ -0,0 +1,460 @@
+/***************************************************************************
+ imagemapeditor.h - description
+ -------------------
+ begin : Wed Apr 4 2001
+ copyright : (C) 2001 by Jan SchÃ?fer
+ email : janschaefer@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 KIMAGEMAPDIALOG_H
+#define KIMAGEMAPDIALOG_H
+
+#include <qptrlist.h>
+#include <qobjectlist.h>
+#include <qdict.h>
+#include <qimage.h>
+#include <kurl.h>
+#include <kparts/part.h>
+#include <kparts/browserextension.h>
+#include <kparts/factory.h>
+
+#include <kdeversion.h>
+
+#include "kimearea.h"
+
+/**
+ *@author Jan Schaefer
+ */
+
+
+class QListView;
+class QPushButton;
+class DrawZone;
+class QComboBox;
+class QListViewItem;
+class KToggleAction;
+
+
+
+
+/**
+ * Stores an area tag and all its attributes
+ */
+typedef QDict<QString> AreaTag;
+
+/**
+ * Stores an image tag and all its attributes
+ * the origcode attribute hold the original htmlcode
+ * of this tag
+ */
+typedef QDict<QString> ImageTag;
+
+/**
+ * Only a small class to give a list of AreaTags a name
+ */
+class MapTag : public QPtrList<AreaTag> {
+public:
+ MapTag();
+ QString name;
+ bool modified;
+};
+
+
+class HtmlElement {
+public:
+ HtmlElement(const QString & s) {
+ htmlCode = s;
+ };
+ virtual ~HtmlElement() {}
+ ;
+ QString htmlCode;
+};
+
+class HtmlMapElement : public HtmlElement {
+public:
+ HtmlMapElement(const QString & s) : HtmlElement(s) {
+ mapTag = 0L;
+ };
+
+ virtual ~HtmlMapElement() {};
+
+ MapTag *mapTag;
+};
+
+class HtmlImgElement : public HtmlElement {
+public:
+HtmlImgElement(const QString & s) : HtmlElement(s) {
+ imgTag = 0L;
+ };
+ virtual ~HtmlImgElement() {}
+ ;
+ ImageTag *imgTag;
+};
+
+/**
+ * Stores the hole HTML content in a List.
+ */
+class HtmlContent : public QPtrList<HtmlElement> {}
+;
+
+
+class KSelectAction;
+class KRadioAction;
+class KRecentFilesAction;
+class KAction;
+#if KDE_VERSION < 300
+ class KAccel;
+#endif
+///class QListViewItem;
+class KCommandHistory;
+class KApplication;
+class QTabWidget;
+class AreaListView;
+class ImagesListView;
+class MapsListView;
+class KDockWidget;
+class KDockMainWindow;
+
+// needed by the statusbar
+#define STATUS_CURSOR 1000
+#define STATUS_SELECTION 1001
+
+class KImageMapEditor : public KParts::ReadWritePart {
+ Q_OBJECT
+public :
+ enum ToolType { Selection, Rectangle, Circle, Polygon, Freehand, AddPoint, RemovePoint };
+
+ KImageMapEditor(QWidget *parentWidget, const char *,
+ QObject *parent, const char *name, const QStringList & args = QStringList());
+ virtual ~KImageMapEditor();
+
+ static KAboutData *createAboutData();
+ static KConfig *config();
+
+ /**
+ * Makes sure, that the actions cut, copy, delete and
+ * show properties
+ * can only be executed if sth. is selected.
+ **/
+ void updateActionAccess();
+
+ DrawZone* getDrawZone() {
+ return drawZone;
+ };
+
+ void addAreaAndEdit(Area*);
+ void addArea(Area*);
+ AreaListIterator areaList() const;
+ KImageMapEditor::ToolType currentToolType() const;
+ void deleteSelected();
+ void deleteArea( Area * area);
+ void deleteAllAreas();
+ void deselectAll();
+ void deselect(Area* s);
+ void deselectWithoutUpdate(Area*);
+ QString getHTMLImageMap() const;
+ Area* onArea(const QPoint & p) const;
+ QPixmap makeListViewPix(Area &) ;
+ QString mapName() const;
+ void select(Area*);
+ void selectWithoutUpdate(Area*);
+ void select(QListViewItem*);
+ AreaSelection* selected() const;
+ void setPicture(const QImage & pix);
+ int showTagEditor(Area *);
+ KCommandHistory *commandHistory() const;
+
+ KApplication* app() const;
+
+ // Only refreshes the listView
+ void updateSelection() const;
+
+ void readConfig();
+ void writeConfig();
+
+ virtual void readProperties(KConfig *);
+ virtual void saveProperties(KConfig *);
+ virtual bool closeURL();
+ bool queryClose();
+ virtual void setReadWrite(bool);
+ QString getHtmlCode();
+
+ /**
+ * Reimplemented to disable and enable Save action
+ */
+ virtual void setModified(bool);
+
+ /**
+ * Opens the given file.
+ * If it's an HTML file openURL is called
+ * If it's an Image, the image is added to the image list
+ */
+ void openFile(const KURL &);
+
+ /**
+ * Opens the last URL the user worked with.
+ * Sets also, the last map and the last image
+ */
+ void openLastURL(KConfig*);
+
+ void readConfig(KConfig*);
+ void writeConfig(KConfig*);
+
+ virtual bool openURL(const KURL & url);
+
+protected:
+ void init();
+ bool openHTMLFile(const KURL &, const QString & mapName = QString::null, const QString & imagePath = QString::null);
+ void saveImageMap(const KURL &);
+
+ /**
+ * Returns a language dependend background picture, with
+ * the text : Drop an image or html file
+ */
+ QImage getBackgroundImage();
+
+
+ /**
+ * Saves information to restore the last working state
+ */
+ void saveLastURL(KConfig*);
+
+
+private:
+ // Stores the hole html file in a List
+ // The entries are either a MapTag an ImageTag or a QString
+ HtmlContent _htmlContent;
+
+ // the url of the working image;
+ KURL _imageUrl;
+ QString _mapName;
+ QImage _backgroundImage;
+
+ bool backupFileCreated;
+
+ KImageMapEditor::ToolType _currentToolType;
+ AreaList *areas;
+ AreaSelection *currentSelected;
+ AreaSelection *copyArea;
+ Area *defaultArea;
+ DrawZone* drawZone;
+ QTabWidget* tabWidget;
+ AreaListView *areaListView;
+ ImagesListView* imagesListView;
+ MapsListView* mapsListView;
+ HtmlMapElement* currentMapElement;
+
+ //
+ // Actions
+ //
+ KSelectAction* zoomAction;
+ KRadioAction *arrowAction;
+ KRadioAction *circleAction;
+ KRadioAction *rectangleAction;
+ KRadioAction *polygonAction;
+ KRadioAction *freehandAction;
+ KRadioAction *addPointAction;
+ KRadioAction *removePointAction;
+
+ KAction *cutAction;
+ KAction *deleteAction;
+ KAction *copyAction;
+ KAction *pasteAction;
+ KAction *zoomInAction;
+ KAction *zoomOutAction;
+
+ KAction *mapNewAction;
+ KAction *mapDeleteAction;
+ KAction *mapNameAction;
+ KAction *mapDefaultAreaAction;
+
+ KAction *imageAddAction;
+ KAction *imageRemoveAction;
+ KAction *imageUsemapAction;
+
+ KToggleAction *highlightAreasAction;
+ KToggleAction *showAltAction;
+
+ KAction *areaPropertiesAction;
+
+ KAction *moveLeftAction;
+ KAction *moveRightAction;
+ KAction *moveUpAction;
+ KAction *moveDownAction;
+
+ KAction *increaseWidthAction;
+ KAction *decreaseWidthAction;
+ KAction *increaseHeightAction;
+ KAction *decreaseHeightAction;
+
+ KAction *toFrontAction;
+ KAction *toBackAction;
+ KAction *forwardOneAction;
+ KAction *backOneAction;
+
+ KToggleAction* configureShowAreaListAction;
+ KToggleAction* configureShowMapListAction;
+ KToggleAction* configureShowImageListAction;
+
+
+ KRecentFilesAction* recentFilesAction;
+
+ #if KDE_VERSION < 300
+ KAccel *accel;
+ #endif
+
+ KDockMainWindow *mainDock;
+ KDockWidget* areaDock;
+ KDockWidget* mapsDock;
+ KDockWidget* imagesDock;
+
+ KCommandHistory *_commandHistory;
+ int maxAreaPreviewHeight;
+
+ QString cursorStatusText;
+ QString selectionStatusText;
+
+ void setupActions();
+ void setupStatusBar();
+ void updateStatusBar();
+ /* refreshes all Areas, only used by preferences dialog
+ * updates only the preview pictures*/
+ void updateAllAreas();
+ void updateUpDownBtn();
+
+ QDict<QString> getTagAttributes(QTextStream & s,QString &);
+
+ void setMap(HtmlMapElement*);
+ void setMap(MapTag*);
+ void addMap(const QString &);
+
+ // Returns the entire html file as a String
+ HtmlElement* findHtmlElement(const QString &);
+ HtmlImgElement* findHtmlImgElement(ImageTag*);
+ HtmlMapElement* findHtmlMapElement(const QString &);
+ void deleteAllMaps();
+ void addImage(const KURL &);
+ void setImageActionsEnabled(bool);
+ void setMapActionsEnabled(bool);
+
+ void saveAreasToMapTag(MapTag*);
+ void showPopupMenu(const QPoint &, const QString &);
+ void drawToCenter(QPainter* p, const QString & str, int y, int width);
+
+public slots:
+ void slotChangeStatusCoords(int x,int y);
+ void slotUpdateSelectionCoords();
+ void slotUpdateSelectionCoords( const QRect &);
+ void slotAreaChanged(Area *);
+ void slotShowMainPopupMenu(const QPoint &);
+ void slotShowMapPopupMenu(QListViewItem *, const QPoint &);
+ void slotShowImagePopupMenu(QListViewItem *, const QPoint &);
+ void slotConfigChanged();
+ void setPicture(const KURL & url);
+ void setMap(const QString &);
+ void setMapName(const QString & s);
+
+
+protected slots:
+ // overriden from KReadWritePart
+ virtual bool openFile();
+
+ virtual bool saveFile() {
+ saveImageMap( url() );
+// setModified(false);
+ return true;
+ }
+
+ void fileOpen();
+ void fileSaveAs();
+ void fileSave();
+ void fileClose();
+
+ void slotShowPopupMenu(QListViewItem*,const QPoint &);
+ void slotShowPreferences();
+ void slotHightlightAreas();
+ void slotShowAltTag();
+ void slotSelectionChanged();
+
+ int showTagEditor(QListViewItem *item);
+ int showTagEditor();
+
+ void slotZoom();
+ void slotZoomIn();
+ void slotZoomOut();
+
+ void slotCut();
+ void slotCopy();
+ void slotPaste();
+ void slotDelete();
+
+ void slotDrawArrow();
+ void slotDrawCircle();
+ void slotDrawRectangle();
+ void slotDrawPolygon();
+ void slotDrawFreehand();
+ void slotDrawAddPoint();
+ void slotDrawRemovePoint();
+
+ void mapDefaultArea();
+ void mapNew();
+ void mapDelete();
+ void mapEditName();
+ void mapShowHTML();
+ void mapPreview();
+
+ void slotBackOne();
+ void slotForwardOne();
+ void slotToBack();
+ void slotToFront();
+
+ void slotMoveUp();
+ void slotMoveDown();
+ void slotMoveLeft();
+ void slotMoveRight();
+
+ void slotIncreaseHeight();
+ void slotDecreaseHeight();
+ void slotIncreaseWidth();
+ void slotDecreaseWidth();
+
+ void slotCancelDrawing();
+
+ void configureShowAreaList();
+ void configureShowMapList();
+ void configureShowImageList();
+
+
+ // void slotPreferences();
+ void imageAdd();
+ void imageRemove();
+ void imageUsemap();
+
+ void dockingStateChanged();
+
+};
+
+
+inline KImageMapEditor::ToolType KImageMapEditor::currentToolType() const {
+ return _currentToolType;
+}
+
+inline QString KImageMapEditor::mapName() const {
+ return _mapName;
+}
+
+inline KCommandHistory* KImageMapEditor::commandHistory() const {
+ return _commandHistory;
+}
+
+
+#endif