summaryrefslogtreecommitdiffstats
path: root/src/iteminterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/iteminterface.h')
-rw-r--r--src/iteminterface.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/iteminterface.h b/src/iteminterface.h
new file mode 100644
index 0000000..22a4a04
--- /dev/null
+++ b/src/iteminterface.h
@@ -0,0 +1,131 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by David Saxton *
+ * *
+ * 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 KLineEdit;
+class KIntSpinBox;
+
+
+typedef QMap<QString, Variant*> VariantDataMap;
+typedef QMap<QString, KComboBox*> KComboBoxMap;
+typedef QMap<QString, KLineEdit*> KLineEditMap;
+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
+*/
+class ItemInterface : public QObject
+{
+ Q_OBJECT
+ public:
+ ~ItemInterface();
+ static ItemInterface * self( KTechlab * ktechlab = 0l );
+
+ /**
+ * 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 );
+ /**
+ * 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);
+
+ KTechlab * const p_ktechlab;
+
+ // Widget maps.
+ KLineEditMap 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( KTechlab * ktechlab );
+ static ItemInterface * m_pSelf;
+
+ QGuardedPtr<ItemDocument> p_cvb;
+ QGuardedPtr<ItemGroup> p_itemGroup;
+ QGuardedPtr<Item> p_lastItem;
+ int m_currentActionTicket;
+};
+
+#endif