# widgetdata.h

Go to the documentation of this file.

    00001 // -*- C++ -*-
    00002
    00003 /*
    00004  * GChemPaint library
    00005  * widgetdata.h
    00006  *
    00007  * Copyright (C) 2002-2008 Jean Bréfort <jean.brefort@normalesup.org>
    00008  *
    00009  * This program is free software; you can redistribute it and/or
    00010  * modify it under the terms of the GNU General Public License as
    00011  * published by the Free Software Foundation; either version 2 of the
    00012  * License, or (at your option) any later version.
    00013  *
    00014  * This program is distributed in the hope that it will be useful,
    00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00017  * GNU General Public License for more details.
    00018  *
    00019  * You should have received a copy of the GNU General Public License
    00020  * along with this program; if not, write to the Free Software
    00021  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
    00022  * USA
    00023  */
    00024
    00025 #ifndef GCHEMPAINT_WIDGET_DATA_H
    00026 #define GCHEMPAINT_WIDGET_DATA_H
    00027
    00028 #include <libgnomecanvas/gnome-canvas.h>
    00029 #include <map>
    00030 #include <list>
    00031 #include <gcu/object.h>
    00032
    00034 namespace gcp {
    00035
    00036 class Application;
    00037 class View;
    00038
    00039 extern guint ClipboardDataType, ClipboardDataType1;
    00040 extern xmlChar* ClipboardData;
    00041 extern bool cleared;
    00042 void on_receive_targets (GtkClipboard *clipboard, GtkSelectionData *selection_data, Application *App);
    00043 void on_clear_data (GtkClipboard *clipboard, Application *App);
    00044
    00048 enum SelectionState
    00049 {
    00053         SelStateUnselected = 0,
    00057         SelStateSelected,
    00061         SelStateUpdating,
    00065         SelStateErasing
    00066 };
    00067
    00073 class WidgetData
    00074 {
    00075 public:
    00079         View* m_View;
    00083         GtkWidget *Canvas;
    00087         GnomeCanvasGroup *Group;
    00091         GnomeCanvasItem* Background;
    00095         double Zoom;
    00099         std::map<gcu::Object const*, GnomeCanvasGroup*>Items;
    00103         std::list<gcu::Object*>SelectedObjects;
    00104
    00109         bool IsSelected (gcu::Object const *obj) const;
    00115         void SetSelected (gcu::Object *obj);
    00121         void Unselect (gcu::Object *obj);
    00125         void UnselectAll ();
    00134         void MoveSelectedItems (double dx, double dy);
    00142         void MoveSelection (double dx, double dy);
    00150         void RotateSelection (double x, double y, double angle);
    00154         void ClearSelection () {SelectedObjects.clear();}
    00160         void Copy (GtkClipboard* clipboard);
    00166         void GetSelectionBounds (ArtDRect &rect) const;
    00170         bool HasSelection () {return !(SelectedObjects.empty());}
    00174         void SelectAll ();
    00179         static xmlDocPtr GetXmlDoc (GtkClipboard* clipboard);
    00186         void ShowSelection (bool state);
    00193         void GetObjectBounds (gcu::Object const *obj, ArtDRect *rect) const;
    00194
    00195 private:
    00196         void MoveItems (gcu::Object *obj, double dx, double dy);
    00197         void GetObjectBounds (gcu::Object const* obj, ArtDRect &rect) const;
    00198 };
    00199
    00200 }       // namespace gcp
    00201
    00202 #endif //GCHEMPAINT_WIDGET_DATA_H