//Contains all of the components which are on the window private void setupWindow() { //Vertical box (3 sections) which is the main container VBox MainVBox = new VBox(false, 6); /*********************Start of menu bar components*********************/ //Note: Flow of menus are: //Menubar contains MenuItems (e.g. File, Edit, About, etc...) //MenuItems contains one Menu (i.e. a Submenu) //Menu contains multiple MenuItems (e.g. Save, Save As, Load, etc...) MenuBar MainMenuBar = new MenuBar(); Menu FileMenu = new Menu(); MenuItem File = new MenuItem("File"); File.Submenu = FileMenu; MenuItem ExitItem = new MenuItem("Exit"); ExitItem.Activated += quitProgram; FileMenu.Append(ExitItem); Menu GestureMenu = new Menu(); MenuItem Gesture = new MenuItem("Gestures"); Gesture.Submenu = GestureMenu; MenuItem LoadGesture = new MenuItem("Load Gesture"); LoadGesture.Activated += openGesture; GestureMenu.Append(LoadGesture); MenuItem SaveGestureItem = new MenuItem("Save Gesture"); SaveGestureItem.Activated += createGesture; GestureMenu.Append(SaveGestureItem); Menu PointsMenu = new Menu(); MenuItem Points = new MenuItem("Data Points"); Points.Submenu = PointsMenu; MenuItem LoadPointsItem = new MenuItem("Load Points"); LoadPointsItem.Activated += loadDataPoints; PointsMenu.Append(LoadPointsItem); MenuItem RecordPointsItem = new MenuItem("Record Points"); RecordPointsItem.Activated += recordPoints; PointsMenu.Append(RecordPointsItem); MenuItem BatchRecognizeItem = new MenuItem("Batch Recognize"); BatchRecognizeItem.Activated += batchRecognize; PointsMenu.Append(BatchRecognizeItem); Menu HelpMenu = new Menu(); MenuItem Help = new MenuItem("Help"); Help.Submenu = HelpMenu; MenuItem AboutMenuItem = new MenuItem("About"); HelpMenu.Append(AboutMenuItem); MainMenuBar.Append(File); MainMenuBar.Append(Gesture); MainMenuBar.Append(Points); MainMenuBar.Append(Help); /*********************End of menu bar components*********************/ //Drawing area which is the core component of the application dArea = new DrawingArea(); dArea.SetSizeRequest(500, 500); //Horizontal box (4 sections) which contains all of the buttons along the //bottom of the window HBox ButtonHBox = new HBox(false, 6); /*********************Start of Buttons*********************/ Button BtnCreateGesture = new Button("Create"); Button BtnRecognizeGesture = new Button("Recognize"); Button BtnClearScreen = new Button("Clear"); Button BtnRecordPoints = new Button("Record points"); Button BtnChangeColour = new Button("Change colour"); //Button functions BtnCreateGesture.Clicked += new EventHandler(createGesture); BtnRecognizeGesture.Clicked += new EventHandler(recognizeGesture); BtnClearScreen.Clicked += new EventHandler(clearScreen); BtnRecordPoints.Clicked += new EventHandler(recordPoints); BtnChangeColour.Clicked += changeColour; //Adding buttons to the current horizontal box ButtonHBox.PackStart(BtnCreateGesture, true, false, 0); ButtonHBox.PackStart(BtnRecognizeGesture, true, false, 0); ButtonHBox.PackStart(BtnClearScreen, true, false, 0); ButtonHBox.PackStart(BtnRecordPoints, true, false, 0); ButtonHBox.PackStart(BtnChangeColour, true, false, 0); /*********************End of Buttons*********************/ //Status bar which shows the score and recognized gesture sBar = new Statusbar(); sBar.Push(1, "Ready"); //Entry box for batch function name to be used on the files batchFunctionName = new Entry("Recorded points function name"); batchFunctionName.AddEvents( (int)Gdk.EventMask.ButtonPressMask ); batchFunctionName.ButtonPressEvent += clearTextBox; //Adding all components to the Vertical box MainVBox.PackStart(MainMenuBar, false, false, 0); MainVBox.PackStart(dArea, false, false, 0); MainVBox.PackStart(ButtonHBox, false, false, 0); MainVBox.PackStart(batchFunctionName, false, false, 0); MainVBox.PackStart(sBar, false, false, 0); Add(MainVBox); ShowAll(); //Surface 'pattern' for area to be covered surface = new ImageSurface(Format.Argb32, 500, 500); //Adding mouse events to the drawing area and assigning functions dArea.AddEvents( //Mouse Related Events (int)Gdk.EventMask.PointerMotionMask | (int)Gdk.EventMask.ButtonPressMask | (int)Gdk.EventMask.ButtonReleaseMask ); //Repaint the Canvas Internally. dArea.ExposeEvent += OnDrawingAreaExposed; //Do this on MousePress inside Area dArea.ButtonPressEvent += OnMousePress; //Do this on MouseReleased inside Area dArea.ButtonReleaseEvent += OnMouseRelease; //Do this if a Motion Occurs inside the Drawing Area dArea.MotionNotifyEvent += OnMouseMotion2; //Assigning close function to the window DeleteEvent += delegate { Application.Quit(); }; //Checking to see if bool for using the dot function is true //And assigning the required function as the delegate's operation //Note: This will always be true, no current way to switch while //application is running, has not been needed as of yet if (isDot) { Painter = new DrawShape(DrawDot); myoPainter = new DrawShape(DrawDot); } else { Painter = new DrawShape(DrawLine); } }