146 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"log"
 | |
| 
 | |
| 	"github.com/dixonwille/wmenu/v5"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	type program struct {
 | |
| 		name           string
 | |
| 		launchFunction func()
 | |
| 	}
 | |
| 
 | |
| 	programs := []program{
 | |
| 		{
 | |
| 			name: "Pass or Fail",
 | |
| 			launchFunction: func() {
 | |
| 				passFail()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Guessing Game",
 | |
| 			launchFunction: func() {
 | |
| 				guess()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Shopping List",
 | |
| 			launchFunction: func() {
 | |
| 				shopping()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Commandline Test",
 | |
| 			launchFunction: func() {
 | |
| 				terminalTest()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Wall Area",
 | |
| 			launchFunction: func() {
 | |
| 				wallArea()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "myIntPointer",
 | |
| 			launchFunction: func() {
 | |
| 				myIntPointer()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Double",
 | |
| 			launchFunction: func() {
 | |
| 				double()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Convert To Celsius",
 | |
| 			launchFunction: func() {
 | |
| 				toCelsius()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Get the Average My Solution",
 | |
| 			launchFunction: func() {
 | |
| 				averageMySolution()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Get the Average Head First Solution",
 | |
| 			launchFunction: func() {
 | |
| 				averageHeadFirstSolution()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Get the Average Variadic",
 | |
| 			launchFunction: func() {
 | |
| 				averageVariadic()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Slices",
 | |
| 			launchFunction: func() {
 | |
| 				slices()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Variadic Functions",
 | |
| 			launchFunction: func() {
 | |
| 				variadic()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Count Votes",
 | |
| 			launchFunction: func() {
 | |
| 				countVotes()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Magazine Subscribers",
 | |
| 			launchFunction: func() {
 | |
| 				magazineSubscribers()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Fuel",
 | |
| 			launchFunction: func() {
 | |
| 				fuel()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Calendar",
 | |
| 			launchFunction: func() {
 | |
| 				companyCalendar()
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			name: "Directory List",
 | |
| 			launchFunction: func() {
 | |
| 				directory()
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 	menu := wmenu.NewMenu("Choose a program.")
 | |
| 	menu.Action(func(opts []wmenu.Opt) error {
 | |
| 		fmt.Printf("You chose " + opts[0].Text + ". Launching...\n")
 | |
| 		for _, v := range programs {
 | |
| 			if v.name == opts[0].Text {
 | |
| 				v.launchFunction()
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return nil
 | |
| 	})
 | |
| 	menu.PadOptionID()
 | |
| 	for _, option := range programs {
 | |
| 		menu.Option(option.name, nil, false, nil)
 | |
| 	}
 | |
| 	err := menu.Run()
 | |
| 	if err != nil {
 | |
| 		log.Fatal(err)
 | |
| 	}
 | |
| }
 |