00001
00002
00003
00004
00005
00006
00007 #include "CmdAbstract.h"
00008 #include "CmdAddPointAxis.h"
00009 #include "CmdAddPointGraph.h"
00010 #include "CmdAddPointsGraph.h"
00011 #include "CmdCopy.h"
00012 #include "CmdCut.h"
00013 #include "CmdDelete.h"
00014 #include "CmdEditPointAxis.h"
00015 #include "CmdFactory.h"
00016 #include "CmdMoveBy.h"
00017 #include "CmdPaste.h"
00018 #include "CmdRedoForTest.h"
00019 #include "CmdSelectCoordSystem.h"
00020 #include "CmdSettingsAxesChecker.h"
00021 #include "CmdSettingsColorFilter.h"
00022 #include "CmdSettingsCoords.h"
00023 #include "CmdSettingsCurveAddRemove.h"
00024 #include "CmdSettingsCurveProperties.h"
00025 #include "CmdSettingsDigitizeCurve.h"
00026 #include "CmdSettingsExportFormat.h"
00027 #include "CmdSettingsGridRemoval.h"
00028 #include "CmdSettingsPointMatch.h"
00029 #include "CmdSettingsSegments.h"
00030 #include "CmdUndoForTest.h"
00031 #include "Document.h"
00032 #include "DocumentSerialize.h"
00033 #include "EngaugeAssert.h"
00034 #include "MainWindow.h"
00035 #include <QXmlStreamReader>
00036
00037 CmdFactory::CmdFactory ()
00038 {
00039 }
00040
00041 CmdAbstract *CmdFactory::createCmd (MainWindow &mainWindow,
00042 Document &document,
00043 QXmlStreamReader &reader)
00044 {
00045 CmdAbstract *cmd = 0;
00046
00047 QXmlStreamAttributes attributes = reader.attributes();
00048 if (!attributes.hasAttribute(DOCUMENT_SERIALIZE_CMD_TYPE) ||
00049 !attributes.hasAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION)) {
00050
00051
00052 ENGAUGE_ASSERT(false);
00053
00054 }
00055
00056
00057 QString cmdType = attributes.value(DOCUMENT_SERIALIZE_CMD_TYPE).toString();
00058 QString cmdDescription = attributes.value(DOCUMENT_SERIALIZE_CMD_DESCRIPTION).toString();
00059
00060 if (cmdType == DOCUMENT_SERIALIZE_CMD_ADD_POINT_AXIS) {
00061 cmd = new CmdAddPointAxis (mainWindow,
00062 document,
00063 cmdDescription,
00064 reader);
00065 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_ADD_POINT_GRAPH) {
00066 cmd = new CmdAddPointGraph (mainWindow,
00067 document,
00068 cmdDescription,
00069 reader);
00070 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_ADD_POINTS_GRAPH) {
00071 cmd = new CmdAddPointsGraph (mainWindow,
00072 document,
00073 cmdDescription,
00074 reader);
00075 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_COPY) {
00076 cmd = new CmdCopy (mainWindow,
00077 document,
00078 cmdDescription,
00079 reader);
00080 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_CUT) {
00081 cmd = new CmdCut (mainWindow,
00082 document,
00083 cmdDescription,
00084 reader);
00085 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_DELETE) {
00086 cmd = new CmdDelete (mainWindow,
00087 document,
00088 cmdDescription,
00089 reader);
00090 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_EDIT_POINT_AXIS) {
00091 cmd = new CmdEditPointAxis (mainWindow,
00092 document,
00093 cmdDescription,
00094 reader);
00095 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_MOVE_BY) {
00096 cmd = new CmdMoveBy (mainWindow,
00097 document,
00098 cmdDescription,
00099 reader);
00100 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_PASTE) {
00101 cmd = new CmdPaste (mainWindow,
00102 document,
00103 cmdDescription,
00104 reader);
00105 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_REDO_FOR_TEST) {
00106 cmd = new CmdRedoForTest (mainWindow,
00107 document,
00108 cmdDescription,
00109 reader);
00110 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SELECT_COORD_SYSTEM) {
00111 cmd = new CmdSelectCoordSystem (mainWindow,
00112 document,
00113 cmdDescription,
00114 reader);
00115 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_AXES_CHECKER) {
00116 cmd = new CmdSettingsAxesChecker (mainWindow,
00117 document,
00118 cmdDescription,
00119 reader);
00120 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_COLOR_FILTER) {
00121 cmd = new CmdSettingsColorFilter (mainWindow,
00122 document,
00123 cmdDescription,
00124 reader);
00125 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_COORDS) {
00126 cmd = new CmdSettingsCoords (mainWindow,
00127 document,
00128 cmdDescription,
00129 reader);
00130 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_CURVE_ADD_REMOVE) {
00131 cmd = new CmdSettingsCurveAddRemove (mainWindow,
00132 document,
00133 cmdDescription,
00134 reader);
00135 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_CURVE_PROPERTIES) {
00136 cmd = new CmdSettingsCurveProperties (mainWindow,
00137 document,
00138 cmdDescription,
00139 reader);
00140 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_DIGITIZE_CURVE) {
00141 cmd = new CmdSettingsDigitizeCurve (mainWindow,
00142 document,
00143 cmdDescription,
00144 reader);
00145 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_EXPORT) {
00146 cmd = new CmdSettingsExportFormat (mainWindow,
00147 document,
00148 cmdDescription,
00149 reader);
00150 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_GRID_REMOVAL) {
00151 cmd = new CmdSettingsGridRemoval (mainWindow,
00152 document,
00153 cmdDescription,
00154 reader);
00155 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_POINT_MATCH) {
00156 cmd = new CmdSettingsPointMatch (mainWindow,
00157 document,
00158 cmdDescription,
00159 reader);
00160 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_SETTINGS_SEGMENTS) {
00161 cmd = new CmdSettingsSegments (mainWindow,
00162 document,
00163 cmdDescription,
00164 reader);
00165 } else if (cmdType == DOCUMENT_SERIALIZE_CMD_UNDO_FOR_TEST) {
00166 cmd = new CmdUndoForTest (mainWindow,
00167 document,
00168 cmdDescription,
00169 reader);
00170 } else {
00171
00172
00173 ENGAUGE_ASSERT (false);
00174
00175 }
00176
00177 return cmd;
00178 }