GTK+/Dicas para escrever aplicações GTK: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Etiquetas: Esvaziamento Editor Visual
 
Linha 1:
<br />
 
=== Introdução ===
Uma boa prática para construir aplicações em GTK é utilizar o [https://wiki.gnome.org/Apps/Builder GNOME BUILD], uma IDE que ajuda a escrever e construir aplicações baseadas no [https://www.gnome.org GNOME]. Nesta parte do livro vamos construir uma simples aplicação em GTK sem utilizar o GNOME BUILD pois não é o intuito deste livro, veremos quais são as melhores práticas e padrões no desenvolvimento de aplicações baseadas no GTK.
 
<br />
 
=== Diretiva de Diretórios da Aplicação. ===
Antes de começarmos a codificar nossa aplicação GTK, temos que preparar nosso sistema de diretórios de arquivos do nosso sistema. Esta prática facilita a manutenção do sistema e agrega determinados padrões de desenvolvimento de projetos. Vamos começar criando uma pasta raiz com o nome do nosso projeto, e dentro desta pasta vamos criar outra com o nome SRC que conterá os arquivos do sistema.
 
 
Exemplo:
 
* '''/home/SUA_PASTA_PESSOAL''' ou '''C:/MEUSDOCUMENTOS'''
** /'''ProjetoGTK'''
*** '''/SRC'''
 
 
Agora dentro da pasta '''SRC''' vamos criar mais duas pasta, a '''UI''' onde ficara nossos arquivos de interface gráfica do sistema e a pasta '''GUI''' onde armazenaremos nossos arquivo '''.c''' e '''.h'''.
 
 
Exemplo:
 
* '''/SRC'''
** '''/UI'''
** '''/GUI'''
 
Agora já temos nosso sistema de diretórios básico pronto, nosso próximo passo é começar a codificar nosso sistema.
 
<br />
 
=== Codificando a aplicação. ===
 
==== O arquivo main.c. ====
Com nosso sistema de diretórios pronto vamos começar a codificar nosso primeiro arquivo do sistema, o arquivo '''main.c'''. Ele será a entra do sistema e também será responsável por chamar nossa aplicação. <syntaxhighlight lang="c">
//arquivo main.c
//duvida sobre o codigo gtk.help.pt@gmail.com
 
#include <gtk/gtk.h>
 
#include "mpg_app.h"
 
int main (int argc, char* argv[])
{
return g_application_run (G_APPLICATION (mpg_app_new ()), argc, argv);
}
</syntaxhighlight>''Salve o arquivo com o nome '''main.c''' dentro da pasta '''/SRC''' na raiz do projeto.''
 
==== Os arquivos mpg_app.h e mpg_app.c. ====
Após codificar o arquivo '''main.c,''' vamos codificar os arquivos '''mpg_app.h''' e '''mpg_app.c'''. As letras iniciais do nome dos arquivos podem ser qualquer uma de sua escolha, em nosso exemplo foram utilizados as iniciais '''mpg_''', que correspondem a "'''meu programa gtk'''", por padrão a maioria dos projetos [https://www.gnome.org GNOME] utilizam três letras para representar o nome da aplicação, por exemplo: GNOME CALENDAR utiliza as letras '''gcl_'''.
 
Este é um padrão que muitas aplicações [https://www.gnome.org GNOME] fazem uso por isto de preferencia para estes modelos quando for desenvolver uma aplicação GTK.<syntaxhighlight lang="c">
//arquivo mpg_app.h
//duvida sobre o codigo gtk.help.pt@gmail.com
 
#ifndef __MPG_APP_H__
#define __MPG_APP_H__
 
#include <gtk/gtk.h>
 
#define MPG_TYPE_APP (mpg_app_get_type())
G_DECLARE_FINAL_TYPE (MpgApp, mpg_app, MPG, APP, GtkApplication)
 
MpgApp* mpg_app_new(void);
 
#endif // __MPG_APP_H__
</syntaxhighlight>''Salve o arquivo com o nome '''mpg_app.h''' dentro da pasta '''/SRC/GUI'''.''<syntaxhighlight lang="c">
//arquivo mpg_app.c
//duvida sobre o codigo gtk.help.pt@gmail.com
 
#include "mpg_app.h"
#include "mpg_window.h"
 
struct _MpgApp{
GtkApplication parent;
};
 
G_DEFINE_TYPE (MpgApp, mpg_app, GTK_TYPE_APPLICATION);
 
static void
mpg_app_activate (GApplication *app)
{
MpgWindow *window;
window = mpg_window_new (MPG_APP (app));
gtk_window_present (GTK_WINDOW (window));
}
 
static void
mpg_app_init (MpgApp *self)
{
 
}
 
static void
mpg_app_class_init (MpgAppClass *klass)
{
G_APPLICATION_CLASS (klass)->activate = mpg_app_activate;
}
 
MpgApp*
mpg_app_new (void)
{
return g_object_new (MPG_TYPE_APP, "application-id", "org.gnome.MPG", "flags",
G_APPLICATION_HANDLES_OPEN, NULL);
}
 
</syntaxhighlight>''Salve o arquivo com o nome '''mpg_app.c''' dentro da pasta '''/SRC/GUI'''.''
==== Os Arquivos mpg_window.h e mpg_window.c. ====
Vamos codificar os arquivos mpg_window.h e mpg_window.c, este arquivo vai conter a janela principal do nosso sistema. Por padrão a maioria dos programas [https://www.gnome.org GNOME] tem apenas uma janela principal para o sistema, onde as funcionalidades do sistema são inseridas e disponibilizadas para os usuário.<syntaxhighlight lang="c">
//arquivo mpg_window.h
//duvida sobre o codigo gtk.help.pt@gmail.com
 
#ifndef __MPG_WINDOW_H__
#define __MPG_WINDOW_H__
 
#include <gtk/gtk.h>
#include "mpg_app.h"
 
#define MPG_TYPE_WINDOW (mpg_window_get_type())
G_DECLARE_FINAL_TYPE (MpgWindow, mpg_window, MPG, WINDOW, GtkApplicationWindow)
 
MpgWindow* mpg_window_new (MpgApp *app);
 
#endif // __MPG_WINDOW_H__
 
</syntaxhighlight>''Salve o arquivo com o nome '''mpg_window.h''' dentro da pasta '''/SRC/GUI'''.''