Программа glade для windows на русском

Glade — это бесплатная программа для визуального создания интерфейса на основе кроссплатформенной библиотеки GTK+. В любой программе необходимо создавать

Glade — это бесплатная программа для визуального создания интерфейса на основе кроссплатформенной библиотеки GTK+.

В любой программе необходимо создавать множество окон для взаимодействия с пользователям. Теоретически, все эти окна можно создать и отладить прямо в тексте программы, но это очень трудоемкое занятие. Для визуального создания окон и размещения виджетов обычно используется редактор интерфейса. Glade — это очень удобный и популярный редактор, который позволяет размещать виджеты GTK+ с помощью мыши.Особенностью редактора Glade является то, что пользовательские интерфейсы, разработанные в Glade, сохраняются в формате XML. Затем они могут загружены в приложение динамически с помощью объекта GtkBuilder. Формат XML понятен для человека, поэтому программист может при необходимости быстро внести изменения непосредственно в файл Glade.

Файлы Glade XML могут использоваться на многих языках программирования, включая C, C++, C#, Java, Perl, Python и другие.

Содержание

  • Запуск Glade
  • Работа с Glade
    • Шаг 1. Нажимаем на виджет «Окно».
    • Шаг 2. Нажимаем на виджет «Вертикальный контейнер»
    • Шаг 3. Добавляем виджеты
    • Шаг 4. Сохранить интерфейс
    • Шаг 5. Подключение к программе

Запуск Glade

Редактор Glade входит с состав сборки Си-экспресс. Для запуска нужно дважды щелкнуть на файле:

C:ProgGladebinglade-3.exe

откроется окно программы:

Окно программы разделено на три части. Слева находится список виджетов. В центре находится создаваемый интерфейс. Справа — свойства виджетов.

Работа с Glade

Перед началом работы нужно понять важный принцип библиотеки GTK+ — контейнеры для виджетов. Самая трудоемкая часть разработки интерфейса — это выравнивание и упорядочение виджетов внутри окна. Для этой цели в GTK+ используются контейнеры, которые выравнивают помещенные в них виджеты автоматически. Посмотрим, как это выглядит.

Шаг 1. Нажимаем на виджет «Окно».

На экране появляется главное окно программы.

Шаг 2. Нажимаем на виджет «Вертикальный контейнер»

Появляется окно с вопросом, сколько элементов в контейнере.

Предположим, что три элемента.

Шаг 3. Добавляем виджеты

Для добавления виджета в контейнер нужно сначала щелкнуть на виджет, а потом на нужное место контейнера.

Добавляем последовательно три виджета. :

  • Строка меню
  • Записная книжка
  • Горизонтальный контейнер

Да, контейнер можно размещать внутри контейнера. В нижний контейнер добавим три виджета «Кнопка».

Вот так быстро мы набросали интерфейс. При необходимости в правом меню мы можем задать названия элементов и другие свойства.

Шаг 4. Сохранить интерфейс

Нажмите «Файл — Сохранить» и дайте файлу имя «main.glade». Можно открыть это файл и убедиться, что это обычный XML-файл. Ниже фрагмент этого файла.

Шаг 5. Подключение к программе

Рассмотрим фрагмент программы для подключения интерфейса Glade:

// Описание виджета окна

GtkWidget   *window

// Описание объекта GtkBuilder

GtkBuilder  *builder;

// Создание объекта GtkBuilder

builder = gtk_builder_new ();

// Загрузка файла Glade

     gtk_builder_add_from_file(builder, «main.glade», NULL);

// Получение главного окна

window = GTK_WIDGET(gtk_builder_get_object(builder, «mainwindow»));

// Обработка завершения программы

g_signal_connect(G_OBJECT(window), «destroy», G_CALLBACK(gtk_main_quit), NULL);

// Загрузка сигналов объекта

gtk_builder_connect_signals (builder, NULL);

// Отображение окна

gtk_widget_show (window);

В этом фрагменте текста программы показан общий принцип подключения:

  1. Создать объект GtkBuilder
  2. Загрузить файл Glade в этот объект.
  3. Загрузить сигналы Glade в сигналы программы
  4. Отобразить объект

После загрузки файла Glade в программу все виджеты могут использоваться точно также, как любые виджеты GTK+.

Официальный сайт (eng): glade.gnome.org

Leader badge

Windows port of Glade 3. The latest version includes a stand-alone installer with bundled GTK+ 2.16.0 and libxml 2.7.3. Extra installers or zip files are not required. No changes to the Glade source were required to compile under mingw.

License

GNU Library or Lesser General Public License version 2.0 (LGPLv2), GNU General Public License version 2.0 (GPLv2)

How intelligent field teams win at retail. Icon

Real-time insights on retail execution and sales performance. Smarter merchandising, promotion, and sales execution tools for your field team. Everything you need to win at the shelf.

User Ratings


5.0

out of 5 stars

★★★★★

★★★★

★★★

★★

ease
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5

0 / 5

features
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5

0 / 5

design
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5

0 / 5

support
1 of 5
2 of 5
3 of 5
4 of 5
5 of 5

0 / 5

Additional Project Details

Languages

Thai, Tamil, Korean, French, Ukrainian, Dutch, Polish, Lithuanian, Albanian, Macedonian, Latvian, Czech, Finnish, Italian, Hebrew, Catalan, Bengali, Greek, Marathi, Vietnamese, English, Portuguese, Slovak, Chinese (Traditional), Estonian, Galician, Bulgarian, Swedish, Telugu, Turkish, Hindi, Malay, Norwegian, Chinese (Simplified), Danish, Panjabi, German, Japanese, Spanish, Russian, Arabic, Hungarian, Basque (Euskara)

Intended Audience

Developers

User Interface

Win32 (MS Windows), GTK+

Programming Language

C

2004-01-05

��������: tuxedo-live.blogspot.com

���������� ������ ������ ����� �� mono-project.com (http://www.mono-project.com/GtkSharpBeginnersGuide)

������� �� �������: va1e

����������


1. �����������
1.1 ��� ����� GTK#?

2. ���������
2.1 ����������/��������� GTK#
2.2 ������ ��������� GTK#
2.3 GTK# ��� Glade#

3. ������ GTK# ����������
3.1 ��� 1. ��������� �������
3.2 ��� 2. �������� ����� � ������
3.3 ��� 3. ������������
3.4 ��� 4. ���������� ������������ ���������� GUI
3.5 ��� 5. ������������ ����
3.6 ��� 6. ���������� �������

4. ������ Glade# ����������
4.1 ��� 1. ��� ����� Glade#
4.1.1 ��� ����� ����� glade?
4.1.2 �� ��� ������ ����� .glade?
4.2 ��� 2. ���������� Glade ������ � ����� �����������
4.2.1 ��� ��������������?
4.3 ��� 3. ��� ������������ Glade# � ���� ����

4.4 ��� ���������� � �������� ������������ � gui.glade
4.5 ��� �������� �������
4.5.1 ������ � ������ ����������� ��� ��������

1. �����������

��� ������ �������� ������������ ��� ���������� GTK# �������������. ��� ������� ���, ��� ������� �� ����� �� �������������� ����������� ���������������� ��������� (����� GUI) ��� ������ GTK#. ������������ ����� �������� � GTK+ API �� ����� ��������� �� ������ ������ (C, C++, Perl, Python) ��� �� ������ ���� ������ ��������, �.�. �� ��������� ������ �������� �������� ���������� �� C# � ����� Mono. ��� ������ ��� �� ������������ �� ������� ������������� Glade � libglade ��� �������� ����������� �������� ������������ ����������������� ����������.

1.1 ��� ����� GTK#?

����� ������, gtk# — ��� ������� ��� gtk+, ������������������ GUI �����������.

gtk+ — ��� ������������������� ������ ��� �������� GUI. ������������ ������ ����� ��������, gtk+ �������� � ��������� ��������: �� ����������� ������� �� ������ ���������� ������ �����������.

(from the gtk+ website (http://www.gtk.org/))

������� gtk+ �������� � ����� X ��������, Direct Framebuffer’�� � ������������ � Microsoft Windows NT. ���������� gtk+ �������� �� Linux, ��� ��� �������� ������� ��� ���������� �������� ������� ����� GNOME. gtk+ ������� ����������� �� ��� ������������ Linux, � ��������� �������� ��� ����������� Windows NT. (� 2000 �������� �����������, ���� ��� ������ �� ��������)

������������ gtk+ �� Mac OS X ��������������, �� ���������� ������������������ ������ �����. ��� ��� � �������.

���� �� �������� ���������������� ���������� ������� � ���, ��� GTK# ������� Mono ��� ������. ��� �������. GTK# ����� ����������� �� ����� .NET-����������� �����. GTK# ��������� ����������� � MS .NET � Mono �����������, �� ����� ����� ���� �������� � ����� ��������� ���������� �����. ��� ��������, ��� ���� �� ������ ���������� �� GTK# � ������ ��������� ��� � Windows, �� ������ ���������� ������ ������ � GTK# � �������������� ����� MS, ��� ���������� ��� � ����� Mono ��� Windows.

2. ���������

2.1 ����������/���������

������ ����, ������� ���������� ������� — ��� ������� GTK# � ���������� ���.

Linux, MacOSX, FreeBSD � ������: ��������� ������� ��������� ������� gtk-sharp, mono � ����� ������������.

aptitude install mono gtk-sharp2

��� Debian-based �������������.
� SuSE Linux �������� ������ ������ � YaST. ���� �� ��� � ������������, ����� ����� �����(http://www.mono-project.com/Downloads) � ����������. ���� �� mono-project.com ��� ������� ��� ����� ���������, ����� ��� �������� �������������� �� ���������� ;)

Windows: �������������� Windows.Forms, �� ���� ����� � GTK =) [���������� ������]

2.2 ������ ��������� GTK#

���������� GTK#
GTK# ������� �� ��������� ������, ������ ������������� �������� ����������:

gtk-sharp (http://www.mono-project.com/monodoc/N:Gtk)
����� ������� gtk+ 2.x ��� �������� GUI

glib-sharp (http://www.mono-project.com/monodoc/N:Glib)
����� ������� glib 2.x, ������� ������������ �������������� ���������� ���� ��� gtk+ (��-GUI)

pango-sharp (http://www.mono-project.com/monodoc/N:Pango)
����� Pango, ��������������� ���������� ���������� � ���������� ������������� �������

atk-sharp (http://www.mono-project.com/monodoc/N:Atk)
����� � atk ����������

gdk-sharp (http://www.mono-project.com/monodoc/N:Gdk)
�������������� �������������� ��� «���������», ������������ gtk+

glade-sharp (http://www.mono-project.com/monodoc/N:Glade)
Glade# ��������� ��� ��������� ���������� Glade � ���������. ��� �������� ������� ���� �������� GTK# GUI.

art-sharp (http://www.mono-project.com/monodoc/N:Art)
���������� ��� ������ � ��������� �������� � ���������

rsvg-sharp (http://www.mono-project.com/monodoc/N:Rsvg)���������� ��������� SVG

gtk-dotnet (http://www.mono-project.com/monodoc/N:Gtk.DotNet)
���������� ������������ ���� Gtk# � System.Drawing

gnome-sharp (http://www.mono-project.com/monodoc/N:Gnome)
����� GNOME

gnomevfs-sharp (http://www.mono-project.com/monodoc/N:GnomeVfs)
����� ������, �� MIME �����, ����������� � ������ ��������� ���������� GNOME’� � �������� �������

vte-sharp (http://www.mono-project.com/monodoc/N:Vte)
����� � ������������� ��������� VTE

gconf-sharp (http://www.mono-project.com/monodoc/N:GConf)
����� � ������� �������� ������������ � GNOME

gtkhtml-sharp (http://www.mono-project.com/monodoc/T:Gtk.HTML)
����� � ������������ HTML �������

������ ���������� �� �������� � �������� ����������� GTK#, �� ����������� ����������, ������ ��� ����� ��������� � GTK#: Gecko#, Gtksourceview#, Gsf#, Guile#, Gst# � dbus#.

2.3 GTK# ��� Glade#

����� ���� �������� �������� Mono, ��� ����� ������ �� ��������� — ����� ���������� ������������: gtk# ��� glade#. ��� ����� ��� ����� ������ ��� ����� glade# � ��� ����� gtk#. gtk# — ��� ���� ��� ���������� ������� � ������ ������. Glade# ��������� GTK#, ����� ������� �������� ������������� GTK# � �������� �����������, �� glade# ������������� ��������� ������� � ��������� �� ��� XML ����. XML ���������� GUI ����� ���� ������������� ��� ������ Glade �������, ������ ������� WYSIWYG.

��� ����������� ���� Glade# — ������ �����. �� �������� ����� �� ���� ���������� ������������� ��������� ������������ ���� ��� GUI � ������ ������� ��������� ���������� � �������. �� ��������� �������� � ���, ��� ��� ����� �� ����������, Glade# �� ����� ��������� ��������� ����������� ���� (�������� ��������, ����������� ��������� ����� �����, ����������� �������). ������ ���� ����� ��� ������, ��� � ���������� ������ ����� ������������.

��� �������� ������������ � Glade# �� �������� �������� ��������� �� ���� ���������(http://nat.org/demos/gtksharp.html) ���� �������� (Nat Friedman)(http://nat.org), � ������� �� ������� ������� ����������� ���������� ����� �� ��������� �����.

3. ������ GTK# ����������

��� 1. ��������� �������

�� ������ ����������� ���� ���������. �������� Dr. Pepper � �������� ������� ������. ������, ������ �� ������.

��� 2. �������� ����� � ������

��� ������ ��� ����� ������� ����� ���������� ��� ���������� �������. (������������ Windows: ������� �� ����� ������������ ������� � �������� ����������, ����� �������� � ���������� �������� ����).

�������� shell (���� �� � Windows, �������� ���� ����� :) ����� ��������� -> Mono 1.x.x -> Mono Command Prompt. ��� ������������� ��������� ������ ���� � mono �����������.) ��������� � ������ ��� ��������� ����������. �� ����� ����� ������������ �������, ������� �������� �� ����������.

�������� � ����. �������� ���� ������� �������� (MonoDevelop, vi, emacs, notepad � �.�.) � �������� ����� ������ ������ (���� ��� ��������) ��� �������� ����� ������ ����. ��������� ���� ��� ������ «helloworld.cs».

��� 3. ������������ ����

� �������, ��� �� ��� ������� � C#, � ��� ���������� ���� �� ������� ������� ������� � ���������. �� ������ ������� ����� �����, ������������ Gtk# � ������� ����� ����� � ���� ���������. ��� ����� ��������� ���:

using System;
using Gtk;

public class GtkHelloWorld {

public static void Main() {
Console.WriteLine("HelloWorld");
}

}

��� ������ ��������� ������ ������� ��� ���. ������ ������ �� ����� ��������������� ������������. �������� �������� ���, �������� � ������� � �������� ������:

mcs -pkg:gtk-sharp-2.0 helloword.cs

��� ��� ��� ����������� csc ������������ � Windows �������� «-pkg:» ����� ���������� ����������. ����� ��������� �� ���� � csc, ������ ��� Mono ������ �� ���� Linux. ���� �������� ��������� ������� �� ������������� ����������� ������ gtk-sharp-2.0. �.�. ������� ���� ���� «gtk-sharp-2.0.pc», ������� �������� ������ � �������������� ���������� ��� ����� ������ (����� ������ ����������). �.�. �� �� ������ ������� «-r:gtk-sharp-2.0.dll -r:atk-sharp-2.0.dll -r:pango-sharp-2.0.dll ….» ������.

��� 4. ���������� ������������ ���������� GUI

������ ������� �������� ������� � ������ ����. ������ �������� «Console.WriteLine». ������, ��� �� ������� — �������� ����� ����. ��������� ��� ����������� ������ ��������� new Window � ����� ���������� (��� ������ ���� ����� main). ��� ���:

using System;
using Gtk;

public class GtkHelloWorld {

public static void Main() {
Application.Init();

//Create the Window

Window myWin = new Window("My first GTK# Application! ");
myWin.Resize(200,200);

//Create a label and put some text in it.

Label myLabel = new Label();
myLabel.Text = "Hello World!!!!";

//Add the label to the form
myWin.Add(myLabel);

//Show Everything

myWin.ShowAll();

Application.Run();
}
}

������ ������������ �������� ��� ��� �� ��� �� ������ ��� ������, � �������� ���������

mono HelloWorld.exe

� ����� �� �������� ���-�� ����� �����:

�� ��� �� � ������, ��?

������ ����, ������� �� ����� ��������, ��� ��, ��� � ������� �� ������������� System.Windows.Forms �� �� ������ ��� ��� ������ ���������� ������ � ����. ��������, �� �� ������ ‘myLabel.Left = 100’ ��� ‘myLabel.Width = 200’ ��� ���-�� �������� ��� ���������� ��������� ����� �� �����, �� ������ ����� ‘myWin.Add(…)’. � ��� ��� ������, ��� ‘Gtk.Window’ — ��� ������, ������� ����������� �� Bin, ��� ���������� ������� ������� �������� � ���������� Container.

������ ����� ����, ������� ����� ��� ��������������, ��� ������������� ��������� «Application.Init()» � «Application.Run()». ���� �� �����-���� ����� ������������ System.Windows.Forms ��� ���������� ������������� «Application.Run()» �� ������ �������. ������, ����� ���������� ����������� ��������� ������ ���� � �������� ������, ���������� ���������������. ������� «ShowAll()» �� ��������� ��� � ���������� ���������� ���������� ���� (������ �� ���������). ������� «Application.Init()» ������� �������� ���������� «�������» ������� ����������� �� Gtk.Windows � � ������ ����� ����������� «Application.Run()» ���������� ���� ���������� ��������� ����� ���������. ��� ��������� ���������� ���������� ���������� �� ��� ��� ���� �� ����� ������� ��� ����. ��� ������� ���������� �������� ���������� �� ������� Application.

��� 5. ������������ ����

�������� �� �������� �������� ���� «��� � ����� �������� ����� ������ �� ����, ���� ��� ����� ��������� ������ ���� ������?» �� ����� �� ��������, ��� Window ������������� ����� ��������� � ���� ������ ���� ������, �� ������ ��� �� ���� ����� ��������� � ���� ��������� ������ ��������. ��������� �� ���� �������� ����������� �� ���������� Gtk.Box, � � ��������� ������� �������� �� ����������. ������������ ������ Bin ����������� �������� �� �������-����������, ��� � ������ ������ �������, �� Bin ����� ��������� � ���� ������ ���� ������� ����������.

��� ���� ����� ��������� ������� ���������� �������� � ����� ����, �� ������ �������� �� ���� ���� �� ��������, ������� ����� ��������� � ���� ������ �������. ���������� ��������� ��������, ������� ����� ������ ���, �� �� �������� ������ ��������� �������: HBox(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.HBox), VBox(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.VBox) � �������� Table(http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.Table).

��� 6. ���������� �������

��� ������ ����������� �� ‘Widget (http://www.go-mono.com/docs/index.aspx?link=T%3aGtk.Box)’ ������������� ��������� �������:

  • ButtonPressEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ButtonPressEvent)
  • ButtonReleaseEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ButtonReleaseEvent)
  • ScrollEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ScrollEvent)
  • MotionNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.MotionNotifyEvent)
  • DeleteEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.DeleteEvent)
  • DestroyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.DestroyEvent)
  • ExposeEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ExposeEvent)
  • KeyPressEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.KeyPressEvent)
  • KeyReleaseEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.KeyReleaseEvent)
  • EnterNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.EnterNotifyEvent)
  • LeaveNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.LeaveNotifyEvent)
  • ConfigureEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ConfigureEvent)
  • FocusInEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.FocusInEvent)
  • FocusOutEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.FocusOutEvent)
  • MapEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.MapEvent)
  • UnmapEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.UnmapEvent)
  • PropertyNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.PropertyNotifyEvent)
  • SelectionClearEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.SelectionClearEvent)
  • SelectionRequestEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.SelectionRequestEvent)
  • SelectionNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.SelectionNotifyEvent)
  • ProximityInEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ProximityInEvent)
  • ProximityOutEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ProximityOutEvent)
  • VisibilityNotifyEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.VisibilityNotifyEvent)
  • ClientEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.ClientEvent)
  • NoExposeEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.NoExposeEvent)
  • WindowStateEvent (http://www.go-mono.com/docs/monodoc.ashx?link=F%3aGtk.Widget.WindowStateEvent)

������ �� ���� ������� ����� ���� ���������� ����������� ������������ �������. ��������:

public static void HandlerMethod(object obj, EventArgs args)

������ ��������� ������� ������� �� ������:

public static void ButtonPressHandler(object obj, ButtonPressEventArgs args)

ButtonPressEventArgs — ��� ����� ����������� �� EventArgs. ����� ButtonPressEventArgs, ��� � ������ ������ � gtk#, ��������� �������� Gtk.Event (��� ������ �� Gtk.Event) � EventArgs.

���� Gdk.Event:

  • EventType.Nothing
  • EventType.Delete
  • EventType.Destroy
  • EventType.Expose
  • EventType.MotionNotify
  • EventType.ButtonPress
  • EventType.TwoButtonPress
  • EventType.ThreeButtonPress
  • EventType.ButtonRelease
  • EventType.KeyPress
  • EventType.KeyRelease
  • EventType.EnterNotify
  • EventType.LeaveNotify
  • EventType.FocusChange
  • EventType.Configure
  • EventType.Map
  • EventType.Unmap
  • EventType.PropertyNotify
  • EventType.SelectionClear
  • EventType.SelectionRequest
  • EventType.SelectionNotify
  • EventType.ProximityIn
  • EventType.ProximityOut
  • EventType.DragEnter
  • EventType.DragLeave
  • EventType.DragMotion
  • EventType.DragStatus
  • EventType.DropStart
  • EventType.DropFinished
  • EventType.ClientEvent
  • EventType.VisibilityNotify
  • EventType.NoExpose
  • EventType.Scroll
  • EventType.WindowState
  • EventType.Setting

��������, ��� ������������� ������� Gdk.Event �� ����� ������������ ����� ���:

using Gdk;
...
widget.ButtonPressEvent += new ButtonPressEventHandler(ButtonPressHandler);
...
private void ButtonPressHandler(object obj, ButtonPressEventArgs args) {

// single click
if (args.Event.Type == EventType.ButtonPress) {

...
}
// double click
if (args.Event.Type == EventType.TwoButtonPress) {

...
}

// the left button was used
if (args.Event.Button == 1) {

...
}
}

� ������� ���� �� ������ ������� ��� ���������� ���� �� ��������� ������� ������ ��� ��� ��� ������� ����.

4. ������ Glade# ����������

��� 1. ��� ����� Glade#

Glade# — ��� ����� ������ � libglade �� ����� C#. ��������� ����� ��������� GUI ���������� ��������� ���������� �������� � ��������� �� � �������, ������� ���������� ������ ������������ �� ����� ����������, ����� ������� ���������. �� ������ ������ ���������� ��� ����� ��� ������������� glade ������: Glade(http://glade.gnome.org/) � ������� Stetic(http://mysterion.org/~danw/blog/2005/03/stetic).

4.1.1 ��� ����� glade �����?

�����, ���������� � XML �������, ������� ������������ ����� GUI � GTK+, �������� ���� ��� ��������� � ��������.

4.1.2 �� ��� ������ ����� .glade?

����: 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. ����� � Stetic ����� ���������� ����� (http://mysterion.org/~danw/blog/2005/03/steticzilla.html).

� ���������� ������ ������� �� ������������, ��� 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();
}

}

4.2.1 ��� ��������������?

������ �� ������ �������������� �������� ���� 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# � ���� ����

4.4 ��� ���������� � �������� ������������ � 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;
}

4.5 ��� �������� �������

��� ���������� ������� ��� ���������� ��������� ������� ���� ����. �� ����� ������ ��������� ������� �� 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);

button1.Clicked += OnPressButtonEvent;

Application.Run();
}

[Glade.Widget]
Button button1;

[Glade.Widget]
Label label1;

public void OnPressButtonEvent( object o, EventArgs e)

{
Console.WriteLine("Button press");
label1.Text = "Mono";
}

}

������������ �� ������ ������� ��� ������������� ������� ��� ��������, ��������� � gui.glade �����.

4.5.1 ������ � ������ ����������� ��� ��������

  • Gtk# Screencast (http://nat.org/demos/gtksharp.html) — ��������� ���� ��������, ������� ���� ������������� ������������� Glade � C#/Mono
  • Gtk# website (http://gtk-sharp.sourceforge.net/) — ������������ ������� Gtk#
  • Glade website (http://glade.gnome.org/) — ������������ ������� Glade
  • Glade# and Gecko# (http://developer.novell.com/wiki/index.php/Glade-Sharp_and_Gecko-Sharp) — ������� ����������, ������������ ��� ������� ������� ���-������� ��������� Gtk#, Glade# � Gecko#
  • Steticzilla (http://mysterion.org/~danw/blog/2005/03/steticzilla.html) — ��������� danw (http://mysterion.org/~danw/blog/) ������������ ������� ����������� Mozilla-����������� �������� ��������� Stetic
  • Glade — ������� ���������� ���������� � Gnome2 (http://www.gotmono.com/docs/gnome/bindings/glade/glade.html) — ������ ����������� �� Glade#, �������� ������ ��� �������� .glade ����� � .exe

P.S. ������ �� ����� ������������ � Mono: �����, ��������� ������ — ������������� IronPython, Moma — Mono Migration Analysis Tool, Games, Second Life
TurboCharging Linux with Mono

Понравилась статья? Поделить с друзьями:
  • Программа games for windows live скачать бесплатно
  • Программа partition magic для windows 10 торрент
  • Программа paragon migrate os to ssd для windows 10
  • Программа flow не работает windows 10
  • Программа pages для windows скачать бесплатно