Ayuda con un Programita en "C# (C Sharp) con GTK#" [Noob]

Hola buenas estoy trabajando con Monodevelop con el framework Mono y librerias graficas GTK# 2.
El profesor de programacion nos pidio que realizasemos el primer programa grafico tras estar 2 semanas enseñando lo basico a modo de consola (if, while, clases, herencias etc..)

Y el programa consiste en una aplicacion tonta llama PTextView, la cual tiene un VBOX (Vertical Box) de 3 filas.
En la fila 1 un Menu bar que ponga archivo y cuando le pinches se desplege la opcion Abrir.
En la fila 2 un ToogleBar con un icono de una carpetita (hace lo mismo que la opcion abrir).
En la fila 3 un TextView.

Imagen

Hasta aqui todo facil y lo tengo hecho ahora toca el tema de las acciones @_@ y lo explico rapido en 5 minutos y no me entere bien y mi accion: "Action_Abrir" supuestamente cuando le de tiene que sacar un FileDialogChooser que me de la opcion de seleccionar un archivo.
Luego me tengo que estrujar la vida para que el archivo seleccionado abrirlo y mostrarlo por el TextView.

Es una aplicacion muy tonta pero como no entendi el tema de las acciones y el uso/llamada del FileDialogChooser estoy aqui atascado...

   protected virtual void OnActionAbrirActivated (object sender, System.EventArgs e)
   {
      FileChooserDialog file = new FileChooserDialog("Seleccione Archivo",
                                                     this,
                                                     FileChooserType.Open,
                                                     Stock.Cancel,ResponseType.Cancel,
                                                     Stock.Ok,ResponseType.Ok
                                                     );
//      FileChooserDialog.Run;
//      FileChooserDialog.Destroy;
   }


Esto es lo que tengo del uso del FileChooserDialog y no compila ^^u
Me da error en la linea de FileChooserType.Open diciendo que el nombre "FileChooserType" Does not exist. :-? :-?
No es por tocar las pelotas, pero hay que poner con muchas comillas la palabra "Mono" y "Software libre" en la misma frase...
JanKusanagi escribió:No es por tocar las pelotas, pero hay que poner con muchas comillas la palabra "Mono" y "Software libre" en la misma frase...

Y que tiene que ver esto con mi problema ¿?¿?
Yo no uso Mono porque sea libre uso Mono porque el profesor quiere que usemos Mono, Usamos GTK# porque no quiere que usemos WindowsForms y usamos debian (en clase) porque no quiere windows.
Son los gustos del profesor y yo me amoldo simplemente...

En casa uso Maverick Meerkat envez de Lenny porque es mi casa y lo prefiero... El clase usamos el Monodevelop una version antigua (la de los repositorios de debian que peta mucho...) y en casa uso una mas nueva.
Por desgracia no he debido de instalar bien monodoc porque no me va y no puedo consultar informacion o_oU...

La cosa es que es mi primer contacto grafico en programacion desde SWING (en java) y por ende el primero en C# y no lo controlo en absoluto y pido un poquito de ayuda nada mas no dialogos morales sobre si es o no abierto...

Gracias.
klausus escribió:
JanKusanagi escribió:No es por tocar las pelotas, pero hay que poner con muchas comillas la palabra "Mono" y "Software libre" en la misma frase...

Y que tiene que ver esto con mi problema ¿?¿?

Con tu problema nada, tiene que ver con que opino que Mono no corresponde realmente en el subforo de software libre, pero es eso, una opinion. Es un tema muy relativo y no soy moderador de todas maneras XD
Pero puedo opinar.

Sobre tu problema, sorry, ni idea, no podria interesarme menos el tema ^^


EDIT:
pido un poquito de ayuda nada mas no dialogos morales sobre si es o no abierto...

OK, no pides dialogos morales sobre si es o no abierto, pero por esa regla de tres podrias postear este hilo en PS3 o Manganime y quedarte tan ancho...
No voy a discutir sobre si mono es o no libre...

La cosa es que la especificacion del Lenguaje C# si lo es, mi programa que teoricamente estoy creando tb lo sera porque el codigo fuente lo puede ver cualquier y cualquiera lo puede cojer.
GTK es libre tambien.

No se yo considero que esta en buen sitio, si hubiera un subforo orientado solo a programacion lo habria metido ahi pero como no lo hay entre lo que hay actualmente este es el mas adecuado creo yo...
Porque preguntar sobre GTK por ejemplo en general no lo veo muy Logico.
(disclaimer: hace eones que no uso Gtk#. Pero uso a diario Gtk y Gtkmm)

Yo lo que no tengo muy claro es exactamente qué problema tienes.

FileChooserDialog es un diálogo como otro cualquiera. Es decir, tiene un 'run()' que devuelve (simplificando mucho) si el usuario pulsó Ok o Cancel. Una vez compruebes que pulsó Ok, puedes usar 'get_filename' (no se cómo será en Gtk#) para obtener el path del fichero.

Una vez tienes el path del fichero obtienes el TextBuffer del TextView con 'get_buffer' y copias allí los contenidos del fichero.

Sin más datos... no te puedo ayudar más...
Ferdy escribió:(disclaimer: hace eones que no uso Gtk#. Pero uso a diario Gtk y Gtkmm)

Yo lo que no tengo muy claro es exactamente qué problema tienes.

FileChooserDialog es un diálogo como otro cualquiera. Es decir, tiene un 'run()' que devuelve (simplificando mucho) si el usuario pulsó Ok o Cancel. Una vez compruebes que pulsó Ok, puedes usar 'get_filename' (no se cómo será en Gtk#) para obtener el path del fichero.

Una vez tienes el path del fichero obtienes el TextBuffer del TextView con 'get_buffer' y copias allí los contenidos del fichero.

Sin más datos... no te puedo ayudar más...

Si, mas o menos te entiendo por encima el problema es que no consigo hacer que se abra el dialogo de seleccion falla algunos de los parametro y me estoy volviendo loco @_@
Si quizá pudiera ver el código del callback en cuestión.... es que tengo la bola de cristal estropeada. (leñe, la de tiempo que hace que no decía esto)

- ferdy
Ferdy escribió:Si quizá pudiera ver el código del callback en cuestión.... es que tengo la bola de cristal estropeada. (leñe, la de tiempo que hace que no decía esto)

- ferdy


Tengo 2 archivos llamados MainWindow.cs (de ahi que sea virtual) uno dentro de gtk-gui que lo crea solo el Monodevelop el en cual solo hay una linea referente a lo que nos interesa:

MainWindow.cs (gtk-gui)
      this.Action_Abrir.Activated += new global::System.EventHandler (this.OnActionAbrirActivated);


Y el otro que es el que edito yo;

Main Window.cs
   protected virtual void OnActionAbrirActivated (object sender, System.EventArgs e)
   {
      FileChooserDialog file = new FileChooserDialog("Seleccione Archivo",
                                                     this,
                                                     FileChooserType.Open,
                                                     Stock.Cancel,ResponseType.Cancel,
                                                     Stock.Ok,ResponseType.Ok
                                                     );
//      FileChooserDialog.Run;
//      FileChooserDialog.Destroy;
   }


Realmente si comento todo lo que hay dentro del OnActionAbrirActivated la aplicacion compila sin problemas (es normal xD), pero cuando trato de usar el FileChooserDialog lo debo de crear/llamar mal.
Ya voy avanzando =3

MainWindow.cs
   protected virtual void OnActionAbrirActivated (object sender, System.EventArgs e)
   {
      FileChooserDialog file = new FileChooserDialog("Seleccione Archivo",
                                                     this,
                                                     FileChooserAction.Open,
                                                     Stock.Ok,ResponseType.Ok,
                                                     Stock.Cancel,ResponseType.Cancel);
      
      if (file.Run() == (int)ResponseType.Ok)
      {
         Console.WriteLine("Boton Aceptar");
         StreamReader leer = File.OpenText(file.Filename);
         
         while(true)
         {
            string linea = leer.ReadLine();
            if (linea == null) break;
            Console.WriteLine(linea);
         }
         
         leer.Close();
      }
      file.Destroy();
   }
   
   protected virtual void OnActionAbrirButtonActivated (object sender, System.EventArgs e)
   {
      OnActionAbrirActivated(sender,e);
   }


Ya he conseguido usar el FileChooserDialog, gracias Ferdy.

Ahora solo me queda introducir el texto leido en el textview porque actualmente lo saco con un console.writeline();
Ptf... venga, que es muy fácil: 'view.Buffer.Text = contenido_del_fichero;'

Deberías acostumbrarte a darle un buen repaso a la documentación para hacer los deberes. Como ves, está todo ahí. Sobre todo con cosas tan básicas.

- ferdy
Ferdy escribió:Ptf... venga, que es muy fácil: 'view.Buffer.Text = contenido_del_fichero;'

Deberías acostumbrarte a darle un buen repaso a la documentación para hacer los deberes. Como ves, está todo ahí. Sobre todo con cosas tan básicas.

- ferdy


Ahh estaba yo por mi cuenta mirando informacion... no andaba del todo desencaminado estaba creando un buffer para hacer un textview = new TextView(TextBuffer buffer);
sin duda lo tuyo es muy simple O.Ouu y mejor.

Yo no sabia que existia el Buffer.Text sin duda tengo que mirarme y mucho la documentacion...

El problema esque hasta ahora solo usabamos el MSDN (ya que usabamos C# en modo consola y porque la documentacion de monodoc segun el profesor esta incompleta...) y ahora que nos hemos metido en gtk... pues como que en msdn poco ^^u

Y no nos ha dado ningun sitio web para consultar documentacion pero me apunto la web que me has pasado de Mono Documentation y mirare ahi...

Gracias.


PD: Ya que estamos, subo el proyecto por si alguien quiere verlo porque este empezando como yo... He añadido la opcion de guardar de paso.

Edit:

Añado una mejora (En proceso de desarrollo, aun no terminado) del projecto PTextView, ahora tiene un Notebook (Tabs, Pestañas)... Bueno estoy en ello... de momento tiene 1.

Y de paso mi version de una calculadora "simplona" un tanto especial o curiosa ;D

12 respuestas