mirror of
https://github.com/alexkay/spek.git
synced 2025-04-19 01:47:37 +03:00
Use GtkInfoBar
This commit is contained in:
parent
2c76ad3d8e
commit
ed15610270
8
dist/debian/copyright
vendored
8
dist/debian/copyright
vendored
@ -13,14 +13,10 @@ Upstream Author:
|
||||
Copyright:
|
||||
|
||||
For everything not noted below:
|
||||
Copyright (C) 2010-2011 Alexander Kojevnikov
|
||||
|
||||
For src/spek-message-bar.*:
|
||||
Copyright (C) 2010 Alexander Kojevnikov
|
||||
Copyright (C) 2008 Novell, Inc
|
||||
Copyright (C) 2010-2012 Alexander Kojevnikov
|
||||
|
||||
For src/spek-pipeline.*:
|
||||
Copyright (C) 2010-2011 Alexander Kojevnikov
|
||||
Copyright (C) 2010-2012 Alexander Kojevnikov
|
||||
Copyright (C) 2007-2009 Sebastian Dröge
|
||||
Copyright (C) 2006 Stefan Kost
|
||||
Copyright (C) 1999 Erik Walthinsen
|
||||
|
@ -1,7 +1,6 @@
|
||||
[encoding: UTF-8]
|
||||
data/spek.desktop.in.in
|
||||
src/spek-audio.c
|
||||
src/spek-message-bar.vala
|
||||
src/spek-pipeline.vala
|
||||
src/spek-preferences-dialog.vala
|
||||
src/spek-preferences.vala
|
||||
|
@ -4,7 +4,6 @@ spek_SOURCES = \
|
||||
spek.vala \
|
||||
spek-audio.c \
|
||||
spek-fft.c \
|
||||
spek-message-bar.vala \
|
||||
spek-pipeline.vala \
|
||||
spek-platform.c \
|
||||
spek-preferences.vala \
|
||||
|
@ -1,82 +0,0 @@
|
||||
/* spek-message-bar.vala
|
||||
*
|
||||
* Copyright (C) 2010 Alexander Kojevnikov <alexander@kojevnikov.com>
|
||||
*
|
||||
* Spek is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Spek is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Spek. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This class is heavily influenced by its namesake from Banshee.
|
||||
* The original code by Aaron Bockover is (c) 2008 Novell, Inc.
|
||||
*/
|
||||
|
||||
using Gtk;
|
||||
|
||||
namespace Spek {
|
||||
public class MessageBar : HBox {
|
||||
private Label label;
|
||||
private Gtk.Window win;
|
||||
|
||||
public MessageBar (string message) {
|
||||
homogeneous = false;
|
||||
spacing = 0;
|
||||
border_width = 6;
|
||||
|
||||
win = new Gtk.Window (WindowType.POPUP);
|
||||
win.name = "gtk-tooltips";
|
||||
win.ensure_style ();
|
||||
win.style_set.connect (() => style = win.style);
|
||||
|
||||
label = new Label (null);
|
||||
label.use_markup = true;
|
||||
label.set_markup (message);
|
||||
label.ellipsize = Pango.EllipsizeMode.END;
|
||||
label.xalign = 0f;
|
||||
label.activate_link.connect (uri => { Platform.show_uri (uri); return true; });
|
||||
var button_box = new HBox (false, 0);
|
||||
button_box.spacing = 3;
|
||||
var close_button = new Button ();
|
||||
close_button.image = new Gtk.Image.from_stock (Stock.CLOSE, IconSize.MENU);
|
||||
close_button.relief = ReliefStyle.NONE;
|
||||
close_button.clicked.connect (() => hide ());
|
||||
|
||||
pack_start (label, true, true, 0);
|
||||
pack_start (button_box, false, false, 0);
|
||||
pack_start (close_button, false, false, 0);
|
||||
}
|
||||
|
||||
private bool changing_style = false;
|
||||
protected override void style_set (Style? previous_style) {
|
||||
if (changing_style) {
|
||||
return;
|
||||
}
|
||||
|
||||
changing_style = true;
|
||||
style = win.style;
|
||||
label.style = style;
|
||||
changing_style = false;
|
||||
}
|
||||
|
||||
protected override bool expose_event (Gdk.EventExpose event) {
|
||||
if (!is_drawable ()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var cr = Gdk.cairo_create (event.window);
|
||||
var color = style.bg[StateType.NORMAL];
|
||||
cr.set_source_rgb (color.red / 65535.0, color.green / 65535.0, color.blue / 65535.0);
|
||||
cr.rectangle (allocation.x, allocation.y, allocation.width, allocation.height);
|
||||
cr.fill ();
|
||||
return base.expose_event (event);
|
||||
}
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@ namespace Spek {
|
||||
public class Window : Gtk.Window {
|
||||
|
||||
private UIManager ui;
|
||||
private MessageBar message_bar;
|
||||
private InfoBar info_bar;
|
||||
private Spectrogram spectrogram;
|
||||
private string description;
|
||||
private string cur_dir;
|
||||
@ -97,7 +97,18 @@ namespace Spek {
|
||||
((ToolItem) ui.get_widget ("/ToolBar/FileSave")).is_important = true;
|
||||
((ToolItem) ui.get_widget ("/ToolBar/HelpAbout")).is_important = true;
|
||||
|
||||
message_bar = new MessageBar (_("A new version of Spek is available on <a href=\"http://www.spek-project.org\">www.spek-project.org</a>"));
|
||||
info_bar = new InfoBar.with_buttons (Stock.OK, ResponseType.OK);
|
||||
var label = new Label (null);
|
||||
label.use_markup = true;
|
||||
label.set_markup (_("A new version of Spek is available on <a href=\"http://www.spek-project.org\">www.spek-project.org</a>"));
|
||||
label.ellipsize = Pango.EllipsizeMode.END;
|
||||
label.xalign = 0f;
|
||||
label.activate_link.connect (uri => { Platform.show_uri (uri); return true; });
|
||||
label.show();
|
||||
var content_area = (Container) info_bar.get_content_area();
|
||||
content_area.add(label);
|
||||
info_bar.message_type = MessageType.INFO;
|
||||
info_bar.response.connect(() => info_bar.hide());
|
||||
|
||||
spectrogram = new Spectrogram ();
|
||||
cur_dir = Environment.get_home_dir ();
|
||||
@ -117,7 +128,7 @@ namespace Spek {
|
||||
var vbox = new VBox (false, 0);
|
||||
vbox.pack_start (menubar, false, true, 0);
|
||||
vbox.pack_start (toolbar, false, true, 0);
|
||||
vbox.pack_start (message_bar, false, true, 0);
|
||||
vbox.pack_start (info_bar, false, true, 0);
|
||||
vbox.pack_start (spectrogram, true, true, 0);
|
||||
add (vbox);
|
||||
menubar.show_all ();
|
||||
@ -330,7 +341,7 @@ namespace Spek {
|
||||
}
|
||||
|
||||
if (version != null && version > Config.PACKAGE_VERSION) {
|
||||
Idle.add (() => { message_bar.show_all (); return false; });
|
||||
Idle.add (() => { info_bar.show_all (); return false; });
|
||||
}
|
||||
|
||||
// Update the preferences.
|
||||
|
Loading…
x
Reference in New Issue
Block a user