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!"); } }
/// <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(); }
/// <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; }
/// <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); }
/// <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"); }
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); }
/// <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(); }
/// <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)); } }
/// <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); } } }