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;
this.model = model;
+ Color background = Preferences.current().getColor("net.mograsim.logic.model.color.background");
+ if (background != null)
+ setBackground(background);
+
LogicUIRenderer renderer = new LogicUIRenderer(model);
- addZoomedRenderer(gc ->
- {
- Color background = Preferences.current().getColor("net.mograsim.logic.model.color.background");
- if (background != null)
- setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the canvas
- renderer.render(gc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom));
- });
+ addZoomedRenderer(gc -> renderer.render(gc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)));
model.setRedrawHandler(() ->
{
if (!isDisposed())
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)