Пример #1
0
Файл: cpulab.go Проект: iand/go
func init() {
	mainMenuDialog = termdialog.NewSelectionDialog("Main Menu", nil)
	cpuDialog = termdialog.NewSelectionDialog("CPU", nil)
	structureDialog = termdialog.NewSelectionDialog("Structure", nil)
	registersDialog = termdialog.NewSelectionDialog("Registers", nil)
	editRegisterDialog = termdialog.NewSelectionDialog("Edit Register", nil)
	registerBanksDialog = termdialog.NewSelectionDialog("Register Banks", nil)
	editRegisterBankDialog = termdialog.NewSelectionDialog("Edit Register Bank", nil)
	ramsDialog = termdialog.NewSelectionDialog("RAMs", nil)
	editRamDialog = termdialog.NewSelectionDialog("Edit RAM", nil)
	instructionsDialog = termdialog.NewSelectionDialog("Instructions", nil)
	editInstructionDialog = termdialog.NewSelectionDialog("Edit Instruction", nil)
	addMicroInstructionDialog = termdialog.NewSelectionDialog("Add Microinstruction", nil)
	addMoveMicroInstructionDialog = termdialog.NewSelectionDialog("Add Register Transfer Microinstruction", nil)
	addMoveMicroInstructionDestinationDialog = termdialog.NewSelectionDialog("Add Register Transfer Microinstruction", nil)
	addRamReadMicroInstructionDialog = termdialog.NewSelectionDialog("Add RAM Read Microinstruction", nil)
	addRamWriteMicroInstructionDialog = termdialog.NewSelectionDialog("Add RAM Write Microinstruction", nil)
	editMicroInstructionDialog = termdialog.NewSelectionDialog("Edit Microinstruction", nil)
	confirmationDialog = termdialog.NewSelectionDialog("Are you sure?", nil)

	addRegisterDialog = termdialog.NewInputDialog("Add Register", "Name:", 12, "", addRegisterWidthCallback, nil)
	addRegisterWidthDialog = termdialog.NewInputDialog("Add Register", "Width:", 4, "", addRegisterCallback, nil)
	editRegisterNameDialog = termdialog.NewInputDialog("Edit Register", "Name:", 12, "", editRegisterNameCallback, nil)
	editRegisterWidthDialog = termdialog.NewInputDialog("Edit Register", "Width:", 4, "", editRegisterWidthCallback, nil)
	addRegisterBankDialog = termdialog.NewInputDialog("Add Register Bank", "Name:", 12, "", addRegisterBankWidthCallback, nil)
	addRegisterBankWidthDialog = termdialog.NewInputDialog("Add Register Bank", "Width:", 4, "", addRegisterBankDepthCallback, nil)
	addRegisterBankDepthDialog = termdialog.NewInputDialog("Add Register Bank", "Depth:", 8, "", addRegisterBankCallback, nil)
	editRegisterBankNameDialog = termdialog.NewInputDialog("Edit Register Bank", "Name:", 12, "", editRegisterBankNameCallback, nil)
	editRegisterBankWidthDialog = termdialog.NewInputDialog("Edit Register Bank", "Width:", 4, "", editRegisterBankWidthCallback, nil)
	editRegisterBankDepthDialog = termdialog.NewInputDialog("Edit Register Bank", "Depth:", 8, "", editRegisterBankDepthCallback, nil)
	addRamDialog = termdialog.NewInputDialog("Add RAM", "Name:", 12, "", addRamWidthCallback, nil)
	addRamWidthDialog = termdialog.NewInputDialog("Add RAM", "Width:", 4, "", addRamDepthCallback, nil)
	addRamDepthDialog = termdialog.NewInputDialog("Add RAM", "Depth:", 8, "", addRamCallback, nil)
	editRamNameDialog = termdialog.NewInputDialog("Edit RAM", "Name:", 12, "", editRamNameCallback, nil)
	editRamWidthDialog = termdialog.NewInputDialog("Edit RAM", "Width:", 4, "", editRamWidthCallback, nil)
	editRamDepthDialog = termdialog.NewInputDialog("Edit RAM", "Depth:", 8, "", editRamDepthCallback, nil)
	addInstructionDialog = termdialog.NewInputDialog("Add Instruction", "Mnemonic:", 12, "", addInstructionCallback, nil)
	editInstructionNameDialog = termdialog.NewInputDialog("Edit Instruction", "Mnemonic:", 12, "", editInstructionNameCallback, nil)

	errorDialog = termdialog.NewMessageDialog("Error", "")

	openDialog = termdialog.NewInputDialog("Open from "+SavesDir, "Filename:", 20, "", openCallback, nil)
	saveDialog = termdialog.NewInputDialog("Save to "+SavesDir, "Filename:", 20, "", saveCallback, nil)

	mainMenuDialog.AddOption(&termdialog.Option{"Edit CPU", openDialogCallback, cpuDialog})
	mainMenuDialog.AddOption(&termdialog.Option{"Open", openDialogCallback, openDialog})
	mainMenuDialog.AddOption(&termdialog.Option{"Save", openDialogCallback, saveDialog})
	mainMenuDialog.AddOption(&termdialog.Option{"Exit", nil, nil})

	cpuDialog.AddOption(&termdialog.Option{"Structure", openDialogCallback, structureDialog})
	cpuDialog.AddOption(&termdialog.Option{"Instructions", openDialogCallback, instructionsDialog})
	cpuDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	structureDialog.AddOption(&termdialog.Option{"Registers", openDialogCallback, registersDialog})
	structureDialog.AddOption(&termdialog.Option{"Register banks", openDialogCallback, registerBanksDialog})
	structureDialog.AddOption(&termdialog.Option{"RAMs", openDialogCallback, ramsDialog})
	structureDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	editRegisterDialog.AddOption(&termdialog.Option{"Edit name", openDialogCallback, editRegisterNameDialog})
	editRegisterDialog.AddOption(&termdialog.Option{"Edit width", openDialogCallback, editRegisterWidthDialog})
	editRegisterDialog.AddOption(&termdialog.Option{"Delete", deleteRegisterCallback, nil})
	editRegisterDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	editRegisterBankDialog.AddOption(&termdialog.Option{"Edit name", openDialogCallback, editRegisterBankNameDialog})
	editRegisterBankDialog.AddOption(&termdialog.Option{"Edit width", openDialogCallback, editRegisterBankWidthDialog})
	editRegisterBankDialog.AddOption(&termdialog.Option{"Edit depth", openDialogCallback, editRegisterBankDepthDialog})
	editRegisterBankDialog.AddOption(&termdialog.Option{"Delete", deleteRegisterBankCallback, nil})
	editRegisterBankDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	editRamDialog.AddOption(&termdialog.Option{"Edit name", openDialogCallback, editRamNameDialog})
	editRamDialog.AddOption(&termdialog.Option{"Edit width", openDialogCallback, editRamWidthDialog})
	editRamDialog.AddOption(&termdialog.Option{"Edit depth", openDialogCallback, editRamDepthDialog})
	editRamDialog.AddOption(&termdialog.Option{"Delete", deleteRamCallback, nil})
	editRamDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	editInstructionDialog.AddOption(&termdialog.Option{"Edit mnemonic", openDialogCallback, editInstructionNameDialog})
	editInstructionDialog.AddOption(&termdialog.Option{"Edit microinstructions", openDialogCallback, nil})
	editInstructionDialog.AddOption(&termdialog.Option{"Delete", deleteInstructionCallback, nil})
	editInstructionDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	addMicroInstructionDialog.AddOption(&termdialog.Option{"Register transfer", addMoveMicroInstructionOpenCallback, nil})
	addMicroInstructionDialog.AddOption(&termdialog.Option{"RAM read", addRamReadMicroInstructionOpenCallback, nil})
	addMicroInstructionDialog.AddOption(&termdialog.Option{"RAM write", addRamWriteMicroInstructionOpenCallback, nil})
	addMicroInstructionDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	editMicroInstructionDialog.AddOption(&termdialog.Option{"Delete", deleteMicroInstructionCallback, nil})
	editMicroInstructionDialog.AddOption(&termdialog.Option{"Close", nil, nil})

	confirmationDialog.AddOption(&termdialog.Option{"No", nil, nil})
	confirmationDialog.AddOption(&termdialog.Option{"Yes", confirmCallback, nil})

	refreshGUI()
}
Пример #2
0
func addInstructionToGui(instruction *Instruction) {
	instruction.editOption = instructionsDialog.AddOption(&termdialog.Option{"Edit " + instruction.Name, editInstructionOpenCallback, instruction})
	instruction.microInstructionsDialog = termdialog.NewSelectionDialog("Microinstructions", nil)
	instruction.microInstructionsDialog.AddOption(&termdialog.Option{"Add", openDialogCallback, addMicroInstructionDialog})
	instruction.microInstructionsDialog.AddOption(&termdialog.Option{"Close", nil, nil})
}