1845 self.SelectedElement.RefreshModel() |
1857 self.SelectedElement.RefreshModel() |
1846 self.SelectedElement.SetSelected(True) |
1858 self.SelectedElement.SetSelected(True) |
1847 self.SelectedElement.HighlightPoint(pos) |
1859 self.SelectedElement.HighlightPoint(pos) |
1848 self.RefreshBuffer() |
1860 self.RefreshBuffer() |
1849 elif connector is None or self.SelectedElement.GetDragging(): |
1861 elif connector is None or self.SelectedElement.GetDragging(): |
1850 self.DrawingWire = False |
1862 start_connector = self.SelectedElement.GetStartConnected() |
1851 rect = self.SelectedElement.GetRedrawRect() |
1863 start_direction = start_connector.GetDirection() |
1852 wire = self.SelectedElement |
1864 |
1853 self.SelectedElement = self.SelectedElement.StartConnected.GetParentBlock() |
1865 items = [] |
1854 self.SelectedElement.SetSelected(True) |
1866 |
1855 rect.Union(self.SelectedElement.GetRedrawRect()) |
1867 if self.CurrentLanguage == "SFC" and start_direction == SOUTH: |
1856 wire.Delete() |
1868 items.extend([ |
1857 self.RefreshRect(self.GetScrolledRect(rect), False) |
1869 (_(u'Initial Step'), self.GetAddToWireMenuCallBack(self.AddNewStep, True)), |
|
1870 (_(u'Step'), self.GetAddToWireMenuCallBack(self.AddNewStep, False)), |
|
1871 (_(u'Transition'), self.GetAddToWireMenuCallBack(self.AddNewTransition, False)), |
|
1872 (_(u'Divergence'), self.GetAddToWireMenuCallBack(self.AddNewDivergence)), |
|
1873 (_(u'Jump'), self.GetAddToWireMenuCallBack(self.AddNewJump)), |
|
1874 ]) |
|
1875 |
|
1876 elif start_direction == EAST: |
|
1877 |
|
1878 if isinstance(start_connector.GetParentBlock(), SFC_Step): |
|
1879 items.append( |
|
1880 (_(u'Action Block'), self.GetAddToWireMenuCallBack(self.AddNewActionBlock)) |
|
1881 ) |
|
1882 else: |
|
1883 items.extend([ |
|
1884 (_(u'Block'), self.GetAddToWireMenuCallBack(self.AddNewBlock)), |
|
1885 (_(u'Variable'), self.GetAddToWireMenuCallBack(self.AddNewVariable, True)), |
|
1886 (_(u'Connection'), self.GetAddToWireMenuCallBack(self.AddNewConnection)), |
|
1887 ]) |
|
1888 |
|
1889 if self.CurrentLanguage != "FBD": |
|
1890 items.append( |
|
1891 (_(u'Contact'), self.GetAddToWireMenuCallBack(self.AddNewContact)) |
|
1892 ) |
|
1893 if self.CurrentLanguage == "LD": |
|
1894 items.extend([ |
|
1895 (_(u'Coil'), self.GetAddToWireMenuCallBack(self.AddNewCoil)), |
|
1896 (_(u'Power Rail'), self.GetAddToWireMenuCallBack(self.AddNewPowerRail)), |
|
1897 ]) |
|
1898 if self.CurrentLanguage == "SFC": |
|
1899 items.append( |
|
1900 (_(u'Transition'), self.GetAddToWireMenuCallBack(self.AddNewTransition, True)) |
|
1901 ) |
|
1902 |
|
1903 if len(items) > 0: |
|
1904 if self.Editor.HasCapture(): |
|
1905 self.Editor.ReleaseMouse() |
|
1906 |
|
1907 # Popup contextual menu |
|
1908 menu = wx.Menu() |
|
1909 self.AddMenuItems(menu, |
|
1910 [(wx.NewId(), wx.ITEM_NORMAL, text, '', callback) |
|
1911 for text, callback in items]) |
|
1912 self.PopupMenu(menu) |
|
1913 |
|
1914 self.SelectedElement.StartConnected.HighlightParentBlock(False) |
|
1915 if self.DrawingWire: |
|
1916 self.DrawingWire = False |
|
1917 rect = self.SelectedElement.GetRedrawRect() |
|
1918 wire = self.SelectedElement |
|
1919 self.SelectedElement = self.SelectedElement.StartConnected.GetParentBlock() |
|
1920 self.SelectedElement.SetSelected(True) |
|
1921 rect.Union(self.SelectedElement.GetRedrawRect()) |
|
1922 wire.Delete() |
|
1923 self.RefreshRect(self.GetScrolledRect(rect), False) |
|
1924 else: |
|
1925 self.SelectedElement.SetSelected(True) |
1858 else: |
1926 else: |
1859 if self.Debug: |
1927 if self.Debug: |
1860 Graphic_Element.OnLeftUp(self.SelectedElement, event, dc, self.Scaling) |
1928 Graphic_Element.OnLeftUp(self.SelectedElement, event, dc, self.Scaling) |
1861 else: |
1929 else: |
1862 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1930 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
2206 values.setdefault("name", "") |
2303 values.setdefault("name", "") |
2207 block = FBD_Block(self, values["type"], values["name"], id, |
2304 block = FBD_Block(self, values["type"], values["name"], id, |
2208 values["extension"], values["inputs"], |
2305 values["extension"], values["inputs"], |
2209 executionControl = values["executionControl"], |
2306 executionControl = values["executionControl"], |
2210 executionOrder = values["executionOrder"]) |
2307 executionOrder = values["executionOrder"]) |
2211 block.SetPosition(bbox.x, bbox.y) |
2308 connector = None |
2212 block.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
2309 for input_connector in block.GetConnectors()["inputs"]: |
2213 self.AddBlock(block) |
2310 if input_connector.IsCompatible( |
2214 self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None)) |
2311 wire.GetStartConnectedType()): |
2215 self.RefreshBlockModel(block) |
2312 connector = input_connector |
2216 self.RefreshBuffer() |
2313 break |
2217 self.RefreshScrollBars() |
2314 self.AddNewElement(block, bbox, wire, connector) |
2218 self.RefreshVisibleElements() |
|
2219 self.RefreshVariablePanel() |
|
2220 self.ParentWindow.RefreshPouInstanceVariablesPanel() |
|
2221 block.Refresh() |
|
2222 dialog.Destroy() |
2315 dialog.Destroy() |
2223 |
2316 |
2224 def AddNewVariable(self, bbox): |
2317 def AddNewVariable(self, bbox, exclude_input=False, wire=None): |
2225 dialog = FBDVariableDialog(self.ParentWindow, self.Controler, self.TagName) |
2318 dialog = FBDVariableDialog(self.ParentWindow, self.Controler, self.TagName, exclude_input) |
2226 dialog.SetPreviewFont(self.GetFont()) |
2319 dialog.SetPreviewFont(self.GetFont()) |
2227 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2320 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2228 if dialog.ShowModal() == wx.ID_OK: |
2321 if dialog.ShowModal() == wx.ID_OK: |
2229 id = self.GetNewId() |
2322 id = self.GetNewId() |
2230 values = dialog.GetValues() |
2323 values = dialog.GetValues() |
2231 variable = FBD_Variable(self, values["class"], values["expression"], values["var_type"], id) |
2324 variable = FBD_Variable(self, values["class"], values["expression"], values["var_type"], id) |
2232 variable.SetExecutionOrder(values["executionOrder"]) |
2325 variable.SetExecutionOrder(values["executionOrder"]) |
2233 variable.SetPosition(bbox.x, bbox.y) |
|
2234 variable.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
|
2235 self.AddBlock(variable) |
|
2236 self.Controler.AddEditedElementVariable(self.TagName, id, values["class"]) |
2326 self.Controler.AddEditedElementVariable(self.TagName, id, values["class"]) |
2237 self.RefreshVariableModel(variable) |
2327 self.AddNewElement(variable, bbox, wire) |
2238 self.RefreshBuffer() |
|
2239 self.RefreshScrollBars() |
|
2240 self.RefreshVisibleElements() |
|
2241 variable.Refresh() |
|
2242 dialog.Destroy() |
2328 dialog.Destroy() |
2243 |
2329 |
2244 def AddNewConnection(self, bbox): |
2330 def AddNewConnection(self, bbox, wire=None): |
2245 dialog = ConnectionDialog(self.ParentWindow, self.Controler, self.TagName) |
2331 if wire is not None: |
2246 dialog.SetPreviewFont(self.GetFont()) |
2332 values = { |
2247 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2333 "type": CONNECTOR, |
2248 if dialog.ShowModal() == wx.ID_OK: |
2334 "name": self.Controler.GenerateNewName( |
|
2335 self.TagName, None, "Connection%d", 0)} |
|
2336 else: |
|
2337 dialog = ConnectionDialog(self.ParentWindow, self.Controler, self.TagName) |
|
2338 dialog.SetPreviewFont(self.GetFont()) |
|
2339 dialog.SetMinElementSize((bbox.width, bbox.height)) |
|
2340 values = (dialog.GetValues() |
|
2341 if dialog.ShowModal() == wx.ID_OK |
|
2342 else None) |
|
2343 dialog.Destroy() |
|
2344 if values is not None: |
2249 id = self.GetNewId() |
2345 id = self.GetNewId() |
2250 values = dialog.GetValues() |
|
2251 connection = FBD_Connector(self, values["type"], values["name"], id) |
2346 connection = FBD_Connector(self, values["type"], values["name"], id) |
2252 connection.SetPosition(bbox.x, bbox.y) |
|
2253 connection.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
|
2254 self.AddBlock(connection) |
|
2255 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
2347 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
2256 self.RefreshConnectionModel(connection) |
2348 self.AddNewElement(connection, bbox, wire) |
2257 self.RefreshBuffer() |
2349 |
2258 self.RefreshScrollBars() |
|
2259 self.RefreshVisibleElements() |
|
2260 connection.Refresh() |
|
2261 dialog.Destroy() |
|
2262 |
|
2263 def AddNewComment(self, bbox): |
2350 def AddNewComment(self, bbox): |
2264 dialog = wx.TextEntryDialog(self.ParentWindow, |
2351 dialog = wx.TextEntryDialog(self.ParentWindow, |
2265 _("Edit comment"), |
2352 _("Edit comment"), |
2266 _("Please enter comment text"), |
2353 _("Please enter comment text"), |
2267 "", wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
2354 "", wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
2280 self.RefreshScrollBars() |
2367 self.RefreshScrollBars() |
2281 self.RefreshVisibleElements() |
2368 self.RefreshVisibleElements() |
2282 comment.Refresh() |
2369 comment.Refresh() |
2283 dialog.Destroy() |
2370 dialog.Destroy() |
2284 |
2371 |
2285 def AddNewContact(self, bbox): |
2372 def AddNewContact(self, bbox, wire=None): |
2286 dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "contact") |
2373 dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "contact") |
2287 dialog.SetPreviewFont(self.GetFont()) |
2374 dialog.SetPreviewFont(self.GetFont()) |
2288 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2375 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2289 if dialog.ShowModal() == wx.ID_OK: |
2376 if dialog.ShowModal() == wx.ID_OK: |
2290 id = self.GetNewId() |
2377 id = self.GetNewId() |
2291 values = dialog.GetValues() |
2378 values = dialog.GetValues() |
2292 contact = LD_Contact(self, values["modifier"], values["variable"], id) |
2379 contact = LD_Contact(self, values["modifier"], values["variable"], id) |
2293 contact.SetPosition(bbox.x, bbox.y) |
|
2294 contact.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
|
2295 self.AddBlock(contact) |
|
2296 self.Controler.AddEditedElementContact(self.TagName, id) |
2380 self.Controler.AddEditedElementContact(self.TagName, id) |
2297 self.RefreshContactModel(contact) |
2381 self.AddNewElement(contact, bbox, wire) |
2298 self.RefreshBuffer() |
|
2299 self.RefreshScrollBars() |
|
2300 self.RefreshVisibleElements() |
|
2301 contact.Refresh() |
|
2302 dialog.Destroy() |
2382 dialog.Destroy() |
2303 |
2383 |
2304 def AddNewCoil(self, bbox): |
2384 def AddNewCoil(self, bbox, wire=None): |
2305 dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "coil") |
2385 dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "coil") |
2306 dialog.SetPreviewFont(self.GetFont()) |
2386 dialog.SetPreviewFont(self.GetFont()) |
2307 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2387 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2308 if dialog.ShowModal() == wx.ID_OK: |
2388 if dialog.ShowModal() == wx.ID_OK: |
2309 id = self.GetNewId() |
2389 id = self.GetNewId() |
2310 values = dialog.GetValues() |
2390 values = dialog.GetValues() |
2311 coil = LD_Coil(self, values["modifier"], values["variable"], id) |
2391 coil = LD_Coil(self, values["modifier"], values["variable"], id) |
2312 coil.SetPosition(bbox.x, bbox.y) |
|
2313 coil.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
|
2314 self.AddBlock(coil) |
|
2315 self.Controler.AddEditedElementCoil(self.TagName, id) |
2392 self.Controler.AddEditedElementCoil(self.TagName, id) |
2316 self.RefreshCoilModel(coil) |
2393 self.AddNewElement(coil, bbox, wire) |
2317 self.RefreshBuffer() |
|
2318 self.RefreshScrollBars() |
|
2319 self.RefreshVisibleElements() |
|
2320 coil.Refresh() |
|
2321 dialog.Destroy() |
2394 dialog.Destroy() |
2322 |
2395 |
2323 def AddNewPowerRail(self, bbox): |
2396 def AddNewPowerRail(self, bbox, wire=None): |
2324 dialog = LDPowerRailDialog(self.ParentWindow, self.Controler, self.TagName) |
2397 if wire is not None: |
2325 dialog.SetPreviewFont(self.GetFont()) |
2398 values = { |
2326 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2399 "type": RIGHTRAIL, |
2327 if dialog.ShowModal() == wx.ID_OK: |
2400 "pin_number": 1} |
|
2401 else: |
|
2402 dialog = LDPowerRailDialog(self.ParentWindow, self.Controler, self.TagName) |
|
2403 dialog.SetPreviewFont(self.GetFont()) |
|
2404 dialog.SetMinElementSize((bbox.width, bbox.height)) |
|
2405 values = (dialog.GetValues() |
|
2406 if dialog.ShowModal() == wx.ID_OK |
|
2407 else None) |
|
2408 dialog.Destroy() |
|
2409 if values is not None: |
2328 id = self.GetNewId() |
2410 id = self.GetNewId() |
2329 values = dialog.GetValues() |
|
2330 powerrail = LD_PowerRail(self, values["type"], id, values["pin_number"]) |
2411 powerrail = LD_PowerRail(self, values["type"], id, values["pin_number"]) |
2331 powerrail.SetPosition(bbox.x, bbox.y) |
|
2332 powerrail.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
|
2333 self.AddBlock(powerrail) |
|
2334 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
2412 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
2335 self.RefreshPowerRailModel(powerrail) |
2413 self.AddNewElement(powerrail, bbox, wire) |
2336 self.RefreshBuffer() |
2414 |
2337 self.RefreshScrollBars() |
2415 def AddNewStep(self, bbox, initial=False, wire=None): |
2338 self.RefreshVisibleElements() |
2416 if wire is not None: |
2339 powerrail.Refresh() |
2417 values = { |
2340 dialog.Destroy() |
2418 "name": self.Controler.GenerateNewName( |
2341 |
2419 self.TagName, None, "Step%d", 0), |
2342 def AddNewStep(self, bbox, initial = False): |
2420 "input": True, |
2343 dialog = SFCStepDialog(self.ParentWindow, self.Controler, self.TagName, initial) |
2421 "output": False, |
2344 dialog.SetPreviewFont(self.GetFont()) |
2422 "action":False} |
2345 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2423 else: |
2346 if dialog.ShowModal() == wx.ID_OK: |
2424 dialog = SFCStepDialog(self.ParentWindow, self.Controler, self.TagName, initial) |
|
2425 dialog.SetPreviewFont(self.GetFont()) |
|
2426 dialog.SetMinElementSize((bbox.width, bbox.height)) |
|
2427 values = (dialog.GetValues() |
|
2428 if dialog.ShowModal() == wx.ID_OK |
|
2429 else None) |
|
2430 dialog.Destroy() |
|
2431 if values is not None: |
2347 id = self.GetNewId() |
2432 id = self.GetNewId() |
2348 values = dialog.GetValues() |
|
2349 step = SFC_Step(self, values["name"], initial, id) |
2433 step = SFC_Step(self, values["name"], initial, id) |
2350 if values["input"]: |
2434 self.Controler.AddEditedElementStep(self.TagName, id) |
2351 step.AddInput() |
2435 for connector in ["input", "output", "action"]: |
|
2436 getattr(step, ("Add" |
|
2437 if values[connector] |
|
2438 else "Remove") + connector.capitalize())() |
|
2439 self.AddNewElement(step, bbox, wire) |
|
2440 |
|
2441 def AddNewTransition(self, bbox, connection=False, wire=None): |
|
2442 if wire is not None and connection: |
|
2443 values = { |
|
2444 "type": "connection", |
|
2445 "value": None, |
|
2446 "priority": 0} |
|
2447 else: |
|
2448 dialog = SFCTransitionDialog(self.ParentWindow, self.Controler, self.TagName, self.GetDrawingMode() == FREEDRAWING_MODE) |
|
2449 dialog.SetPreviewFont(self.GetFont()) |
|
2450 dialog.SetMinElementSize((bbox.width, bbox.height)) |
|
2451 values = (dialog.GetValues() |
|
2452 if dialog.ShowModal() == wx.ID_OK |
|
2453 else None) |
|
2454 dialog.Destroy() |
|
2455 if values is not None: |
|
2456 id = self.GetNewId() |
|
2457 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
|
2458 self.Controler.AddEditedElementTransition(self.TagName, id) |
|
2459 if connection: |
|
2460 connector = transition.GetConditionConnector() |
2352 else: |
2461 else: |
2353 step.RemoveInput() |
2462 connector = transition.GetConnectors()["inputs"][0] |
2354 if values["output"]: |
2463 self.AddNewElement(transition, bbox, wire, connector) |
2355 step.AddOutput() |
2464 |
2356 else: |
2465 def AddNewDivergence(self, bbox, wire=None): |
2357 step.RemoveOutput() |
|
2358 if values["action"]: |
|
2359 step.AddAction() |
|
2360 else: |
|
2361 step.RemoveAction() |
|
2362 step.SetPosition(bbox.x, bbox.y) |
|
2363 min_width, min_height = step.GetMinSize() |
|
2364 step.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
|
2365 self.AddBlock(step) |
|
2366 self.Controler.AddEditedElementStep(self.TagName, id) |
|
2367 self.RefreshStepModel(step) |
|
2368 self.RefreshBuffer() |
|
2369 self.RefreshScrollBars() |
|
2370 self.RefreshVisibleElements() |
|
2371 step.Refresh() |
|
2372 dialog.Destroy() |
|
2373 |
|
2374 def AddNewTransition(self, bbox): |
|
2375 dialog = SFCTransitionDialog(self.ParentWindow, self.Controler, self.TagName, self.GetDrawingMode() == FREEDRAWING_MODE) |
|
2376 dialog.SetPreviewFont(self.GetFont()) |
|
2377 dialog.SetMinElementSize((bbox.width, bbox.height)) |
|
2378 if dialog.ShowModal() == wx.ID_OK: |
|
2379 id = self.GetNewId() |
|
2380 values = dialog.GetValues() |
|
2381 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
|
2382 transition.SetPosition(bbox.x, bbox.y) |
|
2383 min_width, min_height = transition.GetMinSize() |
|
2384 transition.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
|
2385 self.AddBlock(transition) |
|
2386 self.Controler.AddEditedElementTransition(self.TagName, id) |
|
2387 self.RefreshTransitionModel(transition) |
|
2388 self.RefreshBuffer() |
|
2389 self.RefreshScrollBars() |
|
2390 self.RefreshVisibleElements() |
|
2391 transition.Refresh() |
|
2392 dialog.Destroy() |
|
2393 |
|
2394 def AddNewDivergence(self, bbox): |
|
2395 dialog = SFCDivergenceDialog(self.ParentWindow, self.Controler, self.TagName) |
2466 dialog = SFCDivergenceDialog(self.ParentWindow, self.Controler, self.TagName) |
2396 dialog.SetPreviewFont(self.GetFont()) |
2467 dialog.SetPreviewFont(self.GetFont()) |
2397 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2468 dialog.SetMinElementSize((bbox.width, bbox.height)) |
2398 if dialog.ShowModal() == wx.ID_OK: |
2469 if dialog.ShowModal() == wx.ID_OK: |
2399 id = self.GetNewId() |
2470 id = self.GetNewId() |
2400 values = dialog.GetValues() |
2471 values = dialog.GetValues() |
2401 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
2472 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
2402 divergence.SetPosition(bbox.x, bbox.y) |
|
2403 min_width, min_height = divergence.GetMinSize(True) |
|
2404 divergence.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
|
2405 self.AddBlock(divergence) |
|
2406 self.Controler.AddEditedElementDivergence(self.TagName, id, values["type"]) |
2473 self.Controler.AddEditedElementDivergence(self.TagName, id, values["type"]) |
2407 self.RefreshDivergenceModel(divergence) |
2474 self.AddNewElement(divergence, bbox, wire) |
2408 self.RefreshBuffer() |
|
2409 self.RefreshScrollBars() |
|
2410 self.RefreshVisibleElements() |
|
2411 divergence.Refresh() |
|
2412 dialog.Destroy() |
2475 dialog.Destroy() |
2413 |
2476 |
2414 def AddNewJump(self, bbox): |
2477 def AddNewJump(self, bbox, wire=None): |
2415 choices = [] |
2478 choices = [] |
2416 for block in self.Blocks.itervalues(): |
2479 for block in self.Blocks.itervalues(): |
2417 if isinstance(block, SFC_Step): |
2480 if isinstance(block, SFC_Step): |
2418 choices.append(block.GetName()) |
2481 choices.append(block.GetName()) |
2419 dialog = wx.SingleChoiceDialog(self.ParentWindow, |
2482 dialog = wx.SingleChoiceDialog(self.ParentWindow, |
2420 _("Add a new jump"), _("Please choose a target"), |
2483 _("Add a new jump"), _("Please choose a target"), |
2421 choices, wx.DEFAULT_DIALOG_STYLE|wx.OK|wx.CANCEL) |
2484 choices, wx.DEFAULT_DIALOG_STYLE|wx.OK|wx.CANCEL) |
2422 if dialog.ShowModal() == wx.ID_OK: |
2485 if dialog.ShowModal() == wx.ID_OK: |
2423 id = self.GetNewId() |
2486 id = self.GetNewId() |
2424 value = dialog.GetStringSelection() |
2487 jump = SFC_Jump(self, dialog.GetStringSelection(), id) |
2425 jump = SFC_Jump(self, value, id) |
|
2426 jump.SetPosition(bbox.x, bbox.y) |
|
2427 min_width, min_height = jump.GetMinSize() |
|
2428 jump.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
|
2429 self.AddBlock(jump) |
|
2430 self.Controler.AddEditedElementJump(self.TagName, id) |
2488 self.Controler.AddEditedElementJump(self.TagName, id) |
2431 self.RefreshJumpModel(jump) |
2489 self.AddNewElement(jump, bbox, wire) |
2432 self.RefreshBuffer() |
|
2433 self.RefreshScrollBars() |
|
2434 self.RefreshVisibleElements() |
|
2435 jump.Refresh() |
|
2436 dialog.Destroy() |
2490 dialog.Destroy() |
2437 |
2491 |
2438 def AddNewActionBlock(self, bbox): |
2492 def AddNewActionBlock(self, bbox, wire=None): |
2439 dialog = ActionBlockDialog(self.ParentWindow) |
2493 dialog = ActionBlockDialog(self.ParentWindow) |
2440 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
2494 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
2441 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName, self.Debug)) |
2495 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName, self.Debug)) |
2442 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
2496 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
2443 if dialog.ShowModal() == wx.ID_OK: |
2497 if dialog.ShowModal() == wx.ID_OK: |
2444 actions = dialog.GetValues() |
|
2445 id = self.GetNewId() |
2498 id = self.GetNewId() |
2446 actionblock = SFC_ActionBlock(self, actions, id) |
2499 actionblock = SFC_ActionBlock(self, dialog.GetValues(), id) |
2447 actionblock.SetPosition(bbox.x, bbox.y) |
|
2448 min_width, min_height = actionblock.GetMinSize() |
|
2449 actionblock.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
|
2450 self.AddBlock(actionblock) |
|
2451 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
2500 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
2452 self.RefreshActionBlockModel(actionblock) |
2501 self.AddNewElement(actionblock, bbox, wire) |
2453 self.RefreshBuffer() |
|
2454 self.RefreshScrollBars() |
|
2455 self.RefreshVisibleElements() |
|
2456 actionblock.Refresh() |
|
2457 dialog.Destroy() |
2502 dialog.Destroy() |
2458 |
2503 |
2459 #------------------------------------------------------------------------------- |
2504 #------------------------------------------------------------------------------- |
2460 # Edit element content functions |
2505 # Edit element content functions |
2461 #------------------------------------------------------------------------------- |
2506 #------------------------------------------------------------------------------- |