Суббота, 20.04.2024, 13:48
Opensource and other ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Наш сайт
Наш опрос
Оцените мой сайт
Всего ответов: 1
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Первое Glade#-приложение 

Шаг 1. Что такое Glade#?

Glade# - это набор связей с libglade на языке C#, которые позволяют легко создавать GUI-приложения используя визуальные средства и сохранять их в формате, который приложение сможет использовать во время выполнения, чтобы создать интерфейс. На данный момент существует две среды для генерирования Glade-файлов:

Что такое Glade-файлы?

Glade-файлы представляют собой GUI в GTK+, сохраняя сюда все атрибуты и свойства, используя XML-формат. Например, файл "gui.glade" может иметь следующий вид:

<!--*- mode: xml -*-->

<glade-interface>

<widget class="GtkWindow" id="window1">

<property name="visible">True</property>
<property name="title" translatable="yes">Glade Window</property>

<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>

<property name="modal">False</property>
<property name="default_width">256</property>

<property name="default_height">256</property>
<property name="resizable">True</property>

<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>

<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>

<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>

<property name="focus_on_map">True</property>

<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">

<property name="visible">True</property>
<property name="can_focus">True</property>

<property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
<property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>

<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>


<child>
<widget class="GtkLayout" id="layout1">
<property name="visible">True</property>

<property name="width">400</property>
<property name="height">400</property>

<property name="hadjustment">0 0 400 10 212.4 236</property>
<property name="vadjustment">0 0 400 10 212.4 236</property>


<child>
<widget class="GtkLabel" id="label1">
<property name="width_request">38</property>

<property name="height_request">17</property>
<property name="visible">True</property>

<property name="label" translatable="yes">label1</property>
<property name="use_underline">False</property>

<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>

<property name="wrap">False</property>
<property name="selectable">False</property>

<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>

<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>

<property name="single_line_mode">False</property>
<property name="angle">0</property>

</widget>
<packing>
<property name="x">96</property>
<property name="y">88</property>

</packing>
</child>

<child>
<widget class="GtkButton" id="button1">

<property name="width_request">60</property>
<property name="height_request">27</property>

<property name="visible">True</property>
<property name="can_focus">True</property>

<property name="label" translatable="yes">button1</property>
<property name="use_underline">True</property>

<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>

</widget>
<packing>
<property name="x">88</property>
<property name="y">168</property>

</packing>
</child>
</widget>
</child>
</widget>
</child>

</widget>

</glade-interface>

Файл .glade содержит в себе всю необходимую информацию для того, чтобы библиотека libglade могла воссоздать GUI.

Шаг 2. Интеграция glade файлов с нашей программой

Подразумевается что .glade файл уже создан, или при помощи Glade, или при помощи Stetic.

В нашем примере мы предполагаем, что GUI был сохранен в файл gui.glade, который содержит описание окна window1, кнопки button1 и метки label1.

Нам нужно будет создать новый указатель на Gtk# и Glade#, а затем создать новый класс и точку входа, с которой начинается наша программа

// file: glade.cs
using System;
using Gtk;
using Glade;
public class GladeApp

{
public static void Main (string[] args)

{
new GladeApp (args);
}

public GladeApp (string[] args)
{

Application.Init();

Glade.XML gxml = new Glade.XML (null, "gui.glade", "window1", null);
gxml.Autoconnect (this);
Application.Run();
}

}

Как скомпилировать?

Теперь мы должны скомпилировать исходный файл glade.cs указывая пространство имен для Glade, которое находится в библиотеке glade-sharp. Команда компиляции следующая:



$ mcs -pkg:glade-sharp -resource:gui.glade glade.cs


Командой mcs -pkg:glade-sharp мы создаем программу glade.exe, а опция -resource внедряет файл gui.glade в исполняемую программу.

Передавая null как первый параметр в конструктор Glade.XML, мы сообщаем библиотеке libglade загружать glade-файл из ресурсов, как вариант использования конструктора, файл может быть загружен из файловой системы, что особенно полезно тогда, когда Вы не хотите перекомпилировать GUI приложение после каждого изменения glade-файла.

Если мы запускаем программу наш GUI может открыться, однако, нажимая на кнопки, Вы не добьетесь эффекта, потому как мы не назначали событий виджету, определенному в gui.glade файле. Изучив следующую секцию, Вы научитесь это делать.

Шаг 3. Как использовать Glade# в моем коде

Как обращаться к виджетам определенным в gui.glade?

Для доступа к объектам, определенным в gui.glade файле, Вы должны знать имя объекта и его тип, и только тогда добавлять его в C# код. Делается это следующим образом (обратите внимание на атрибут [Widget]):



[Widget]
Тип имя;

Применяем это определение к нашему примеру как следует ниже в коде:



using System;
using Gtk;
using Glade;
public class GladeApp
{
public static void Main (string[] args)
{
new GladeApp (args);
}

public GladeApp (string[] args)
{

Application.Init();
Glade.XML gxml = new Glade.XML (null, "gui.glade", "window1", null);
gxml.Autoconnect (this);
Application.Run();
}

[Widget]
Button button1;
[Widget]
Label label1;
}

Как добавить событие?

Для добавления событий Вам необходимо следовать примеру кода ниже. Вы также можете добавлять события из Glade.



using System;
using Gtk;
using Glade;
public class GladeApp
{
public static void Main (string[] args)
{
new GladeApp (args);
}

public GladeApp (string[] args)
{

Application.Init();
Glade.XML gxml = new Glade.XML (null, "gui.glade", "window1", null);
gxml.Autoconnect (this);
Application.Run();
}

[Widget]
Button button1;
[Widget]
Label label1;
public void OnPressButtonEvent( object o, EventArgs e)
{
Console.WriteLine("Button press");
label1.Text = "Mono";
}
}

Впоследствии мы увидим готовый код использования событий для объектов, указанных в gui.glade файле.

Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright Mixim's home corporation © 2024Бесплатный хостинг uCoz