Jetzt bin ich dabei meinen OcrMaker (eine GUI für die Texterkennung mit tesseract) zu portieren, dabei habe ich ein Problem, wobei ich mir schon einen Wolf gegoogelt habe.
Es geht darum, einen Text, der in einem Textwidget (textview) ist, auf die Festplalte mit FilechooserDialog zu schreiben. Das Lesen funktioniert einwandfrei, aber hier komme ich leider nicht weiter.
Dies ist der Code zum Öffnen einer Datei:
Code: Alles auswählen
protected virtual void OnOpenActionActivated (object sender, System.EventArgs e)
{
// Dokument öffnen
// Setze textview1 zurück und wechsel das Fenster zurück zur Originalgröße
int width, height;
this.GetDefaultSize( out width, out height );
this.Resize( width, height );
textview1.Buffer.Text = "";
// Erstelle und zeige einen Dateiauswahldialog
FileChooserDialog chooser = new FileChooserDialog(
"Bitte wähle ein Dokument ...",
this,
FileChooserAction.Open,
"Abbruch", ResponseType.Cancel,
"Öffnen", ResponseType.Accept );
if( chooser.Run() == ( int )ResponseType.Accept )
{
// Öffne Dokument zum Lesen
System.IO.StreamReader file =
System.IO.File.OpenText( chooser.Filename );
// Kopiere den Inhalt in das Textwidget textview1
textview1.Buffer.Text = file.ReadToEnd();
// Setze den MainWindow Titel für den Dateinamen
this.Title = "OcrMaker -- " + chooser.Filename.ToString();
// Mach das MainWindow größer
this.Resize( 640, 480 );
// Schliesse das Textdokument
file.Close();
} // end if
chooser.Destroy();
} // Ende Methode OnOpen
Und dies der Code zum Speichern einer Textdatei:
Code: Alles auswählen
protected virtual void OnSaveActionActivated (object sender, System.EventArgs e)
{
// Dokument speichern
// Setze textview1 zurück und wechsel das Fenster zurück zur Originalgröße
int width, height;
this.GetDefaultSize( out width, out height );
this.Resize( width, height );
textview1.Buffer.Text = "";
// Erstelle und zeige einen Dateiauswahldialog
FileChooserDialog chooser = new FileChooserDialog(
"Bitte wähle ein Dokument ...",
this,
FileChooserAction.Save,
"Abbruch", ResponseType.Cancel,
"Speichern", ResponseType.Accept );
if( chooser.Run() == ( int )ResponseType.Accept )
{
// Speichere Dokument
******************************
Hier sollte der Code drin stehen zum Speichern. Irgendwie muss ich textview1.buffer.text, der ja den Text des Textwidgets enthält, wahrscheinlich an
System.IO.StreamWriter file =
System.IO.File.SaveText( chooser.Filename );
übergeben, oder? Was mache ich falsch?
*******************************
// Setze den MainWindow Titel für den Dateinamen
this.Title = "OcrMaker -- " + chooser.Filename.ToString();
// Mach das MainWindow größer
this.Resize( 640, 480 );
// Schliesse das Textdokument
// file.Close();
} // end if
chooser.Destroy();
} // Ende Methode OnSave