コード例 #1
0
        private void OpenDatabase()
        {
            // Preguntamos si se quiere salvar lo actual.
            SaveDatabase();

            // Abrimos la base de datos.
            string file;

            if (DatabaseOpenDialog.Show(mainWindow, out file)
                == ResponseType.Ok)
            {
                // El usuario acepta la apertura del archivo.
                MathTextDatabase database = MathTextDatabase.Load(file);
                if (database == null)
                {
                    // No se abrio un archivo de base de datos, informamos.
                    OkDialog.Show(this.mainWindow,
                                  MessageType.Warning,
                                  "El archivo «{0}» no contiene una base de datos " +
                                  "correcta, y no se pudo abrir.",
                                  file);

                    return;
                }

                SetDatabase(database);

                SetTitle(file);
                databaseModified = false;

                LogLine("¡Base de datos «" + file + "» cargada correctamente!");
            }
        }
コード例 #2
0
        /// <summary>
        /// Sets the database the symbols will be learned into, and makes the
        /// proper interface elementents (un)sensitive.
        /// </summary>
        /// <param name="database">
        /// A <see cref="MathTextDatabase"/>
        /// </param>
        private void SetDatabase(MathTextDatabase database)
        {
            this.database = database;

            database.StepDone +=
                new ProcessingStepDoneHandler(OnLearningStepDone);

            messageInfoHB.Visible = false;

            mtb = null;


            toolSaveAs.Sensitive = true;
            menuSaveAs.Sensitive = true;

            imagesHB.Sensitive = true;
            imagesVB.Sensitive = true;

            imagesStore.Clear();

            hboxSymbolWidgets.Sensitive = false;
            nextButtonsHB.Sensitive     = false;

            editPropertiesBtn.Sensitive = true;

            symbolLabelEditor.Label = "";

            SetDatabaseInfo();
        }
コード例 #3
0
        /// <summary>
        /// Sets the appropiate labels based on the database.
        /// </summary>
        /// <param name="database">
        /// The database which info we want to be showed.
        /// </param>
        public void SetDatabase(MathTextDatabase database)
        {
            shortDescLabel.Markup = String.Format("<i>{0}</i>",
                                                  database.ShortDescription);

            longDescLabel.Text = database.Description;

            typeLabel.Text = database.DatabaseTypeShortDescription;
        }
コード例 #4
0
        /// <summary>
        /// Cargamos la base de datos que vamos a utilizar para intentar
        /// reconocer las imagenes como caracteres.
        /// </summary>
        /// <param name="path">
        /// La ruta del fichero donde esta la base de datos.
        /// </param>
        public void LoadDatabase(string path)
        {
            MathTextDatabase database = MathTextDatabase.Load(path);

            database.StepDone +=
                new ProcessingStepDoneHandler(OnProcessingStepDone);

            databases.Add(database);
        }
コード例 #5
0
        /// <summary>
        /// <c>MainLearnerWindow</c>'s parametriced constructor.
        /// </summary>
        /// <param name="parent">
        /// The windo's parent window.
        /// </param>
        /// <param name="inputDatabase">
        /// A database to be loaded upon start.
        /// </param>
        /// <param name="inputDatabasePath">
        /// The path of the input database.
        /// </param>
        /// <param name="inputImage">
        /// An image to be learned upon start.
        /// </param>
        public MainLearnerWindow(Gtk.Window parent,
                                 MathTextDatabase inputDatabase,
                                 string inputDatabasePath,
                                 Pixbuf inputImage,
                                 string inputImageName)
        {
            Glade.XML gxml = new Glade.XML(null,
                                           "mathtextlearner.glade",
                                           "mainWindow",
                                           null);

            gxml.Autoconnect(this);

            Initialize();

            if (parent != null)
            {
                mainWindow.Modal        = true;
                mainWindow.TransientFor = parent;
            }

            // We try loading the image.

            if (inputDatabase != null)
            {
                // We have to load a database.
                SetDatabase(inputDatabase);

                SetTitle(inputDatabasePath);

                if (inputImage != null)
                {
                    LoadNewImage(inputImage);
                }
            }
            else if (inputImage != null)
            {
                // We haven't specified a database, but want to learn and image,
                // so we launch the new database wizard, and add that image.
                NewDatabaseAsisstant assistant =
                    new NewDatabaseAsisstant(mainWindow,
                                             inputImage,
                                             inputImageName);

                ResponseType res = assistant.Run();
                if (res == ResponseType.Ok)
                {
                    SetDatabase(assistant.Database);

                    LoadNewImages(assistant.Images);
                }

                assistant.Destroy();
            }

            mainWindow.Icon = ImageResources.LoadPixbuf("mathtextlearner16");
        }
コード例 #6
0
        private MathTextDatabase CreateDatabase()
        {
            MathTextDatabase mtd = new MathTextDatabase();

            mtd.Database         = databaseStep.Database;
            mtd.Processes        = processesStep.Processes;
            mtd.Description      = propertiesStep.LongDescription;
            mtd.ShortDescription = propertiesStep.ShortDescription;

            return(mtd);
        }
コード例 #7
0
        /// <summary>
        /// <c>LearnSymbolDatabaseChooserDialog</c>'s constructor.
        /// </summary>
        /// <param name="parent">
        /// The dialog's parent dialog, to which it's modal.
        /// </param>
        /// <param name="databases">
        /// The databases the user can choose from.
        /// </param>
        public LearnSymbolDatabaseChooserDialog(Window parent,
                                                List <DatabaseFileInfo> databases)
        {
            XML gxml = new XML(null,
                               "mathtextrecognizer.glade",
                               "learnSymbolDatabaseChooserDialog",
                               null);

            gxml.Autoconnect(this);

            learnSymbolDatabaseChooserDialog.Modal        = true;
            learnSymbolDatabaseChooserDialog.Resizable    = false;
            learnSymbolDatabaseChooserDialog.TransientFor = parent;

            databaseHash = new Dictionary <string, DatabaseFileInfo>();

            optionsTooltips = new Tooltips();

            RadioButton groupRB = new RadioButton("group");

            foreach (DatabaseFileInfo databaseInfo in databases)
            {
                // We add a new option per database
                string      label    = System.IO.Path.GetFileName(databaseInfo.Path);
                RadioButton optionRB = new RadioButton(groupRB, label);

                optionRB.Clicked += new EventHandler(OnOptionRBClicked);
                optionsVB.Add(optionRB);

                MathTextDatabase database = databaseInfo.Database;


                optionsTooltips.SetTip(optionRB,
                                       String.Format("{0}\n{1}",
                                                     database.ShortDescription,
                                                     database.Description),
                                       "database description");

                databaseHash.Add(label, databaseInfo);
            }

            // We add the option of creating a new database.
            newRB          = new RadioButton(groupRB, "Crear nueva base de datos");
            newRB.Clicked += new EventHandler(OnOptionRBClicked);
            optionsVB.Add(newRB);
            optionsTooltips.SetTip(newRB,
                                   "Te permite crear una base de datos nueva",
                                   "new databse description");

            optionsTooltips.Enable();

            learnSymbolDatabaseChooserDialog.ShowAll();
        }
コード例 #8
0
        /// <summary>
        /// Añade una base de datos a la lista.
        /// </summary>
        /// <param name="databasePath">
        /// La ruta de la base de datos.
        /// </param>
        private void AddDatabase(string databasePath)
        {
            MathTextDatabase database = MathTextDatabase.Load(databasePath);

            if (database == null)
            {
                // No se abrio un archivo de base de datos, informamos.
                OkDialog.Show(this.databaseManagerDialog,
                              MessageType.Warning,
                              "El archivo «{0}» no contiene una base de datos correcta, y no se pudo abrir.",
                              databasePath);
                return;
            }

            DatabaseFileInfo databaseInfo = new DatabaseFileInfo();

            databaseInfo.Database = database;
            databaseInfo.Path     = databasePath;

            if (!databaseFilesInfo.Contains(databaseInfo))
            {
                // Lo añadimos a la coleccion.
                databaseFilesInfo.Add(databaseInfo);

                TreeIter newItem =
                    databasesLS.AppendValues(Path.GetFileName(databasePath),
                                             database.DatabaseTypeShortDescription,
                                             databasePath,
                                             databaseInfo);

                // Seleccionamos la fila añadida.
                databasesTV.Selection.SelectIter(newItem);
                TreePath newPath = databasesLS.GetPath(newItem);
                databasesTV.ScrollToCell(newPath,
                                         databasesTV.Columns[0],
                                         true,
                                         1.0f,
                                         0.0f);
            }
            else
            {
                OkDialog.Show(this.databaseManagerDialog,
                              MessageType.Info,
                              "La base de datos del fichero «{0}» ya se encuentra en la lista y no se añadirá de nuevo.",
                              Path.GetFileName(databasePath));
            }
        }
コード例 #9
0
        /// <summary>
        /// Handles the click on the "learn image" treeview's context menu item.
        /// </summary>
        /// <param name="sender">
        /// A <see cref="System.Object"/>
        /// </param>
        /// <param name="args">
        /// A <see cref="EventArgs"/>
        /// </param>
        private void OnLearnImageItemActivate(object sender, EventArgs args)
        {
            // We ask for confirmation
            ResponseType res = ConfirmDialog.Show(MainRecognizerWindow.Window,
                                                  "¿Realmente quieres añadir el símbolo «{0}» a una base de datos?",
                                                  selectedNode.Name);

            if (res == ResponseType.Yes)
            {
                // We let the user select the database to be modified.
                LearnSymbolDatabaseChooserDialog databaseDialog =
                    new LearnSymbolDatabaseChooserDialog(MainRecognizerWindow.Window,
                                                         Config.RecognizerConfig.Instance.DatabaseFilesInfo);

                res = databaseDialog.Show();
                databaseDialog.Destroy();

                if (res == ResponseType.Ok)
                {
                    DatabaseFileInfo selectedDatabase =
                        databaseDialog.ChoosenDatabase;

                    MathTextDatabase database     = null;
                    string           databasePath = "";
                    if (selectedDatabase != null)
                    {
                        database     = selectedDatabase.Database;
                        databasePath = selectedDatabase.Path;
                    }

                    new MainLearnerWindow(this.MainRecognizerWindow.Window,
                                          database,
                                          databasePath,
                                          selectedNode.MathTextBitmap.Pixbuf,
                                          selectedNode.Name);
                }
            }
        }