Programando un "Hola Mundo" con MonoDevelop


MonoDevelopDespués de habernos empapado con un poco de información sobre Mono, C# y Gtk#, es la hora de empezar a probar MonoDevelop (0.11 es la versión que tengo). Así que voy a crear una aplicación tipo "Hola Mundo" con MonoDevelop.

Primero, podemos lo podemos hacer sin Gtk#, osea con puro C#, lo cual es bastante fácil, solo es necesario crear un archivo de texto con las siguientes lineas:

using System;

namespace HolaMundo
{
  class MainClass
  {
    static void Main()
    {

      Console.
WriteLine("Hola Mundo!!!");
    }

  }
}

Guardamos el archivo con algún nombre, por ejemplo: "holamundo.cs". La extensión "cs" es la usada para archivos de "C Sharp".

Por último es necesario compilarlo y ejecutarlo de la siguiente forma:

[nexus@Develop ~]$ mcs holamundo.cs
[nexus@Develop ~]$ ./holamundo.exe
Hola Mundo!!!

Con la primera línea compilamos el archivo "holamundo.cs" por medio de "mcs" (Mono C Sharp). En la segunda línea ejecutamos el resultado de la compilación "holamundo.exe". Si, efectivamente, por compatibilidad con .NET el binario tiene una extensión "exe" como en Windows, sin embargo esto es solo por compatibilidad, ya que realmente este archivo es "CIL" que a su vez es interpretado por Mono en Linux o .NET framework en Windows. Por último la tercera línea muestra el resultado de la ejecución.

Pero la idea de este artículo es la de usar MonoDevelop, por lo que desde ahora lo usaré para crear un "HolaMundo" con una interacción de un botón.

Lo primero que hay que hacer es crear una nueva solución, la cual se puede crear de forma automatizada desde el menú "Archivo" y "Nuevo Proyecto...", la cuál nos abrirá una ventana llamada "Nueva Solución", desde ahí es necesario seleccionar un "Proyecto Gtk# 2.0" y ponerle un nombre a la solución, por ejemplo "HolaMundo", por último pulsamos sobre "New" para que MonoDevelop se encargue de crear todos los archivos necesarios para comenzar a trabajar.


De entre todos los archivos de la solución, existen dos que son importantes "Main.cs" y "MainWindow.cs" los cuales se pueden ver en la pestaña de "Solución"


Para empezar a trabajar con el diseño de la nueva aplicación se debe seleccionar "MainWindow.cs" y pulsar sobre el botón "Diseñador" en la parte inferior de esa ventana. Con lo anterior lograremos ver la venta que podemos usar para el diseño.


Para los que nunca han trabajado con diseñadores para Gtk, es importante aclarar que Stetic no trabaja como el diseñador de formularios de MS Visual Studio, ya que este no se basa en coordenadas para la construcción y dibujo de los controles, mas bien es necesario ocupar los Widgets (componentes) "HBox" y "VBox" e imaginarnos como quedaría el formulario usando tablas.


A lo que me refiero es que los controles o componentes deben estar dentro de alguno de estos u otros contenedores. Para ser más gráfico, en este ejemplo quiero usar dos controles; un "Label" y un "Button" y quiero que al pulsar sobre el botón aparezca en la etiqueta un "Hola Mundo". Por lo tanto, necesito pensar en el orden en que estarán los controles, por lo que para esta pequeña prueba solo necesito una tabla de una columna y dos filas usando el "VBox" y después incluyendo los controles en su fila correspondiente.


Ahora es necesario ponerle nombre a los controles, esto se logra usando las pestaña de "Propiedades de Componente", es tan simple como seleccionar el control y modificar su propiedades de forma muy fácil.

En este proyecto uso los siguientes valores:

Para el "MainWindow"
    Window Title: Proyecto Hola Mundo
    Window Position: Centered

Para el "label"
    Widget name: texto
    Label: Presiona el botón
    Justification: Center

Para el "button"
    Widget name: boton
    Buton Type: Text and Icon
    Icon: gtk-yes
    Label: Aceptar


El siguiente paso a seguir es declarar la acción del botón, que cuando se de un click este haga algo, para realizar esta declaración es necesario seleccionar el botón y después ir a la pestaña "señales" en las "Propiedades del componente". Ahí podremos ver un listado de comportamientos de control, buscamos el que se usa al pulsar el botón que se llama "Clicked". Al lado de este evento veremos un mensaje que dice "Click here to add a new handler", así que le hago caso y le doy un click para ponerle un nombre... se me ocurre por ejemplo: "boton_Clicked", osea "boton" ya que es el nombre del control y agregarle el sufijo del nombre del evento, para que nuestro código tenga coherencia.


Ya casi termino de usar el diseñador para empezar a programar, lo único que hace falta es seleccionar el "label" y pulsar sobre el botón "Asociar a Campo", y hay que hacer exactamente lo mismo con el "button", esto sirve para que MonoDevelop declare el uso de los controles en la clase.


Listo, ahora es tiempo de ir a trabajar sobre el código pulsando sobre el botón "Código Fuente" del "MainWindow.cs" y veremos lo siguiente:

using System;
using Gtk;

public class MainWindow: Gtk.Window
{
  protected Gtk.Label texto;
  protected Gtk.Button boton;

  public MainWindow (): base ("")
  {
    Stetic.Gui.Build (this, typeof(MainWindow));
  }

  protected void OnDeleteEvent (object sender, DeleteEventArgs a)
  {
    Application.Quit ();
    a.RetVal = true;
  }

  protected virtual void boton_Clicked(object sender, System.EventArgs e)
  {
  }

}

Veremos varias diferencias entre la versión de cuando iniciamos el proyecto a este momento. Las mas significativas son:

protected virtual void boton_Clicked(object sender, System.EventArgs e)
{
}

Estas lineas fueron agregadas por MonoDevelop al momento de nombrar el evento "Clicked".

protected Gtk.Label  texto;
protected Gtk.Button boton;

Estas lineas fueron agregadas cuando pulse sobre el botón "Asociar a Campo" seleccionado el "label" y el "button".

Ahora si, es el momento de escribir código!!!

protected virtual void boton_Clicked(object sender, System.EventArgs e)
{
  texto.Text = "Hola Mundo!!!";
}

Ya quedó, eso fue todo, únicamente una sola linea de código (agregar la tercera linea) y la aplicación ya esta lista para ser compilada, así de fácil, ¿no es impresionante?. Podemos probar como funciona nuestra aplicación de forma rápida, pulsando sobre el icono de ejecutar.


Y veremos nuestra aplicación funcionando correctamente!!!


Esta ejecución genera el ejecutable automáticamente, por lo que podemos ver el binario compilado en su lugar correspondiente:

[nexus@Develop Projects]$ ls holamundo/bin/Debug/
holamundo.exe  holamundo.exe.mdb

Por lo que me entra la duda, ¿esto funcionará en windows?... voy a probar.

Ya tengo instalado el .NET framework 1.0, 1.1 y 2.0 así que no creo tener problemas con eso, sin embargo es necesario instalar el runtime de Gtk# para que la aplicación pueda correr correctamente, por lo que es necesario bajarlo desde la página de Gtk# para Windows e instalarlo.

Ya, es momento de ejecutar la aplicación y efectivamente, funciona correctamente.


Por el momento eso es todo, en los siguientes articulos exploraré algunos Widgets y  como usarlos desde MonoDevelop.

El proyecto y código relacionado están disponibles en el siguiente archivo.

AdjuntoTamaño
HolaMundo.tar.gz5 KB



Imagen de Anónimo

Excelente, los felicito, seguí los pasos al pie de la letra y me funcionó correctamente.

Ahora estoy jugando a crear una pequeña aplicacion que necesito.

Imagen de Anónimo

es la primera vez que hago una aplicacion en mi ubuntu!

Gracias por el tutorial ;D

Imagen de nexus
Que bueno que te fue de utilidad, te invito a que sigas leyendo los demás artículos que he escrito sobre MonoDevelop

Si descubres algo interesante, en este lugar tienes un foro abierto donde más personas podrán leerte y entre todos aprender.

Saludos
Imagen de Anónimo

Xurras!!!... llevo mucho tiempo esperando encontrar una explicación "for dummies" y no había conseguido nada.
Sincesramente, muchas gracias.

Imagen de Anónimo

Hola me parece que esta super bien, estoy trabajando mi tesis en monodevelop y es de mucha ayuda

Imagen de nexus
Que bueno que te fué de utilidad, si en el camino, descubres cosas que creas sean interesante documentar, aquí dispones de un espacio para publicarlo.
Imagen de Anónimo

He seguido los pasos y fue mi primera aplicacion en monodevelop y en linux en general

Imagen de nexus
Que bueno que te fué de utilidad, de igual forma te invito a que si vas descubriendo cosas que a tu parecer sean interesantes documentar, dispones del espacio en este sitio.

Saludos
Imagen de Anónimo

esto mismo se peude hacer con lenguaje asp.. o asp.net meramente ?

Imagen de Anónimo

Hola buenas, he estado haciendo el tutorial, pero no puedo hacer lo que me pide la antepenultima captura de asociar a campo, en el monodedelop que tengo(0.16) no viene, o puede que la haya quitado toqueteando, gracias de antemano, no se si ha llegado uno que he mandado antes si es asi perdon.

Imagen de nexus
Hola

En la versión que tienes de MonoDevelop (0.16) no existe (y no necesitras) el botón "Asociar a Campo", ya que en la version que tu tienes, la delcaración de campos se realiza de forma automática, con lo cual hacemos más eficiente el "diseño" de nuestra aplicación.

Saludos
Imagen de Anónimo

Necesito realizar una aplicacion en donde requiero de no. botones ,label y etry COMO visualizar registros de bases de datos con que lo hago

Imagen de nexus
Te recomiendo le des una revisada a este otro artículo:

Conectar a MySQL con MonoDevelop
Imagen de lmca2000

Tengo en mi maquina en la partición Windows instalado mono, GTK, Visual NET 2005 y otras que no recuerdo, he logrado hacer una prueba con las librerías GTK y mono, anda todo perfecto.
Lo anterior como introducción, ahora he hecho la prueba que aquí se describe y funciona perfecto con monodevelop pero que pasa si quiero abrir este proyecto en visual punto net, ¿esto se puede?.

Imagen de nexus
Si se puede, si abres tu proyecto con MonoDevelop, abre el menú "Proyecto" y selecciona la opción "Exportar...". Se abrirá una ventana de dialogo donde te pide el formato del archivo, selecciona "Visual Studio .NET 2005", selecciona un lugar donde exportar y pulsa en aceptar.

Espero ser de ayuda, saludos
Imagen de lmca2000

Gracias excelente conciso y preciso, la exportación la hizo sin problemas, visual estudio 2005 levantó la exportación sin problemas.

Imagen de lmca2000

Algunos detalles respecto con la exportacion a Visual 2005 que quizás esté en otra hebra, resulta que al principio no me reconocía las referencias y las tuve que referenciar a mano, ¿existe alguna restricción con respecto a las referencias que genera el monodevelop?, por otro lado me genero un error después de haber reconocido las referencias no lograba encontrar el archivo “libgtk-win32-2.0-0.dll”, así que leyendo algunos foros decidí colocar todas las librerías que se encuentran en “c:\Archivos de Programa\mono-1.9\bin” en donde visual estudio genera el ejecutable, y ahí recién funcionó, tengo en la variable de entorno PATH la ruta de estas librerías (así debiera funcionar) pero solo funcionó copando las librerias a la carpeta del ejecutable, ¿existe algo más que se deba hacer?

Imagen de Anónimo

Tengo instalado el Gtk# for windows y el .net framework, pero al momento de correrlo me sale en consola algo asi como :

Excepcion no contrlada: System.IO.FileNotFoundException: No se puede cargar el archivo o ensamblado 'gtk-sharp, Version 2.12.0.0, Culture= neutral, PublicKeyToken= 35e10195dab3c99f' ni una de sus dependencias
.....

Dice mas letras pero sale demasiado rapido y no alcanzo a leer, me podrian ayudar???

Imagen de Anónimo

Tengo Ubuntu 8.10 con su MonoDevelop 1.
En "Parámetros GTK#" de las propiedades del proyecto solo puedo elegir la versión 2.12.0, en Windows tengo instalada la última de la página de GTK, pero creo que no llega a ser la 2.12.0 y ese es el problema.
Ahora lo estoy investigando, Alguien sabe si voy por buen camino? como puedo hacer aplicaciones multiplataforma con MonoDevelop si esto es así?

Imagen de Anónimo

En http://blackshell.usebox.net/archivo/1173.php se discute el problema, Miguel de Icaza se disculpa y el autor del post nos indica cual fue la solución que utilizó: básicamente utilizar una versión de gtk# anterior como se explica en http://www.monodevelop.com/MonoDevelop_1.0_Released#Visual_Designer_for_GTK.23 bajo el título Support for targeting multiple GTK# versions.
Espero que les sirva.

Imagen de Anónimo

Tengo instalado mono-1.9.1 con MonoDevelop 1.0 con Gtk# 2.8.5 en mi Kubuntu 8.04 hardy Heron, al momento de la creacion de Gtk# 2.0 Project, me sale el siguiente mensaje:

Exception occurred: Could not load type 'Pango.EllipsizeMode, pango-sharp, Version=2.6.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f'

System.TypeLoadException: Could not load type 'Pango.EllipsizeMode, pango-sharp, Version=2.6.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f'
  at Stetic.Registry.GetType (System.String typeName, Boolean throwOnError) [0x00000] 
  at Stetic.EnumDescriptor..ctor (System.Xml.XmlElement elem) [0x00000] 
  at Stetic.WidgetLibrary.Load (System.Xml.XmlDocument objects) [0x00000] 
  at Stetic.AssemblyWidgetLibrary.Load () [0x00000] 
  at Stetic.Registry.RegisterWidgetLibrary (Stetic.WidgetLibrary library) [0x00000]

Se crea el proyecto pero no habre los .cs saliendome el mismo error, muy ilustrativo tu tuto, aver si me puedes dar una manito.

Imagen de nexus

Revisa si tienes libgtk2.0-cil

sudo apt-get install libgtk2.0-cil

Ojalá que eso sea lo que te afecte.

Saludos

Imagen de Anónimo

Exception occurred: ya no aparece mas, tenias razon me faltaba esa libreria.

A manera de comentario, un problema que tuve al ejecutar fue: que no encontraba el archivo gmcs en el /usr/bin, hice una copia del archivo donde instale /opt/mono-1.9.1/bin y soluciono el problema.

Muchas gracias por la pronta respuesta espero sigas subiendo tutos como este que son de muchisima ayuda para los que recien se estan metiendo en el mundo de mono como yo.

Imagen de rukitas

hola.
me gustaria saber, si en monodevelop se pueden hacer reportes como en visual studio con cristal report.
de ante mano muchas gracias.

Imagen de nexus

Hola rukitas, púes en realidad si se pueden hacer reportes con MonoDevelop... el problema es que no se hace con la misma facilidad de CR.

Para poder hacer reportes decentes tendrás que hacer uso de herramientas externas como por ejemplo

fyiReporting RDL

También existe otro que he escuchado es muy bueno

Reportman

Saludos

Imagen de rukitas

hola.
ya no es porque, sino gracias por contestar.
muchas gracias.

Imagen de Anónimo

Hola como estas estuve siguiendo los pasos que indica el tutorial. pero tengo los siguiente inconvenientes:

- No me aparece la opcion "Asociar campos" tengo la version 1.0 Por lo que lei arriba creo que ya no hace falta..

- Cuando corro la aplicacion y hago clik sobre el boton inmediatamente se cierra la ventana y no veo el cambio.

Que puedo estar haciendo mal??? Muchas gracias

Enviar un comentario nuevo

  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Saltos automáticos de líneas y de párrafos.
Más información sobre opciones de formato

Captcha Image: you will need to recognize the text in it.
Igrese las letras que puede ver en la imagen superior