spek

Acoustic spectrum analyser
git clone http://git.hanabi.in/repos/spek.git
Log | Files | Refs | README

commit ed15610270f5927583f67513d1c2c96767700351
parent 2c76ad3d8ef25a84b1f25ef77881ec7c51d1bedd
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Sun,  5 Aug 2012 14:40:57 -0700

Use GtkInfoBar

Diffstat:
Mdist/debian/copyright | 8++------
Mpo/POTFILES.in | 1-
Msrc/Makefile.am | 1-
Dsrc/spek-message-bar.vala | 82-------------------------------------------------------------------------------
Msrc/spek-window.vala | 19+++++++++++++++----
5 files changed, 17 insertions(+), 94 deletions(-)

diff --git a/dist/debian/copyright b/dist/debian/copyright @@ -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 diff --git a/po/POTFILES.in b/po/POTFILES.in @@ -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 diff --git a/src/Makefile.am b/src/Makefile.am @@ -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 \ diff --git a/src/spek-message-bar.vala b/src/spek-message-bar.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); - } - } -} diff --git a/src/spek-window.vala b/src/spek-window.vala @@ -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.