Mono – Linux Forms – GTK# – Linux

Publicado: 29 de agosto de 2014 em Linux

Na verdade o termo “Linux Forms” não existe é só uma boa chamada para o post fazendo alusão ao Windows Forms, o termo correto é Gtk# (g-t-k-sharp). O  Gtk# é um Toolkit de interface gráfica do usuário para Mono e .Net. O projeto Gtk# liga o GTK+ toolkit e bibliotecas variadas do GNOME, permitindo o desenvolvimento de aplicações gráficas GNOME totalmente nativas utilizando os frameworks de desenvolvimento Mono e o .NET.

O que é GTK+ ?

O GTK+, ou o GIMP Toolkit, é um conjunto de ferramentas multi-plataforma para criar interfaces gráficas de usuário. Oferecendo um conjunto completo de widgets, o GTK+ é adequado para vários tipos de projetos desde pequenas ferramentas até para suítes completas de aplicativos.

GTK: http://www.gtk.org/

Desenvolvendo com  o GTK#

Tenha em mente que o projeto nativo para criar aplicativos equivalentes ao Windows Forms para Linux é o Gtk# apesar do Mono também suportar projetos criados no Windows Forms. O Gtk# e Windows Forms não são iguais possuindo varias diferenças entre si, desde o modo para criar aplicações gráficas em Design Time, até nas instruções C# que manipulam seus Widgets.

Hello World GTK#

1 – Para criar um projeto visual Mono para Linux utilizando Gtk#, abra o Mono Develop e crie um projeto GTK#, assim que a solução e o projeto forem criados, clique na unidade de código C# chamada MainWindow.cs e clique no botão Design:

Gtk# - Forms

Gtk# – Forms

 

2 – Os componentes do GTK# ao contrario do Visual Studio (Windows Forms) não herdam a classe Point e não possuem a propriedade Location, então você precisa aloja-los dentro de Widgets do tipo Containers. Na janela de propriedades arraste um componente Vbox para o formulário:

Vbox

Vbox

3 – Na parte superior do Vbox, adicione um componente Menubar, na parte inferior adicione um componente Statusbar, adicione no meio um componente Table, crie os menus de modo similar ao Visual Studio e coloque um componente Label dentro do Statusbar, delete uma de suas colunas sobressalentes, dica, use o combobox da IDE quando precisar navegar pelos Widgets:

Menubar, Statusbar e Table

Menubar, Statusbar e Table

4 – Dentro das células da tabela coloque os componentes Labels, Entrys e Togglebutton, você pode adicionar ou apagar linhas e colunas na tabela clicando com o botão direito do mouse sobre ela e pode alinha-las utilizando a barra de tarefas do lado do combobox que mostra o componente com foco no qual você esta utilizando:

Layout - Widgets

Layout – Widgets

5 – Na janela de propriedades, clique na aba Signals que é equivalente aos eventos no Visual Studio, Clique no botão e expanda a opção Button Signals, dê um duplo clique na propriedade Clicked, um evento equivalente ao evento OnClick do Visual Studio será criado na sua unidade de código C#:

Signals - Eventos

Signals – Eventos

6 – Complete o código de sua unidade de código C# com o código encontrado logo abaixo, atente-se que criamos uma caixa de mensagem para o evento de clique do botão e apesar da sintaxe ser igual as instruções para realizar esta tarefa são diferentes, compile o código e teste o programa:

C#  - Linux

C# – Linux

Você verá que apesar das diferenças o  Mono funciona bem para Linux, é fácil e rápido desenvolver interfaces visuais de nível profissional. O Mono gera um arquivo executável com a extensão .exe para Linux, apesar da extensão não significar nada para o sistema operacional ainda assim é fácil para usuários leigos identificar programas executáveis para Linux.

Exemplo:

Neste exemplo criamos um aplicativo Mono utilizando o modelo de projeto Gtk#, você pode terminar o código implementando os eventos para os botões dos menus.

C#

using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{
	public MainWindow () : base (Gtk.WindowType.Toplevel)
	{
		Build ();
	}

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

	protected void OnTogglebutton1Clicked (object sender, EventArgs e)
	{

		// Cria uma caixa de menssagem (win forms = MessageBox)

                 String texto = "Nome: " + entry1.Text +
                                "\nSobrenome: " + entry2.Text +
                                "\nEndereço: " + entry3.Text;

	         // Cria dialogo
		MessageDialog dlg = new MessageDialog (null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, texto);

		// chama dialogo
		dlg.Run ();

		// Destroi diaglogo
		dlg.Destroy();

		throw new NotImplementedException ();
	}
}
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s