Quellcode durchsuchen

Colour the background red on failures

Yentl Van Tendeloo vor 8 Jahren
Ursprung
Commit
a1efd1cbf8
2 geänderte Dateien mit 46 neuen und 38 gelöschten Zeilen
  1. 8 3
      integration/code/cbd_semantics.alc
  2. 38 35
      interface/CBD/main.py

+ 8 - 3
integration/code/cbd_semantics.alc

@@ -240,6 +240,10 @@ Void function execute_cbd(design_model : Element):
 	runtime_model = sanitize(runtime_model, old_runtime_model)
 	running = False
 	conforming = conformance_scd(design_model)
+	if (conforming == "OK"):
+		output("CONFORMANCE_OK")
+	else:
+		output("CONFORMANCE_FAIL")
 
 	schedule_init = create_schedule(runtime_model, read_attribute(runtime_model, "time", "start_time"))
 	schedule_run = create_schedule(runtime_model, -1)
@@ -260,7 +264,7 @@ Void function execute_cbd(design_model : Element):
 			if (conforming == "OK"):
 				running = True
 			else:
-				output("FAIL_CONFORMANCE " + conforming)
+				output("CONFORMANCE_FAIL " + conforming)
 
 		elif (cmd == "step"):
 			// Stepping should make a single step, but first need to pick the correct schedule to use
@@ -271,7 +275,7 @@ Void function execute_cbd(design_model : Element):
 					schedule = schedule_run
 				step_simulation(runtime_model, schedule)
 			else:
-				output("FAIL_CONFORMANCE " + conforming)
+				output("CONFORMANCE_FAIL " + conforming)
 
 		elif (cmd == "pause"):
 			// Pausing merely stops a running simulation
@@ -327,9 +331,10 @@ Void function execute_cbd(design_model : Element):
 				schedule_init = create_schedule(runtime_model, read_attribute(runtime_model, "time", "start_time"))
 				schedule_run = create_schedule(runtime_model, -1)
 				old_runtime_model = runtime_model
+				output("CONFORMANCE_OK")
 			else:
 				// Not conforming, so stop simulation and block for input (preferably a modify to make everything consistent again)
 				running = False
-				output("FAIL_CONFORMANCE " + conforming)
+				output("CONFORMANCE_FAIL " + conforming)
 		else:
 			log("Did not understand command: " + cmd)

+ 38 - 35
interface/CBD/main.py

@@ -96,6 +96,10 @@ def poll(address):
         elif (returnvalue.startswith("SIM_END")):
             simulation.append(working_simulation)
             working_simulation = None
+        elif (returnvalue.startswith("CONFORMANCE_OK")):
+            root.configure(background="grey")
+        elif (returnvalue.startswith("CONFORMANCE_FAIL")):
+            root.configure(background="red")
         else:
             print("Error: got unknown result: " + returnvalue)
 
@@ -174,43 +178,42 @@ class InterfaceCore():
         self.mode = mode
 
     def clicked(self, event):
-        if self.mode not in ["AdditionBlock", "NegatorBlock", "ConstantBlock", "MultiplyBlock", "ConstantBlock", "InverseBlock", "DelayBlock"]:
+        if self.find((event.x, event.y)):
+            # Something already there, so don't add, but modify
+            lname = self.find((event.x, event.y))
+
+            attrs = self.mv.read_available_attributes(lname)
+            print("Managing " + str(attrs))
+
+            if not attrs:
+                print("No attrs to manage!")
+
+            for attr, t in attrs:
+                print("Reading data from " + str(attr))
+                old_value = self.mv.read_attribute(lname, attr)
+                if old_value == "None":
+                    old_value = None
+
+                new_value = tkSimpleDialog.askstring("Attribute modification", attr, initialvalue=old_value)
+                if t == "Float":
+                    new_value = float(new_value)
+                else:
+                    print("Got unknown type: " + str(t))
+                self.mv.set_attribute(lname, attr, new_value)
+
+        elif self.mode not in ["AdditionBlock", "NegatorBlock", "ConstantBlock", "MultiplyBlock", "ConstantBlock", "InverseBlock", "DelayBlock"]:
             print("Cannot create something not guaranteed to be block type!")
         else:
-            if self.find((event.x, event.y)):
-                # Something already there, so don't add, but modify
-                lname = self.find((event.x, event.y))
-
-                attrs = self.mv.read_available_attributes(lname)
-                print("Managing " + str(attrs))
-
-                if not attrs:
-                    print("No attrs to manage!")
-
-                for attr, t in attrs:
-                    print("Reading data from " + str(attr))
-                    old_value = self.mv.read_attribute(lname, attr)
-                    if old_value == "None":
-                        old_value = None
-
-                    new_value = tkSimpleDialog.askstring("Attribute modification", attr, initialvalue=old_value)
-                    if t == "Float":
-                        new_value = float(new_value)
-                    else:
-                        print("Got unknown type: " + str(t))
-                    self.mv.set_attribute(lname, attr, new_value)
-
-            else:
-                global name
-                x = event.x
-                y = event.y
-                self.mv.instantiate_block(str(name), self.mode)
-                r = canvas.create_rectangle(lower(x), lower(y), upper(x), upper(y), fill="white")
-                t = canvas.create_text(avg(lower(x), upper(x)), avg(lower(y), upper(y)), text=self.mode, fill="black")
-                b = (lower(x), lower(y), upper(x), upper(y), str(name))
-                self.drawn.add(b)
-                self.refs[str(name)] = [r, t]
-                name += 1
+            global name
+            x = event.x
+            y = event.y
+            self.mv.instantiate_block(str(name), self.mode)
+            r = canvas.create_rectangle(lower(x), lower(y), upper(x), upper(y), fill="white")
+            t = canvas.create_text(avg(lower(x), upper(x)), avg(lower(y), upper(y)), text=self.mode, fill="black")
+            b = (lower(x), lower(y), upper(x), upper(y), str(name))
+            self.drawn.add(b)
+            self.refs[str(name)] = [r, t]
+            name += 1
 
     def find(self, location):
         x, y = location