[270] | 1 | using System;
|
---|
| 2 | using System.Collections;
|
---|
| 3 | using System.Collections.Generic;
|
---|
| 4 | using System.Linq;
|
---|
| 5 | using System.Text;
|
---|
| 6 | using Bridge;
|
---|
| 7 | using Bridge.Html5;
|
---|
| 8 | using Bridge.jQuery2;
|
---|
| 9 |
|
---|
| 10 | namespace WebMrbc
|
---|
| 11 | {
|
---|
| 12 | public class BlocklyView
|
---|
| 13 | {
|
---|
| 14 | string identifier;
|
---|
| 15 | public string Identifier {
|
---|
| 16 | get { return identifier; }
|
---|
| 17 | set {
|
---|
| 18 | if (identifier != value) {
|
---|
| 19 | identifier = value;
|
---|
| 20 | IdentifierChanged?.Invoke(this, EventArgs.Empty);
|
---|
| 21 | }
|
---|
| 22 | }
|
---|
| 23 | }
|
---|
| 24 | public Dictionary<string, FlyoutCategoryHandler> FlyoutCategoryHandlers = new Dictionary<string, FlyoutCategoryHandler>();
|
---|
| 25 | public event EventHandler<Create> BlockCreated;
|
---|
| 26 | public event EventHandler<Delete> BlockDeleted;
|
---|
| 27 | public event EventHandler<Change> BlockChanged;
|
---|
| 28 | public event EventHandler<Move> BlockMoveed;
|
---|
| 29 | public event EventHandler<Ui> UiEvent;
|
---|
| 30 | public event EventHandler<EventArgs> IdentifierChanged;
|
---|
| 31 | public bool Changed = true;
|
---|
| 32 |
|
---|
| 33 | private static int No = 1;
|
---|
| 34 | private WorkspaceSvg _Workspace;
|
---|
| 35 | private string _WorkspaceElementId;
|
---|
| 36 | private int _IdNo;
|
---|
| 37 |
|
---|
| 38 | static BlocklyView()
|
---|
| 39 | {
|
---|
| 40 | Script.Set(Blockly.Blocks, ColourPickerBlock.type_name, new ColourPickerBlock());
|
---|
| 41 | Script.Set(Blockly.Blocks, ColourRandomBlock.type_name, new ColourRandomBlock());
|
---|
| 42 | Script.Set(Blockly.Blocks, ColourRGBBlock.type_name, new ColourRGBBlock());
|
---|
| 43 | Script.Set(Blockly.Blocks, ColourBlendBlock.type_name, new ColourBlendBlock());
|
---|
| 44 | Script.Set(Blockly.Blocks, ListsCreateEmptyBlock.type_name, new ListsCreateEmptyBlock());
|
---|
| 45 | Script.Set(Blockly.Blocks, ListsCreateWithBlock.type_name, new ListsCreateWithBlock());
|
---|
| 46 | Script.Set(Blockly.Blocks, ListsCreateWithContainerBlock.type_name, new ListsCreateWithContainerBlock());
|
---|
| 47 | Script.Set(Blockly.Blocks, ListsCreateWithItemBlock.type_name, new ListsCreateWithItemBlock());
|
---|
| 48 | Script.Set(Blockly.Blocks, ListsRepeatBlock.type_name, new ListsRepeatBlock());
|
---|
| 49 | Script.Set(Blockly.Blocks, ListsLengthBlock.type_name, new ListsLengthBlock());
|
---|
| 50 | Script.Set(Blockly.Blocks, ListsIsEmptyBlock.type_name, new ListsIsEmptyBlock());
|
---|
| 51 | Script.Set(Blockly.Blocks, ListsIndexOfBlock.type_name, new ListsIndexOfBlock());
|
---|
| 52 | Script.Set(Blockly.Blocks, ListsGetIndexBlock.type_name, new ListsGetIndexBlock());
|
---|
| 53 | Script.Set(Blockly.Blocks, ListsSetIndexBlock.type_name, new ListsSetIndexBlock());
|
---|
| 54 | Script.Set(Blockly.Blocks, ListsGetSublistBlock.type_name, new ListsGetSublistBlock());
|
---|
| 55 | Script.Set(Blockly.Blocks, ListsSortBlock.type_name, new ListsSortBlock());
|
---|
| 56 | Script.Set(Blockly.Blocks, ListsSplitBlock.type_name, new ListsSplitBlock());
|
---|
| 57 | Script.Set(Blockly.Blocks, ControlsIfBlock.type_name, new ControlsIfBlock());
|
---|
| 58 | Script.Set(Blockly.Blocks, ControlsIfIfBlock.type_name, new ControlsIfIfBlock());
|
---|
| 59 | Script.Set(Blockly.Blocks, ControlsIfElseIfBlock.type_name, new ControlsIfElseIfBlock());
|
---|
| 60 | Script.Set(Blockly.Blocks, ControlsIfElseBlock.type_name, new ControlsIfElseBlock());
|
---|
| 61 | Script.Set(Blockly.Blocks, SwitchCaseNumberBlock.type_name, new SwitchCaseNumberBlock());
|
---|
| 62 | Script.Set(Blockly.Blocks, SwitchCaseNumberContainerBlock.type_name, new SwitchCaseNumberContainerBlock());
|
---|
| 63 | Script.Set(Blockly.Blocks, SwitchCaseNumberConstBlock.type_name, new SwitchCaseNumberConstBlock());
|
---|
| 64 | Script.Set(Blockly.Blocks, SwitchCaseNumberRangeBlock.type_name, new SwitchCaseNumberRangeBlock());
|
---|
| 65 | Script.Set(Blockly.Blocks, SwitchCaseNumberDefaultBlock.type_name, new SwitchCaseNumberDefaultBlock());
|
---|
| 66 | Script.Set(Blockly.Blocks, SwitchCaseTextBlock.type_name, new SwitchCaseTextBlock());
|
---|
| 67 | Script.Set(Blockly.Blocks, SwitchCaseTextContainerBlock.type_name, new SwitchCaseTextContainerBlock());
|
---|
| 68 | Script.Set(Blockly.Blocks, SwitchCaseTextConstBlock.type_name, new SwitchCaseTextConstBlock());
|
---|
| 69 | Script.Set(Blockly.Blocks, SwitchCaseTextRangeBlock.type_name, new SwitchCaseTextRangeBlock());
|
---|
| 70 | Script.Set(Blockly.Blocks, SwitchCaseTextDefaultBlock.type_name, new SwitchCaseTextDefaultBlock());
|
---|
| 71 | Script.Set(Blockly.Blocks, LogicCompareBlock.type_name, new LogicCompareBlock());
|
---|
| 72 | Script.Set(Blockly.Blocks, LogicOperationBlock.type_name, new LogicOperationBlock());
|
---|
| 73 | Script.Set(Blockly.Blocks, LogicNegateBlock.type_name, new LogicNegateBlock());
|
---|
| 74 | Script.Set(Blockly.Blocks, LogicBooleanBlock.type_name, new LogicBooleanBlock());
|
---|
| 75 | Script.Set(Blockly.Blocks, LogicNullBlock.type_name, new LogicNullBlock());
|
---|
| 76 | Script.Set(Blockly.Blocks, LogicTernaryBlock.type_name, new LogicTernaryBlock());
|
---|
| 77 | Script.Set(Blockly.Blocks, ControlsRepeatExtBlock.type_name, new ControlsRepeatExtBlock());
|
---|
| 78 | Script.Set(Blockly.Blocks, ControlsRepeatBlock.type_name, new ControlsRepeatBlock());
|
---|
| 79 | Script.Set(Blockly.Blocks, ControlsWhileUntilBlock.type_name, new ControlsWhileUntilBlock());
|
---|
| 80 | Script.Set(Blockly.Blocks, ControlsForBlock.type_name, new ControlsForBlock());
|
---|
| 81 | Script.Set(Blockly.Blocks, ControlsForEachBlock.type_name, new ControlsForEachBlock());
|
---|
| 82 | Script.Set(Blockly.Blocks, ControlsFlowStatementsBlock.type_name, new ControlsFlowStatementsBlock());
|
---|
| 83 | Script.Set(Blockly.Blocks, MathNumberBlock.type_name, new MathNumberBlock());
|
---|
| 84 | Script.Set(Blockly.Blocks, MathArithmeticBlock.type_name, new MathArithmeticBlock());
|
---|
| 85 | Script.Set(Blockly.Blocks, MathSingleBlock.type_name, new MathSingleBlock());
|
---|
| 86 | Script.Set(Blockly.Blocks, MathTrigBlock.type_name, new MathTrigBlock());
|
---|
| 87 | Script.Set(Blockly.Blocks, MathConstantBlock.type_name, new MathConstantBlock());
|
---|
| 88 | Script.Set(Blockly.Blocks, MathNumberPropertyBlock.type_name, new MathNumberPropertyBlock());
|
---|
| 89 | Script.Set(Blockly.Blocks, MathChangeBlock.type_name, new MathChangeBlock());
|
---|
| 90 | Script.Set(Blockly.Blocks, MathRoundBlock.type_name, new MathRoundBlock());
|
---|
| 91 | Script.Set(Blockly.Blocks, MathOnListBlock.type_name, new MathOnListBlock());
|
---|
| 92 | Script.Set(Blockly.Blocks, MathModuloBlock.type_name, new MathModuloBlock());
|
---|
| 93 | Script.Set(Blockly.Blocks, MathConstrainBlock.type_name, new MathConstrainBlock());
|
---|
| 94 | Script.Set(Blockly.Blocks, MathRandomIntBlock.type_name, new MathRandomIntBlock());
|
---|
| 95 | Script.Set(Blockly.Blocks, MathRandomFloatBlock.type_name, new MathRandomFloatBlock());
|
---|
| 96 | Script.Set(Blockly.Blocks, ProceduresDefnoreturnBlock.type_name, new ProceduresDefnoreturnBlock());
|
---|
| 97 | Script.Set(Blockly.Blocks, ProceduresDefreturnBlock.type_name, new ProceduresDefreturnBlock());
|
---|
| 98 | Script.Set(Blockly.Blocks, ProceduresMutatorcontainerBlock.type_name, new ProceduresMutatorcontainerBlock());
|
---|
| 99 | Script.Set(Blockly.Blocks, ProceduresMutatorargBlock.type_name, new ProceduresMutatorargBlock());
|
---|
| 100 | Script.Set(Blockly.Blocks, ProceduresCallnoreturnBlock.type_name, new ProceduresCallnoreturnBlock());
|
---|
| 101 | Script.Set(Blockly.Blocks, ProceduresCallreturnBlock.type_name, new ProceduresCallreturnBlock());
|
---|
| 102 | Script.Set(Blockly.Blocks, ProceduresIfreturnBlock.type_name, new ProceduresIfreturnBlock());
|
---|
| 103 | Script.Set(Blockly.Blocks, TextBlock.type_name, new TextBlock());
|
---|
| 104 | Script.Set(Blockly.Blocks, TextJoinBlock.type_name, new TextJoinBlock());
|
---|
| 105 | Script.Set(Blockly.Blocks, TextCreateJoinContainerBlock.type_name, new TextCreateJoinContainerBlock());
|
---|
| 106 | Script.Set(Blockly.Blocks, TextCreateJoinItemBlock.type_name, new TextCreateJoinItemBlock());
|
---|
| 107 | Script.Set(Blockly.Blocks, TextAppendBlock.type_name, new TextAppendBlock());
|
---|
| 108 | Script.Set(Blockly.Blocks, TextLengthBlock.type_name, new TextLengthBlock());
|
---|
| 109 | Script.Set(Blockly.Blocks, TextIsEmptyBlock.type_name, new TextIsEmptyBlock());
|
---|
| 110 | Script.Set(Blockly.Blocks, TextIndexOfBlock.type_name, new TextIndexOfBlock());
|
---|
| 111 | Script.Set(Blockly.Blocks, TextCharAtBlock.type_name, new TextCharAtBlock());
|
---|
| 112 | Script.Set(Blockly.Blocks, TextGetSubstringBlock.type_name, new TextGetSubstringBlock());
|
---|
| 113 | Script.Set(Blockly.Blocks, TextChangeCaseBlock.type_name, new TextChangeCaseBlock());
|
---|
| 114 | Script.Set(Blockly.Blocks, TextTrimBlock.type_name, new TextTrimBlock());
|
---|
| 115 | Script.Set(Blockly.Blocks, TextPrintBlock.type_name, new TextPrintBlock());
|
---|
| 116 | Script.Set(Blockly.Blocks, TextPromptExtBlock.type_name, new TextPromptExtBlock());
|
---|
| 117 | Script.Set(Blockly.Blocks, TextPromptBlock.type_name, new TextPromptBlock());
|
---|
| 118 | Script.Set(Blockly.Blocks, VariablesGetBlock.type_name, new VariablesGetBlock());
|
---|
| 119 | Script.Set(Blockly.Blocks, VariablesSetBlock.type_name, new VariablesSetBlock());
|
---|
| 120 | Script.Set(Blockly.Blocks, ENodeInitializeBlock.type_name, new ENodeInitializeBlock());
|
---|
| 121 | Script.Set(Blockly.Blocks, EObjectInitializeBlock.type_name, new EObjectInitializeBlock());
|
---|
| 122 | Script.Set(Blockly.Blocks, EPropertyFixLenBlock.type_name, new EPropertyFixLenBlock());
|
---|
| 123 | Script.Set(Blockly.Blocks, EPropertyFixLenContainerBlock.type_name, new EPropertyFixLenContainerBlock());
|
---|
| 124 | Script.Set(Blockly.Blocks, EPropertyFixLenConstBlock.type_name, new EPropertyFixLenConstBlock());
|
---|
| 125 | Script.Set(Blockly.Blocks, EPropertyFixLenRangeBlock.type_name, new EPropertyFixLenRangeBlock());
|
---|
| 126 | Script.Set(Blockly.Blocks, EPropertyFixLenDefaultBlock.type_name, new EPropertyFixLenDefaultBlock());
|
---|
| 127 | Script.Set(Blockly.Blocks, EPropertyVarLenBlock.type_name, new EPropertyVarLenBlock());
|
---|
| 128 | Script.Set(Blockly.Blocks, EcnlPropertyAttributeBlock.type_name, new EcnlPropertyAttributeBlock());
|
---|
| 129 | Script.Set(Blockly.Blocks, EcnlServiceCodeBlock.type_name, new EcnlServiceCodeBlock());
|
---|
| 130 | Script.Set(Blockly.Blocks, EcnlNodeIDBlock.type_name, new EcnlNodeIDBlock());
|
---|
| 131 | Script.Set(Blockly.Blocks, EcnlSaveReceivedPropertyBlock.type_name, new EcnlSaveReceivedPropertyBlock());
|
---|
| 132 | Script.Set(Blockly.Blocks, EcnlGetSavedPropertyBlock.type_name, new EcnlGetSavedPropertyBlock());
|
---|
| 133 | Script.Set(Blockly.Blocks, EcnlGetPropertyInfoBlock.type_name, new EcnlGetPropertyInfoBlock());
|
---|
| 134 | Script.Set(Blockly.Blocks, EcnlSetAnnounceRequestBlock.type_name, new EcnlSetAnnounceRequestBlock());
|
---|
| 135 | Script.Set(Blockly.Blocks, EcnlDataToNumberBlock.type_name, new EcnlDataToNumberBlock());
|
---|
| 136 | Script.Set(Blockly.Blocks, EcnlNumberToDataBlock.type_name, new EcnlNumberToDataBlock());
|
---|
| 137 | Script.Set(Blockly.Blocks, EcnlNoOpBlock.type_name, new EcnlNoOpBlock());
|
---|
| 138 | Script.Set(Blockly.Blocks, EcnlReceivedDataBlock.type_name, new EcnlReceivedDataBlock());
|
---|
| 139 | Script.Set(Blockly.Blocks, EcnlReceivedDataSizeBlock.type_name, new EcnlReceivedDataSizeBlock());
|
---|
| 140 | Script.Set(Blockly.Blocks, DataJoinBlock.type_name, new DataJoinBlock());
|
---|
| 141 | Script.Set(Blockly.Blocks, DataCreateJoinContainerBlock.type_name, new DataCreateJoinContainerBlock());
|
---|
| 142 | Script.Set(Blockly.Blocks, DataCreateJoinItemBlock.type_name, new DataCreateJoinItemBlock());
|
---|
| 143 | Script.Set(Blockly.Blocks, CreateEsvGetBlock.type_name, new CreateEsvGetBlock());
|
---|
| 144 | Script.Set(Blockly.Blocks, CreateEsvSetBlock.type_name, new CreateEsvSetBlock());
|
---|
| 145 | Script.Set(Blockly.Blocks, EsvAddEdtBlock.type_name, new EsvAddEdtBlock());
|
---|
| 146 | Script.Set(Blockly.Blocks, EsvAddEpcBlock.type_name, new EsvAddEpcBlock());
|
---|
| 147 | Script.Set(Blockly.Blocks, SendEsvBlock.type_name, new SendEsvBlock());
|
---|
| 148 | Script.Set(Blockly.Blocks, ReleaseEsvBlock.type_name, new ReleaseEsvBlock());
|
---|
| 149 | Script.Set(Blockly.Blocks, NotifyInitialEsvBlock.type_name, new NotifyInitialEsvBlock());
|
---|
| 150 | Script.Set(Blockly.Blocks, EsvGetEsvBlock.type_name, new EsvGetEsvBlock());
|
---|
| 151 | Script.Set(Blockly.Blocks, EsvIterateBlock.type_name, new EsvIterateBlock());
|
---|
| 152 | Script.Set(Blockly.Blocks, EsvIteratorBlock.type_name, new EsvIteratorBlock());
|
---|
| 153 | Script.Set(Blockly.Blocks, SvctaskSetTimerBlock.type_name, new SvctaskSetTimerBlock());
|
---|
| 154 | Script.Set(Blockly.Blocks, SvctaskTimerBlock.type_name, new SvctaskTimerBlock());
|
---|
| 155 | Script.Set(Blockly.Blocks, SvctaskProgressBlock.type_name, new SvctaskProgressBlock());
|
---|
| 156 | Script.Set(Blockly.Blocks, SvctaskRecvMsgBlock.type_name, new SvctaskRecvMsgBlock());
|
---|
| 157 | Script.Set(Blockly.Blocks, SvctaskCallTimeoutBlock.type_name, new SvctaskCallTimeoutBlock());
|
---|
| 158 | Script.Set(Blockly.Blocks, SvctaskIsMatchBlock.type_name, new SvctaskIsMatchBlock());
|
---|
| 159 | Script.Set(Blockly.Blocks, CallBlock.type_name, new CallBlock());
|
---|
| 160 | Script.Set(Blockly.Blocks, PinModeBlock.type_name, new PinModeBlock());
|
---|
| 161 | Script.Set(Blockly.Blocks, DigitalWriteBlock.type_name, new DigitalWriteBlock());
|
---|
| 162 | Script.Set(Blockly.Blocks, DigitalReadBlock.type_name, new DigitalReadBlock());
|
---|
| 163 | Script.Set(Blockly.Blocks, AnalogReadBlock.type_name, new AnalogReadBlock());
|
---|
| 164 | Script.Set(Blockly.Blocks, PwmBlock.type_name, new PwmBlock());
|
---|
| 165 | Script.Set(Blockly.Blocks, PwmValueBlock.type_name, new PwmValueBlock());
|
---|
| 166 | Script.Set(Blockly.Blocks, AnalogReferenceBlock.type_name, new AnalogReferenceBlock());
|
---|
| 167 | Script.Set(Blockly.Blocks, InitDacBlock.type_name, new InitDacBlock());
|
---|
| 168 | Script.Set(Blockly.Blocks, AnalogDacBlock.type_name, new AnalogDacBlock());
|
---|
| 169 | Script.Set(Blockly.Blocks, DacValueBlock.type_name, new DacValueBlock());
|
---|
| 170 | Script.Set(Blockly.Blocks, DelayBlock.type_name, new DelayBlock());
|
---|
| 171 | Script.Set(Blockly.Blocks, MillisBlock.type_name, new MillisBlock());
|
---|
| 172 | Script.Set(Blockly.Blocks, MicrosBlock.type_name, new MicrosBlock());
|
---|
| 173 | Script.Set(Blockly.Blocks, LedBlock.type_name, new LedBlock());
|
---|
| 174 | Script.Set(Blockly.Blocks, BitBlock.type_name, new BitBlock());
|
---|
| 175 | Script.Set(Blockly.Blocks, ToneBlock.type_name, new ToneBlock());
|
---|
| 176 | Script.Set(Blockly.Blocks, ToneValueBlock.type_name, new ToneValueBlock());
|
---|
| 177 | Script.Set(Blockly.Blocks, NoToneBlock.type_name, new NoToneBlock());
|
---|
| 178 | Script.Set(Blockly.Blocks, RandomSeedBlock.type_name, new RandomSeedBlock());
|
---|
| 179 | Script.Set(Blockly.Blocks, RandomBlock.type_name, new RandomBlock());
|
---|
| 180 | Script.Set(Blockly.Blocks, I2cNewBlock.type_name, new I2cNewBlock());
|
---|
| 181 | Script.Set(Blockly.Blocks, I2cWriteBlock.type_name, new I2cWriteBlock());
|
---|
| 182 | Script.Set(Blockly.Blocks, I2cReadBlock.type_name, new I2cReadBlock());
|
---|
| 183 | Script.Set(Blockly.Blocks, I2cBeginBlock.type_name, new I2cBeginBlock());
|
---|
| 184 | Script.Set(Blockly.Blocks, I2cLwriteBlock.type_name, new I2cLwriteBlock());
|
---|
| 185 | Script.Set(Blockly.Blocks, I2cEndBlock.type_name, new I2cEndBlock());
|
---|
| 186 | Script.Set(Blockly.Blocks, I2cRequestBlock.type_name, new I2cRequestBlock());
|
---|
| 187 | Script.Set(Blockly.Blocks, I2cLreadBlock.type_name, new I2cLreadBlock());
|
---|
| 188 | Script.Set(Blockly.Blocks, I2cAvailableBlock.type_name, new I2cAvailableBlock());
|
---|
| 189 | Script.Set(Blockly.Blocks, I2cFrequencyBlock.type_name, new I2cFrequencyBlock());
|
---|
| 190 | Script.Set(Blockly.Blocks, MemFileOpenBlock.type_name, new MemFileOpenBlock());
|
---|
| 191 | Script.Set(Blockly.Blocks, MemFileCloseBlock.type_name, new MemFileCloseBlock());
|
---|
| 192 | Script.Set(Blockly.Blocks, MemFileReadBlock.type_name, new MemFileReadBlock());
|
---|
| 193 | Script.Set(Blockly.Blocks, MemFileWriteBlock.type_name, new MemFileWriteBlock());
|
---|
| 194 | Script.Set(Blockly.Blocks, MemFileSeekBlock.type_name, new MemFileSeekBlock());
|
---|
| 195 | Script.Set(Blockly.Blocks, MemFileCpBlock.type_name, new MemFileCpBlock());
|
---|
| 196 | Script.Set(Blockly.Blocks, MemFileRmBlock.type_name, new MemFileRmBlock());
|
---|
| 197 | Script.Set(Blockly.Blocks, RtcYearBlock.type_name, new RtcYearBlock());
|
---|
| 198 | Script.Set(Blockly.Blocks, RtcMonthBlock.type_name, new RtcMonthBlock());
|
---|
| 199 | Script.Set(Blockly.Blocks, RtcDayBlock.type_name, new RtcDayBlock());
|
---|
| 200 | Script.Set(Blockly.Blocks, RtcHourBlock.type_name, new RtcHourBlock());
|
---|
| 201 | Script.Set(Blockly.Blocks, RtcMinuteBlock.type_name, new RtcMinuteBlock());
|
---|
| 202 | Script.Set(Blockly.Blocks, RtcSecondBlock.type_name, new RtcSecondBlock());
|
---|
| 203 | Script.Set(Blockly.Blocks, RtcWeekDayBlock.type_name, new RtcWeekDayBlock());
|
---|
| 204 | Script.Set(Blockly.Blocks, RtcDateTimeBlock.type_name, new RtcDateTimeBlock());
|
---|
| 205 | Script.Set(Blockly.Blocks, RtcDateTimeItemBlock.type_name, new RtcDateTimeItemBlock());
|
---|
| 206 | Script.Set(Blockly.Blocks, RtcSetDateTimeItemBlock.type_name, new RtcSetDateTimeItemBlock());
|
---|
| 207 | Script.Set(Blockly.Blocks, RtcGetTimeBlock.type_name, new RtcGetTimeBlock());
|
---|
| 208 | Script.Set(Blockly.Blocks, RtcSettimeBlock.type_name, new RtcSettimeBlock());
|
---|
| 209 | Script.Set(Blockly.Blocks, RtcDeinitBlock.type_name, new RtcDeinitBlock());
|
---|
| 210 | Script.Set(Blockly.Blocks, RtcInitBlock.type_name, new RtcInitBlock());
|
---|
| 211 | Script.Set(Blockly.Blocks, SdExistsBlock.type_name, new SdExistsBlock());
|
---|
| 212 | Script.Set(Blockly.Blocks, SdMkdirBlock.type_name, new SdMkdirBlock());
|
---|
| 213 | Script.Set(Blockly.Blocks, SdRemoveBlock.type_name, new SdRemoveBlock());
|
---|
| 214 | Script.Set(Blockly.Blocks, SdCopyBlock.type_name, new SdCopyBlock());
|
---|
| 215 | Script.Set(Blockly.Blocks, SdRmdirBlock.type_name, new SdRmdirBlock());
|
---|
| 216 | Script.Set(Blockly.Blocks, SdOpenBlock.type_name, new SdOpenBlock());
|
---|
| 217 | Script.Set(Blockly.Blocks, SdCloseBlock.type_name, new SdCloseBlock());
|
---|
| 218 | Script.Set(Blockly.Blocks, SdReadBlock.type_name, new SdReadBlock());
|
---|
| 219 | Script.Set(Blockly.Blocks, SdSeekBlock.type_name, new SdSeekBlock());
|
---|
| 220 | Script.Set(Blockly.Blocks, SdWriteBlock.type_name, new SdWriteBlock());
|
---|
| 221 | Script.Set(Blockly.Blocks, SdFlushBlock.type_name, new SdFlushBlock());
|
---|
| 222 | Script.Set(Blockly.Blocks, SdSizeBlock.type_name, new SdSizeBlock());
|
---|
| 223 | Script.Set(Blockly.Blocks, SdPositionBlock.type_name, new SdPositionBlock());
|
---|
| 224 | Script.Set(Blockly.Blocks, BpsValueBlock.type_name, new BpsValueBlock());
|
---|
| 225 | Script.Set(Blockly.Blocks, SerialNewBlock.type_name, new SerialNewBlock());
|
---|
| 226 | Script.Set(Blockly.Blocks, SerialBpsBlock.type_name, new SerialBpsBlock());
|
---|
| 227 | Script.Set(Blockly.Blocks, SerialPrintBlock.type_name, new SerialPrintBlock());
|
---|
| 228 | Script.Set(Blockly.Blocks, SerialPrintlnBlock.type_name, new SerialPrintlnBlock());
|
---|
| 229 | Script.Set(Blockly.Blocks, SerialAvailableBlock.type_name, new SerialAvailableBlock());
|
---|
| 230 | Script.Set(Blockly.Blocks, SerialReadBlock.type_name, new SerialReadBlock());
|
---|
| 231 | Script.Set(Blockly.Blocks, SerialWriteBlock.type_name, new SerialWriteBlock());
|
---|
| 232 | Script.Set(Blockly.Blocks, SerialFlashBlock.type_name, new SerialFlashBlock());
|
---|
| 233 | Script.Set(Blockly.Blocks, ServoAttachBlock.type_name, new ServoAttachBlock());
|
---|
| 234 | Script.Set(Blockly.Blocks, ServoWriteBlock.type_name, new ServoWriteBlock());
|
---|
| 235 | Script.Set(Blockly.Blocks, ServoAngleBlock.type_name, new ServoAngleBlock());
|
---|
| 236 | Script.Set(Blockly.Blocks, ServoUsBlock.type_name, new ServoUsBlock());
|
---|
| 237 | Script.Set(Blockly.Blocks, ServoUsValueBlock.type_name, new ServoUsValueBlock());
|
---|
| 238 | Script.Set(Blockly.Blocks, ServoReadBlock.type_name, new ServoReadBlock());
|
---|
| 239 | Script.Set(Blockly.Blocks, ServoAttachedBlock.type_name, new ServoAttachedBlock());
|
---|
| 240 | Script.Set(Blockly.Blocks, ServoDetachBlock.type_name, new ServoDetachBlock());
|
---|
| 241 | Script.Set(Blockly.Blocks, SystemExitBlock.type_name, new SystemExitBlock());
|
---|
| 242 | Script.Set(Blockly.Blocks, SystemSetRunBlock.type_name, new SystemSetRunBlock());
|
---|
| 243 | Script.Set(Blockly.Blocks, SystemVersionBlock.type_name, new SystemVersionBlock());
|
---|
| 244 | Script.Set(Blockly.Blocks, SystemPushBlock.type_name, new SystemPushBlock());
|
---|
| 245 | Script.Set(Blockly.Blocks, SystemPopBlock.type_name, new SystemPopBlock());
|
---|
| 246 | Script.Set(Blockly.Blocks, SystemFileLoadBlock.type_name, new SystemFileLoadBlock());
|
---|
| 247 | Script.Set(Blockly.Blocks, SystemResetBlock.type_name, new SystemResetBlock());
|
---|
| 248 | Script.Set(Blockly.Blocks, SystemUseSdBlock.type_name, new SystemUseSdBlock());
|
---|
| 249 | Script.Set(Blockly.Blocks, SystemUseWifiBlock.type_name, new SystemUseWifiBlock());
|
---|
| 250 | Script.Set(Blockly.Blocks, SystemGetMrbPathBlock.type_name, new SystemGetMrbPathBlock());
|
---|
| 251 | Script.Set(Blockly.Blocks, HexadecimalBlock.type_name, new HexadecimalBlock());
|
---|
| 252 | Blockly.Procedures = new Procedures();
|
---|
| 253 | Blockly.Variables = new Variables();
|
---|
| 254 | Blockly.Names = new Names("");
|
---|
| 255 | }
|
---|
| 256 |
|
---|
| 257 | public BlocklyView(string identifier)
|
---|
| 258 | {
|
---|
| 259 | Identifier = identifier;
|
---|
| 260 |
|
---|
| 261 | FlyoutCategoryHandlers.Add(Blockly.Procedures.NAME_TYPE, Blockly.Procedures.flyoutCategory);
|
---|
| 262 | FlyoutCategoryHandlers.Add(Blockly.Variables.NAME_TYPE, Blockly.Variables.flyoutCategory);
|
---|
| 263 | }
|
---|
| 264 |
|
---|
| 265 | public Workspace Init()
|
---|
| 266 | {
|
---|
| 267 | var tab = jQuery.Select("#block-tab-right-pane");
|
---|
| 268 | // <div dir="LTR" id="blockly-div"></div>
|
---|
| 269 | var div = new jQuery("<div>");
|
---|
| 270 | div.Attr("dir", "LTR");
|
---|
| 271 | div.Attr("class", "blockly-div");
|
---|
| 272 | _IdNo = No++;
|
---|
| 273 | _WorkspaceElementId = "blockly-div" + _IdNo;
|
---|
| 274 | div.Attr("id", _WorkspaceElementId);
|
---|
| 275 | div.Attr("style", "z-index: " + _IdNo);
|
---|
| 276 | tab.Append(div);
|
---|
| 277 |
|
---|
| 278 | Blockly.HSV_SATURATION = 1.0;
|
---|
| 279 | Blockly.HSV_VALUE = 0.8;
|
---|
| 280 | _Workspace = Blockly.inject(_WorkspaceElementId, new {
|
---|
| 281 | toolbox = Document.GetElementById("toolbox"),
|
---|
| 282 | collapse = true,
|
---|
| 283 | comments = true,
|
---|
| 284 | disable = true,
|
---|
| 285 | maxBlocks = Script.Infinity,
|
---|
| 286 | trashcan = true,
|
---|
| 287 | horizontalLayout = false,
|
---|
| 288 | toolboxPosition = "start",
|
---|
| 289 | css = true,
|
---|
| 290 | rtl = false,
|
---|
| 291 | scrollbars = true,
|
---|
| 292 | sounds = false,
|
---|
| 293 | oneBasedIndex = false,
|
---|
| 294 | zoom = new {
|
---|
| 295 | controls = true,
|
---|
| 296 | wheel = true,
|
---|
| 297 | startScale = 0.8,
|
---|
| 298 | maxcale = 3,
|
---|
| 299 | minScale = 0.3
|
---|
| 300 | }
|
---|
| 301 | });
|
---|
| 302 |
|
---|
| 303 | if (No != 2)
|
---|
| 304 | Hide();
|
---|
| 305 | else
|
---|
| 306 | Show();
|
---|
| 307 |
|
---|
| 308 | Script.Set(Script.Get(Script.Get(_Workspace, "toolbox_"), "flyout_"),
|
---|
| 309 | "flyoutCategory",
|
---|
| 310 | new Func<Union<string, Element[]>, Workspace, Element[]>(FlyoutCategory));
|
---|
| 311 |
|
---|
| 312 | _Workspace.addChangeListener(Workspace_Changed);
|
---|
| 313 |
|
---|
| 314 | return _Workspace;
|
---|
| 315 | }
|
---|
| 316 |
|
---|
| 317 | internal void Dispose()
|
---|
| 318 | {
|
---|
| 319 | jQuery.Select("#" + _WorkspaceElementId).Remove();
|
---|
| 320 | _Workspace.clear();
|
---|
| 321 | _Workspace.dispose();
|
---|
| 322 | }
|
---|
| 323 |
|
---|
| 324 | internal void Show()
|
---|
| 325 | {
|
---|
| 326 | var div = jQuery.Select("#" + _WorkspaceElementId);
|
---|
| 327 | div.Attr("style", "z-index: " + (_IdNo + 100));
|
---|
| 328 |
|
---|
| 329 | Blockly.mainWorkspace = _Workspace;
|
---|
| 330 | }
|
---|
| 331 |
|
---|
| 332 | internal void Hide()
|
---|
| 333 | {
|
---|
| 334 | var div = jQuery.Select("#" + _WorkspaceElementId);
|
---|
| 335 | div.Attr("style", "z-index: " + _IdNo);
|
---|
| 336 | }
|
---|
| 337 |
|
---|
| 338 | private void Workspace_Changed(Abstract e)
|
---|
| 339 | {
|
---|
| 340 | Changed = true;
|
---|
| 341 |
|
---|
| 342 | switch (e.type) {
|
---|
| 343 | case WebMrbc.Events.CREATE:
|
---|
| 344 | Create cre = (Create)e;
|
---|
| 345 | BlockCreated?.Invoke(this, cre);
|
---|
| 346 | break;
|
---|
| 347 | case WebMrbc.Events.DELETE:
|
---|
| 348 | Delete del = (Delete)e;
|
---|
| 349 | BlockDeleted?.Invoke(this, del);
|
---|
| 350 | break;
|
---|
| 351 | case WebMrbc.Events.CHANGE:
|
---|
| 352 | Change chg = (Change)e;
|
---|
| 353 | BlockChanged?.Invoke(this, chg);
|
---|
| 354 | break;
|
---|
| 355 | case WebMrbc.Events.MOVE:
|
---|
| 356 | Move mov = (Move)e;
|
---|
| 357 | BlockMoveed?.Invoke(this, mov);
|
---|
| 358 | break;
|
---|
| 359 | case WebMrbc.Events.UI:
|
---|
| 360 | Ui ui = (Ui)e;
|
---|
| 361 | UiEvent?.Invoke(this, ui);
|
---|
| 362 | break;
|
---|
| 363 | }
|
---|
| 364 | }
|
---|
| 365 |
|
---|
| 366 | internal void ReloadToolbox(IClassWorkspace workspace)
|
---|
| 367 | {
|
---|
| 368 | if (_Workspace != workspace.Workspace)
|
---|
| 369 | throw new Exception();
|
---|
| 370 |
|
---|
| 371 | Blockly.mainWorkspace = _Workspace;
|
---|
| 372 | Blockly.hideChaff();
|
---|
| 373 |
|
---|
| 374 | var toolbox = Document.CreateElement<HTMLElement>("xml");
|
---|
| 375 | toolbox.InnerHTML = Document.GetElementById("toolbox").InnerHTML;
|
---|
| 376 | workspace.ReloadToolbox(toolbox);
|
---|
| 377 |
|
---|
| 378 | _Workspace.updateToolbox(toolbox);
|
---|
| 379 | }
|
---|
| 380 |
|
---|
| 381 | public virtual Element[] FlyoutCategory(Union<string, Element[]> name, Workspace workspace)
|
---|
| 382 | {
|
---|
| 383 | if (!name.Is<string>())
|
---|
| 384 | return name.Cast<Element[]>();
|
---|
| 385 |
|
---|
| 386 | FlyoutCategoryHandler handler;
|
---|
| 387 | if (FlyoutCategoryHandlers.TryGetValue(name.Cast<string>(), out handler)) {
|
---|
| 388 | return handler(workspace);
|
---|
| 389 | }
|
---|
| 390 | return new Element[0];
|
---|
| 391 | }
|
---|
| 392 | }
|
---|
| 393 |
|
---|
| 394 | public delegate Element[] FlyoutCategoryHandler(Workspace workspace);
|
---|
| 395 | }
|
---|