X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FLogicUICanvas.java;h=9675167cff0a7dae7eceeacc19a83cef969d272d;hb=9f4b106057a7b291aa880620dc80faa9cb7fc8f3;hp=5fd58c137986fca4398502364b4d1845f1a179ea;hpb=47c8f4396932bdee4e86e539f2cee29fd0f4415d;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java index 5fd58c13..9675167c 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java @@ -25,6 +25,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas; import net.mograsim.logic.core.types.Bit; import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.core.types.BitVectorFormatter; import net.mograsim.logic.model.model.LogicModel; import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; @@ -141,14 +142,24 @@ public class LogicUICanvas extends ZoomableCanvas throw new RuntimeException("No component selected"); ModelComponent target = componentsByItemIndex.get(componentIndex); String valueString = valueText.getText(); + String stateID = stateIDText.getText(); Object value; if (radioBit.getSelection()) value = Bit.parse(valueString); else if (radioBitVector.getSelection()) - value = BitVector.parse(valueString); - else + { + Object hls = target.getHighLevelState(stateID); + int width; + if (hls instanceof Bit) + width = 1; + else if (hls instanceof BitVector) + width = ((BitVector) hls).length(); + else + width = -1; + value = BitVectorFormatter.parseUserBitVector(valueString, width); + } else throw new RuntimeException("No value type selected"); - target.setHighLevelState(stateIDText.getText(), value); + target.setHighLevelState(stateID, value); output.setText("Success!"); } catch (Exception x)