Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2015, 15:02   #1
Gilorn
Новичок
Джуниор
 
Регистрация: 10.09.2015
Сообщений: 1
По умолчанию Gtk# - как сделать кастомный titlebar?

Приветствую.
Подскажите, как можно реализовать на Gtk# кастомный titlebar/windowbar/windowcaption как в Firefox (http://screenshots.s32cdn.com/13/122...oxPortable.png) ? То есть своя кнопочка в левом углу, взамен системного меню.
Я нашел вот только такой пример - http://www.gtkforums.com/viewtopic.php?f=3&t=55299 - но он на Перле.
Удалось перевести на C#:
Код:
using System;
using Gtk;

namespace Test
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			Application.Init ();
			MainWindow win = new MainWindow ();

			win.Decorated = false;
			win.SetPosition(WindowPosition.CenterAlways);
			win.SetSizeRequest (350, 150);
			win.BorderWidth = 10;

			VBox layout = new VBox (false, 0);
			Button b = new Button ("gtk-ok");

			b.Clicked += delegate(object sender, EventArgs e) {
				shutdown(win);
			};

			layout.PackStart (b, true, false, 0);
			win.Add (layout);

			win.ShowAll ();

			Application.Run ();
		}

		public static void shutdown(Window sender)
		{			
			Dialog dlg = new Gtk.Dialog ("You wont see me", sender, DialogFlags.DestroyWithParent, Gtk.Stock.Ok);
			dlg.HasSeparator = false;
			dlg.Decorated = false;
			dlg.SetSizeRequest (600, 500);

			var layout = dlg.ActionArea;

			HBox hbox = new HBox (false, 0);

			Button sysmenu = new Button ("gtk-open");

			Alignment a1 = new Alignment (0.0f, 0.5f, 0.0f, 0.0f);

			Label titlebar = new Label ("My browser title");

			HBox hbox2 = new HBox (false, 0);

			Alignment a2 = new Alignment (1.0f, 0.5f, 0.0f, 0.0f);

			Button b1 = new Button ("gtk-ok");
			Button b2 = new Button ("gtk-cancel");
			Button b3 = new Button ("gtk-quit");

			TextView browser = new TextView ();

			hbox.PackStart (sysmenu, false, false, 0);
			a1.Add (titlebar);
			hbox.PackStart (a1, true, false, 0);
			hbox2.PackStart (b1, false, false, 0);
			hbox2.PackStart (b2, false, false, 0);
			hbox2.PackStart (b3, false, false, 0);
			a2.Add (hbox2);
			hbox.PackStart (a2, false, false, 0);
			layout.PackStart (hbox, false, false, 0);
			layout.PackStart (browser, true, true, 0);

			layout.ShowAll ();
			dlg.Run ();


		}
	}
}
но в результате получаю такую фигню - https://gyazo.com/fba83daa3db540e8b055e414498fd617
Помогите пожалуйста, кому не сложно.

P.S. И смежный вопрос, а почему у Dialog в Gtk# нету метода ContentArea или GetContentArea (вот тут в примере он например используется - https://github.com/mono/gtk-sharp/bl.../DemoDialog.cs) ? Или это ActionArea (по крайней мере Xamarin Studio мне только это подсказывает)?

Последний раз редактировалось Gilorn; 09.10.2015 в 15:19.
Gilorn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Wp кастомный текстовый дамп garry1989 WordPress и другие CMS 0 25.06.2015 14:15
Кастомный интерфейс Начинающий_кодер C++ Builder 1 15.02.2015 13:08
Как сделать меню 3-его уровня используя библиотеку Gtk+ Rom@rio Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 0 26.10.2014 22:53
Gtk(g_signal_connect) как связать с вводом в edit WebbMan Qt и кроссплатформенное программирование С/С++ 1 03.11.2012 13:27
Черные уголки titlebar cyber_guest Win Api 3 04.11.2010 18:44