Logo Search packages:      
Sourcecode: ktechlab version File versions

iteminterface.h

/***************************************************************************
 *   Copyright (C) 2004-2005 by David Saxton                               *
 *   david@bluehaze.org                                                    *
 *                                                                         *
 *   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 ITEMINTERFACE_H
#define ITEMINTERFACE_H

#include <qguardedptr.h>

class CNItemGroup;
class DoubleSpinBox;
class Item;
class ItemDocument;
class ItemGroup;
class ItemInterface;
class KTechlab;
class MechanicsGroup;
class Variant;

class ColorCombo;
class KComboBox;
class KToolBar;
class KURLRequester;
class QCheckBox;
class LineEdit;
class KIntSpinBox;


typedef QMap<QString, Variant*> VariantDataMap;
typedef QMap<QString, KComboBox*> KComboBoxMap;
typedef QMap<QString, LineEdit*> LineEditMap;
typedef QMap<QString, DoubleSpinBox*> DoubleSpinBoxMap;
typedef QMap<QString, KIntSpinBox*> IntSpinBoxMap;
typedef QMap<QString, ColorCombo*> ColorComboMap;
typedef QMap<QString, KURLRequester*> KURLReqMap;
typedef QMap<QString, QCheckBox*> QCheckBoxMap;

/**
This acts as an interface between the ItemDocument's and the associated
Items's, and the various objects that like to know about them
(e.g. ContextHelp, ItemEditor, ItemEditTB)
@author David Saxton
*/
00050 class ItemInterface : public QObject
{
      Q_OBJECT
      public:
            ~ItemInterface();
            static ItemInterface * self();
            /**
             * The current item group in use (or null if none).
             */
00059             ItemGroup * itemGroup() const { return p_itemGroup; }
            /**
             * Sets the orientation of all flowparts in the group.
             */
            void setFlowPartOrientation( unsigned orientation );
            /**
             * Sets the orientation of all components in the group.
             */
            void setComponentOrientation( int angleDegrees, bool flipped );
            /**
             * Updates actions based on the items currently selected (e.g. rotate,
             * flip, etc)
             */
            void updateItemActions();
            /**
             * Returns a configuration widget for the component for insertion into te
             * ItemEditTB.
             * @param showAdvanced Whether advanced data should be shown
             */
            virtual QWidget * configWidget();
      
      public slots:
            /**
             * If cnItemsAreSameType() returns true, then set the
             * data with the given id for all the CNItems in the group.
             * Else, it only sets the data for the activeCNItem()
             */
            void slotSetData( const QString &id, QVariant value );
            /**
             * Essentially the same as slotSetData.
             */
            void setProperty( Variant * v );
            /**
             * Called when the ItemEditTB is cleared. This clears all widget maps.
             */
            void itemEditTBCleared();
            void tbDataChanged();
            void slotItemDocumentChanged( ItemDocument *view );
            void slotUpdateItemInterface();
            void slotClearAll();
            void slotMultipleSelected();
            void clearItemEditorToolBar();
      
      protected:
            /**
             * Connects the specified widget to either tbDataChanged or advDataChanged
             * as specified by mi.
             */
            void connectMapWidget( QWidget *widget, const char *_signal);
      
            // Widget maps.
            LineEditMap m_stringLineEditMap;
            KComboBoxMap m_stringComboBoxMap;
            KURLReqMap m_stringURLReqMap;
            DoubleSpinBoxMap m_doubleSpinBoxMap;
            IntSpinBoxMap m_intSpinBoxMap;
            ColorComboMap m_colorComboMap;
            QCheckBoxMap m_boolCheckMap;
            
            // Use by item editor toolbar
            QGuardedPtr<KToolBar> m_pActiveItemEditorToolBar;
            int m_toolBarWidgetID;
            
            
      protected slots:
            void slotGetActionTicket();

      private:
            ItemInterface();
            static ItemInterface * m_pSelf;
      
            QGuardedPtr<ItemDocument> p_cvb;
            QGuardedPtr<ItemGroup> p_itemGroup;
            QGuardedPtr<Item> p_lastItem;
            int m_currentActionTicket;
};

#endif

Generated by  Doxygen 1.6.0   Back to index