Ejemplo n.º 1
0
        //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);
            }
        }