Esempio n. 1
0
func (dialog *EditDialog) setCurrentValues(context string) {
	obj, err := dialog.fts.GetObjectById(context)
	if err != nil {
		log.Fatalf("editdialog.go: getActiveElementType error: failed to get context: %s\n", err)
	}
	var i int
	var t string
	switch obj.(type) {
	case bh.NodeIf:
		// TODO: check auto-generated types
		if len(obj.(bh.NodeIf).InPorts()) > 0 {
			if len(obj.(bh.NodeIf).OutPorts()) > 0 {
				dialog.nodeNameEntry.SetText(obj.(bh.NodeIf).Name())
				for i, t = range freesp.GetRegisteredNodeTypes() {
					if obj.(bh.NodeIf).ItsType().TypeName() == t {
						break
					}
				}
				dialog.nodeTypeSelector.SetActive(i)
				dialog.nodeTypeSelector.SetSensitive(false)
			} else {
				// assume one input port
				dialog.outputNodeNameEntry.SetText(obj.(bh.NodeIf).Name())
				for i, t = range freesp.GetRegisteredSignalTypes() {
					if obj.(bh.NodeIf).InPorts()[0].SignalType().TypeName() == t {
						break
					}
				}
				dialog.outputTypeSelector.SetActive(i)
				dialog.outputTypeSelector.SetSensitive(false)
			}
		} else {
			// assume one output port
			dialog.inputNodeNameEntry.SetText(obj.(bh.NodeIf).Name())
			for i, t = range freesp.GetRegisteredSignalTypes() {
				if obj.(bh.NodeIf).OutPorts()[0].SignalType().TypeName() == t {
					break
				}
			}
			dialog.inputTypeSelector.SetActive(i)
			dialog.inputTypeSelector.SetSensitive(false)
		}
	case bh.NodeTypeIf:
		dialog.typeNameEntry.SetText(obj.(bh.NodeTypeIf).TypeName())
	case bh.PortTypeIf:
		dialog.portNameEntry.SetText(obj.(bh.PortTypeIf).Name())
		if obj.(bh.PortTypeIf).Direction() == gr.OutPort {
			dialog.directionSelector.SetActive(1)
		}
		for i, t = range freesp.GetRegisteredSignalTypes() {
			if obj.(bh.PortTypeIf).SignalType().TypeName() == t {
				break
			}
		}
		dialog.signalTypeSelector.SetActive(i)
		dialog.directionSelector.SetSensitive(false)
	case bh.SignalTypeIf:
		st := obj.(bh.SignalTypeIf)
		dialog.signalTypeNameEntry.SetText(st.TypeName())
		dialog.cTypeEntry.SetText(st.CType())
		dialog.channelIdEntry.SetText(st.ChannelId())
		dialog.scopeSelector.SetActive(int(st.Scope()))
		dialog.modeSelector.SetActive(int(st.Mode()))
	case bh.ImplementationIf:
		dialog.implNameEntry.SetText(obj.(bh.ImplementationIf).ElementName())
	case pf.ArchIf:
		dialog.archNameEntry.SetText(obj.(pf.ArchIf).Name())
	case pf.ProcessIf:
		dialog.processNameEntry.SetText(obj.(pf.ProcessIf).Name())
	case pf.IOTypeIf:
		dialog.ioTypeNameEntry.SetText(obj.(pf.IOTypeIf).Name())
		for i, t = range ioModeStrings {
			if string(obj.(pf.IOTypeIf).IOMode()) == t {
				break
			}
		}
		dialog.ioModeSelector.SetActive(i)
	case pf.ChannelIf:
		if obj.(pf.ChannelIf).Direction() == gr.OutPort {
			dialog.channelDirectionSelector.SetActive(1)
		}
		dialog.channelDirectionSelector.SetSensitive(false)
		for i, t = range freesp.GetRegisteredIOTypes() {
			if obj.(pf.ChannelIf).IOType().Name() == t {
				break
			}
		}
		dialog.ioTypeSelector.SetActive(i)
		pr := getOtherProcesses(dialog.fts, obj)
		var p pf.ProcessIf
		for i, p = range pr {
			if obj.(pf.ChannelIf).Link().Process() == p {
				break
			}
		}
		dialog.processSelector.SetActive(i)
		dialog.processSelector.SetSensitive(false)
	case mp.MappedElementIf:
		pr, _ := obj.(mp.MappedElementIf).Process()
		i := 0
		for _, a := range obj.(mp.MappedElementIf).Mapping().Platform().Arch() {
			for _, p := range a.Processes() {
				if pr == p {
					dialog.processMapSelector.SetActive(i)
					return
				}
				i++
			}
		}
		dialog.processMapSelector.SetActive(i)
	default:
		log.Fatalf("editdialog.go: getActiveElementType error: invalid active object type %T\n", obj)
	}
	return
}
Esempio n. 2
0
		},
	},
	iOutputTypeSelect: {"Select signal type:",
		func(dialog *EditMenuDialog) string {
			return dialog.outputTypeSelector.GetActiveText()
		},
		func(dialog *EditMenuDialog) (obj *gtk.Widget, err error) {
			return newComboBox(&dialog.outputTypeSelector, freesp.GetRegisteredSignalTypes())
		},
	},
	iIOTypeSelect: {"Select IO type:",
		func(dialog *EditMenuDialog) string {
			return dialog.ioTypeSelector.GetActiveText()
		},
		func(dialog *EditMenuDialog) (obj *gtk.Widget, err error) {
			return newComboBox(&dialog.ioTypeSelector, freesp.GetRegisteredIOTypes())
		},
	},
	iImplementationType: {"Implementation type:",
		func(dialog *EditMenuDialog) string {
			return dialog.implementationSelector.GetActiveText()
		},
		func(dialog *EditMenuDialog) (obj *gtk.Widget, err error) {
			return newComboBox(&dialog.implementationSelector, implTypeStrings)
		},
	},
	iIOModeSelect: {"Transmission mode:",
		func(dialog *EditMenuDialog) string {
			return dialog.ioModeSelector.GetActiveText()
		},
		func(dialog *EditMenuDialog) (obj *gtk.Widget, err error) {