banshee r3814 - in trunk/banshee: . src/Backends/Banshee.GStreamer src/Backends/Banshee.Gnome src/Backends/Banshee.Hal src/Backends/Banshee.Unix src/Core/Banshee.Core src/Core/Banshee.Services src/Core/Banshee.ThickClient src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Banshee.Gui.Widgets src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui src/Core/Banshee.ThickClient/Banshee.Preferences.Gui src/Dap/Banshee.Dap src/Dap/Banshee.Dap.MassStorage src/Dap/Banshee.Dap.Mtp src/Extensions/Banshee.AudioCd src/Extensions/Banshee.Bookmarks src/Extensions/Banshee.Lastfm src/Extensions/Banshee.MultimediaKeys/Resources src/Extensions/Banshee.NowPlaying src/Extensions/Banshee.PlayQueue/Resources src/Extensions/Banshee.Podcasting src/Libraries/Hyena.Gui src/Libraries/Hyena.Gui/Hyena.Widgets
- From: abock svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3814 - in trunk/banshee: . src/Backends/Banshee.GStreamer src/Backends/Banshee.Gnome src/Backends/Banshee.Hal src/Backends/Banshee.Unix src/Core/Banshee.Core src/Core/Banshee.Services src/Core/Banshee.ThickClient src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Banshee.Gui.Widgets src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui src/Core/Banshee.ThickClient/Banshee.Preferences.Gui src/Dap/Banshee.Dap src/Dap/Banshee.Dap.MassStorage src/Dap/Banshee.Dap.Mtp src/Extensions/Banshee.AudioCd src/Extensions/Banshee.Bookmarks src/Extensions/Banshee.Lastfm src/Extensions/Banshee.MultimediaKeys/Resources src/Extensions/Banshee.NowPlaying src/Extensions/Banshee.PlayQueue/Resources src/Extensions/Banshee.Podcasting src/Libraries/Hyena.Gui src/Libraries/Hyena.Gui/Hyena.Widgets
- Date: Wed, 23 Apr 2008 23:58:38 +0100 (BST)
Author: abock
Date: Wed Apr 23 22:58:38 2008
New Revision: 3814
URL: http://svn.gnome.org/viewvc/banshee?rev=3814&view=rev
Log:
2008-04-23 Aaron Bockover <abock gnome org>
* src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs:
Allow setting the parent/transient for window
* src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinDetailsDialog.cs:
Added a simple details dialog for an addin
* src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs:
Better tile UI and added enable/disable and details buttons to the tile;
actually enable/disable addins when the button is pressed - BE WARNED
this has not been tested too much yet
* src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs: Added a Wrap
property that will allow text to be ellipsized to one line if unset
* src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs:
* src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs:
* src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs:
Updated to use the new WrapLabel
* src/Libraries/Hyena.Gui/Hyena.Widgets/TextViewLabel.cs: Removed now
that we have a proper WrapLabel
* src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml:
* src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml:
* src/Backends/Banshee.Hal/Banshee.Hal.addin.xml:
* src/Backends/Banshee.Unix/Banshee.Unix.addin.xml:
* src/Core/Banshee.Core/Banshee.Core.addin.xml:
* src/Core/Banshee.Services/Banshee.Services.addin.xml:
* src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml:
* src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml:
* src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml:
* src/Dap/Banshee.Dap/Banshee.Dap.addin.xml:
* src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml:
* src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml:
* src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml:
* src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml:
* src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml:
* src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml:
Updated addin metadata
Added:
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinDetailsDialog.cs
Removed:
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/TextViewLabel.cs
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml
trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml
trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.addin.xml
trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.addin.xml
trunk/banshee/src/Core/Banshee.Core/Banshee.Core.addin.xml
trunk/banshee/src/Core/Banshee.Services/Banshee.Services.addin.xml
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp
trunk/banshee/src/Core/Banshee.ThickClient/Makefile.am
trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml
trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml
trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.addin.xml
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml
trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml
trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml
trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml
trunk/banshee/src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml
trunk/banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.mdp
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs
trunk/banshee/src/Libraries/Hyena.Gui/Makefile.am
Modified: trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml
==============================================================================
--- trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml (original)
+++ trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,5 +1,13 @@
-<Addin id="Banshee.GStreamer">
-
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.GStreamer"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ category="required:Backends"
+ description="GStreamer multimedia services including playback, CD ripping, and transcoding."
+ defaultEnabled="true">
+
<Dependencies>
<Addin id="Banshee.Services" version="1.0" />
</Dependencies>
Modified: trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml (original)
+++ trunk/banshee/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,11 +4,8 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
- name="GNOME Providers"
- category="Platform"
- description="Backend providers for the GNOME platform. Includes GConf general GNOME integration."
- author="Aaron Bockover"
- url="http://banshee-project.org/"
+ category="required:Backends"
+ description="Backend providers for the GNOME platform. Includes GConf support and general GNOME integration."
defaultEnabled="true">
<Dependencies>
Modified: trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.addin.xml
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.addin.xml (original)
+++ trunk/banshee/src/Backends/Banshee.Hal/Banshee.Hal.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,11 +4,8 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
- name="HAL Hardware Manager"
- category="Platform"
+ category="required:Backends"
description="Provides hardware support through HAL."
- author="Aaron Bockover"
- url="http://banshee-project.org/"
defaultEnabled="true">
<Dependencies>
Modified: trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.addin.xml
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.addin.xml (original)
+++ trunk/banshee/src/Backends/Banshee.Unix/Banshee.Unix.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,11 +4,8 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
- name=""
- category=""
- description=""
- author=""
- url="http://banshee-project.org/"
+ category="required:Backends"
+ description="Provides POSIX/UNIX support, including IO."
defaultEnabled="true">
<Dependencies>
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Core.addin.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Core.addin.xml (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Core.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,4 +1,14 @@
-<Addin id="Banshee.Core" version="1.0" isroot="true">
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.Core"
+ isroot="true"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ category="required:Core"
+ description="Provides low level non-GUI utilities."
+ url="http://banshee-project.org/"
+ defaultEnabled="true">
<ExtensionPoint path="/Banshee/Platform/IOProvider">
<ExtensionNode name="IOProvider"/>
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Services.addin.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Services.addin.xml (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Services.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,5 +1,14 @@
-<Addin id="Banshee.Services" version="1.0" isroot="true">
-
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.Services"
+ isroot="true"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ category="required:Core"
+ description="Provides non-GUI utilities and services."
+ defaultEnabled="true">
+
<ExtensionPoint path="/Banshee/ServiceManager/Service">
<ExtensionNode name="Service"/>
</ExtensionPoint>
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs Wed Apr 23 22:58:38 2008
@@ -41,16 +41,24 @@
get { return accel_group; }
}
- public BansheeDialog (string title) : base ()
+ public BansheeDialog (string title) : this (title, null)
+ {
+ }
+
+ public BansheeDialog (string title, Window parent) : base ()
{
Title = title;
BorderWidth = 5;
Visible = false;
HasSeparator = false;
- GtkElementsService service = ServiceManager.Get<GtkElementsService> ();
- if (service != null) {
- TransientFor = service.PrimaryWindow;
+ if (parent == null) {
+ GtkElementsService service = ServiceManager.Get<GtkElementsService> ();
+ if (service != null) {
+ TransientFor = service.PrimaryWindow;
+ }
+ } else {
+ TransientFor = parent;
}
WindowPosition = WindowPosition.CenterOnParent;
Added: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinDetailsDialog.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinDetailsDialog.cs Wed Apr 23 22:58:38 2008
@@ -0,0 +1,96 @@
+//
+// AddinDetailsDialog.cs
+//
+// Author:
+// Aaron Bockover <abockover novell com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Text;
+using Mono.Addins;
+using Mono.Addins.Setup;
+using Mono.Addins.Description;
+using Mono.Unix;
+using Gtk;
+
+using Hyena.Widgets;
+using Banshee.Gui.Dialogs;
+
+namespace Banshee.Gui.Widgets
+{
+ public class AddinDetailsDialog : BansheeDialog
+ {
+ public AddinDetailsDialog (Addin addin, Window parent) : base (String.Empty, parent)
+ {
+ SetDefaultSize (400, -1);
+
+ AddinHeader info = SetupService.GetAddinHeader (addin);
+
+ HBox box = new HBox ();
+ box.BorderWidth = 10;
+ box.Spacing = 10;
+ VBox.PackStart (box, false, false, 0);
+
+ Image image = new Image ();
+ image.IconName = "package-x-generic";
+ image.IconSize = (int)IconSize.Dialog;
+ image.Yalign = 0.0f;
+
+ box.PackStart (image, false, false, 0);
+
+ StringBuilder builder = new StringBuilder ();
+
+ builder.AppendFormat ("<b><big>{0}</big></b>\n\n", GLib.Markup.EscapeText (addin.Name));
+ builder.AppendFormat (GLib.Markup.EscapeText (addin.Description.Description)).Append ("\n\n");
+
+ builder.Append ("<small>");
+
+ builder.AppendFormat ("<b>{0}</b> {1}\n\n", Catalog.GetString ("Version:"),
+ GLib.Markup.EscapeText (addin.Description.Version));
+
+ builder.AppendFormat ("<b>{0}</b> {1}\n\n", Catalog.GetString ("Authors:"),
+ GLib.Markup.EscapeText (addin.Description.Author));
+
+ builder.AppendFormat ("<b>{0}</b> {1}\n\n", Catalog.GetString ("Copyright/License:"),
+ GLib.Markup.EscapeText (addin.Description.Copyright));
+
+ if (info.Dependencies.Count > 0) {
+ builder.AppendFormat ("<b>{0}</b>\n", Catalog.GetString ("Extension Dependencies:"));
+ foreach (AddinDependency dep in info.Dependencies) {
+ builder.Append (GLib.Markup.EscapeText (dep.Name)).Append ('\n');
+ }
+ }
+
+ builder.Append ("</small>");
+
+ WrapLabel label = new WrapLabel ();
+ label.Markup = builder.ToString ();
+ box.PackStart (label, true, true, 0);
+
+ VBox.ShowAll ();
+
+ AddDefaultCloseButton ();
+ }
+ }
+}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs Wed Apr 23 22:58:38 2008
@@ -28,7 +28,9 @@
using System;
using Gtk;
+using Mono.Unix;
using Mono.Addins;
+using Mono.Addins.Gui;
using Hyena.Widgets;
@@ -38,8 +40,22 @@
{
private Addin addin;
private Button activate_button;
+ private Button details_button;
+ private Box button_box;
- public AddinTile (Addin addin) : base (2, 3, false)
+ private Label title;
+ private WrapLabel description;
+ private WrapLabel authors;
+
+ private bool last;
+ public bool Last {
+ get { return last; }
+ set { last = value; }
+ }
+
+ public event EventHandler ActiveChanged;
+
+ public AddinTile (Addin addin) : base (3, 3, false)
{
this.addin = addin;
BuildTile ();
@@ -51,30 +67,67 @@
RowSpacing = 1;
ColumnSpacing = 5;
- Label name = new Label ();
- name.Show ();
- name.Xalign = 0.0f;
- name.Markup = String.Format ("<b>{0}</b>", GLib.Markup.EscapeText (addin.Name));
+ Image image = new Image ();
+ image.IconName = "package-x-generic";
+ image.IconSize = (int)IconSize.Dnd;
+ image.Yalign = 0.0f;
+ image.Show ();
+ Attach (image, 0, 1, 0, 3, AttachOptions.Shrink, AttachOptions.Fill | AttachOptions.Expand, 0, 0);
- Attach (name, 1, 3, 0, 1,
+ title = new Label ();
+ title.Show ();
+ title.Xalign = 0.0f;
+ title.Markup = String.Format ("<b>{0}</b>", GLib.Markup.EscapeText (addin.Name));
+
+ Attach (title, 1, 3, 0, 1,
AttachOptions.Expand | AttachOptions.Fill,
AttachOptions.Expand | AttachOptions.Fill, 0, 0);
- WrapLabel desc = new WrapLabel ();
- desc.Show ();
- desc.Markup = String.Format ("<small>{0}</small>", GLib.Markup.EscapeText (addin.Description.Description));
+ description = new WrapLabel ();
+ description.Show ();
+ description.Text = addin.Description.Description;
+ description.Wrap = false;
- Attach (desc, 1, 2, 1, 2,
+ Attach (description, 1, 3, 1, 2,
AttachOptions.Expand | AttachOptions.Fill,
AttachOptions.Expand | AttachOptions.Fill, 0, 0);
+ authors = new WrapLabel ();
+ authors.Markup = String.Format ("<small><b>Authors:</b> <i>{0}</i></small>",
+ GLib.Markup.EscapeText (addin.Description.Author));
+
+ Attach (authors, 1, 2, 2, 3,
+ AttachOptions.Expand | AttachOptions.Fill,
+ AttachOptions.Expand | AttachOptions.Fill, 0, 4);
+
+ button_box = new VBox ();
HBox box = new HBox ();
- box.Show ();
- activate_button = new Button ("Disable");
- box.PackEnd (activate_button, false, false, 0);
- Attach (box, 2, 3, 1, 2, AttachOptions.Shrink, AttachOptions.Expand, 0, 0);
+ box.Spacing = 3;
+
+ button_box.PackEnd (box, false, false, 0);
+
+ Pango.FontDescription font = PangoContext.FontDescription.Copy ();
+ font.Size = (int)(font.Size * Pango.Scale.Small);
+
+ Label label = new Label ("Details");
+ label.ModifyFont (font);
+ details_button = new Button ();
+ details_button.Add (label);
+ details_button.Clicked += OnDetailsClicked;
+ box.PackStart (details_button, false, false, 0);
+
+ label = new Label ();
+ label.ModifyFont (font);
+ activate_button = new Button ();
+ activate_button.Add (label);
+ activate_button.Clicked += OnActivateClicked;
+ box.PackStart (activate_button, false, false, 0);
+
+ Attach (button_box, 2, 3, 2, 3, AttachOptions.Shrink, AttachOptions.Expand | AttachOptions.Fill, 0, 0);
Show ();
+
+ UpdateState ();
}
protected override void OnRealized ()
@@ -88,17 +141,56 @@
{
if (State == StateType.Selected) {
Gtk.Style.PaintFlatBox (Style, evnt.Window, State, ShadowType.None, evnt.Area,
- this, "row", Allocation.X, Allocation.Y, Allocation.Width, Allocation.Height);
+ this, "cell_odd", Allocation.X, Allocation.Y,
+ Allocation.Width, Allocation.Height - (last ? 0 : 1));
+ }
+
+ if (!last) {
+ Gtk.Style.PaintHline (Style, evnt.Window, StateType.Normal, evnt.Area, this, null,
+ Allocation.X, Allocation.Right, Allocation.Bottom - 1);
}
return base.OnExposeEvent (evnt);
}
+ private void OnActivateClicked (object o, EventArgs args)
+ {
+ addin.Enabled = !addin.Enabled;
+ ActiveChanged (this, EventArgs.Empty);
+ }
+
+ private void OnDetailsClicked (object o, EventArgs args)
+ {
+ AddinDetailsDialog dialog = new AddinDetailsDialog (addin, Toplevel as Window);
+ dialog.Run ();
+ dialog.Destroy ();
+ }
+
+ public void UpdateState ()
+ {
+ bool enabled = addin.Enabled;
+ bool sensitive = enabled || (!enabled && State == StateType.Selected);
+
+ title.Sensitive = sensitive;
+ description.Sensitive = sensitive;
+ description.Wrap = State == StateType.Selected;
+ authors.Visible = State == StateType.Selected;
+
+ ((Label)activate_button.Child).Text = enabled
+ ? Catalog.GetString ("Disable")
+ : Catalog.GetString ("Enable");
+ }
+
public void Select (bool select)
{
State = select ? StateType.Selected : StateType.Normal;
- activate_button.Visible = select;
- activate_button.State = StateType.Normal;
+ if (select) {
+ button_box.ShowAll ();
+ } else {
+ button_box.Hide ();
+ }
+ button_box.State = StateType.Normal;
+ UpdateState ();
QueueResize ();
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs Wed Apr 23 22:58:38 2008
@@ -49,11 +49,20 @@
box.Show ();
Add (box);
+ LoadAddins ();
+ }
+
+ private void LoadAddins ()
+ {
foreach (Addin addin in AddinManager.Registry.GetAddins ()) {
if (addin.Name != addin.Id) {
AppendAddin (addin);
}
}
+
+ if (tiles.Count > 0) {
+ tiles[tiles.Count - 1].Last = true;
+ }
}
private bool changing_styles = false;
@@ -73,12 +82,50 @@
private void AppendAddin (Addin addin)
{
AddinTile tile = new AddinTile (addin);
+ tile.ActiveChanged += OnAddinActiveChanged;
+ tile.SizeAllocated += OnAddinSizeAllocated;
tile.Show ();
tiles.Add (tile);
box.PackStart (tile, false, false, 0);
}
+ private void OnAddinActiveChanged (object o, EventArgs args)
+ {
+ foreach (AddinTile tile in tiles) {
+ tile.UpdateState ();
+ }
+ }
+
+ private void OnAddinSizeAllocated (object o, SizeAllocatedArgs args)
+ {
+ ScrolledWindow scroll;
+
+ if (Parent == null || (scroll = Parent.Parent as ScrolledWindow) == null) {
+ return;
+ }
+
+ AddinTile tile = (AddinTile)o;
+
+ if (tiles.IndexOf (tile) != selected_index) {
+ return;
+ }
+
+ Gdk.Rectangle ta = ((AddinTile)o).Allocation;
+ Gdk.Rectangle va = new Gdk.Rectangle (0, (int)scroll.Vadjustment.Value,
+ Allocation.Width, Parent.Allocation.Height);
+
+ if (!va.Contains (ta)) {
+ double y_pos = scroll.Vadjustment.Value + (ta.Top > va.Top ? ta.Height : -ta.Height);
+ /*if (y_pos > Parent.Allocation.Height) {
+ y_pos = scroll.Vadjustment.Upper;
+ } else if (y_pos < scroll.Vadjustment.Lower) {
+ y_pos = scroll.Vadjustment.Lower;
+ }*/
+ scroll.Vadjustment.Value = y_pos;
+ }
+ }
+
protected override bool OnButtonPressEvent (Gdk.EventButton evnt)
{
HasFocus = true;
@@ -132,17 +179,15 @@
if (index >= 0 && index < tiles.Count) {
selected_index = index;
tiles[index].Select (true);
-
- // FIXME: This is not right at all
- if (!tiles[index].Allocation.IntersectsWith (Parent.Allocation)) {
- ScrolledWindow w = Parent.Parent as ScrolledWindow;
- if (w != null) {
- w.Vadjustment.Value = tiles[index].Allocation.Y;
- }
- }
} else {
ClearSelection ();
}
+
+ if (Parent != null && Parent.IsRealized) {
+ Parent.GdkWindow.InvalidateRect (Parent.Allocation, true);
+ }
+
+ QueueResize ();
}
private void ClearSelection ()
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs Wed Apr 23 22:58:38 2008
@@ -37,7 +37,7 @@
{
private ProfileComboBox combo;
private ProfileConfigureButton button;
- private TextViewLabel description;
+ private WrapLabel description;
private string configuration_id;
public ProfileComboBoxConfigurable(MediaProfileManager manager, string configurationId)
@@ -62,14 +62,9 @@
editor.PackStart(button, false, false, 0);
editor.Show();
- description = new TextViewLabel();
+ description = new WrapLabel();
description.Show();
- TextTag tag = new TextTag("small");
- tag.Scale = Pango.Scale.Small;
- tag.Style = Pango.Style.Italic;
- description.Buffer.TagTable.Add(tag);
-
ProfileConfiguration config = manager.GetActiveProfileConfiguration (configurationId);
if(config != null) {
@@ -98,8 +93,8 @@
private void SetDescription()
{
- description.Text = Combo.ActiveProfile.Description;
- description.Buffer.ApplyTag("small", description.Buffer.StartIter, description.Buffer.EndIter);
+ description.Markup = String.Format ("<small><i>{0}</i></small>",
+ GLib.Markup.EscapeText (Combo.ActiveProfile.Description));
}
public ProfileComboBox Combo {
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs Wed Apr 23 22:58:38 2008
@@ -66,7 +66,7 @@
private Profile profile;
private Label header_label = new Label();
- private Hyena.Widgets.TextViewLabel description_label = new Hyena.Widgets.TextViewLabel();
+ private Hyena.Widgets.WrapLabel description_label = new Hyena.Widgets.WrapLabel();
private Table normal_controls_table = new Table(1, 1, false);
private Table advanced_controls_table = new Table(1, 1, false);
private Expander advanced_expander = new Expander(Catalog.GetString("Advanced"));
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs Wed Apr 23 22:58:38 2008
@@ -148,7 +148,7 @@
}
}
- private class PatternDisplay : TextViewLabel
+ private class PatternDisplay : WrapLabel
{
private PatternComboBox folder;
private PatternComboBox file;
@@ -163,11 +163,6 @@
folder.Changed += OnChanged;
file.Changed += OnChanged;
- Pango.FontDescription font = PangoContext.FontDescription.Copy ();
- font.Style = Pango.Style.Italic;
- font.Size = (int)(font.Size * Pango.Scale.Small);
- ModifyFont (font);
-
OnChanged (null, null);
}
@@ -176,7 +171,8 @@
string display = FileNamePattern.CreateFromTrackInfo (FileNamePattern.CreateFolderFilePattern (
folder.ActiveValue, file.ActiveValue), track);
- Text = String.IsNullOrEmpty (display) ? String.Empty : String.Format ("{0}.ogg", display);
+ Markup = String.IsNullOrEmpty (display) ? String.Empty : String.Format ("<small>{0}.ogg</small>",
+ GLib.Markup.EscapeText (display));
}
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,4 +1,12 @@
-<Addin id="Banshee.ThickClient" version="1.0">
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.ThickClient"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ category="required:Core"
+ description="Provides GUI utilities and services."
+ defaultEnabled="true">
<Dependencies>
<Addin id="Banshee.Services" version="1.0" />
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp Wed Apr 23 22:58:38 2008
@@ -105,6 +105,7 @@
<File name="Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Gui.Widgets/AddinView.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Gui.Widgets/AddinTile.cs" subtype="Code" buildaction="Compile" />
+ <File name="Banshee.Gui.Widgets/AddinDetailsDialog.cs" subtype="Code" buildaction="Compile" />
</Contents>
<References>
<ProjectReference type="Project" localcopy="False" refto="Hyena.Gui" />
@@ -120,6 +121,8 @@
<ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<ProjectReference type="Gac" localcopy="True" refto="Mono.Addins, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins.Gui, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins.Setup, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
</References>
<Deployment.LinuxDeployData generateScript="False" />
<MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="True" RelativeMakefileName="Makefile.am">
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Makefile.am
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Makefile.am (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Makefile.am Wed Apr 23 22:58:38 2008
@@ -38,6 +38,7 @@
Banshee.Gui.DragDrop/DragDropList.cs \
Banshee.Gui.DragDrop/DragDropTarget.cs \
Banshee.Gui.DragDrop/DragDropUtilities.cs \
+ Banshee.Gui.Widgets/AddinDetailsDialog.cs \
Banshee.Gui.Widgets/AddinTile.cs \
Banshee.Gui.Widgets/AddinView.cs \
Banshee.Gui.Widgets/ArtworkPopup.cs \
Modified: trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,9 +4,9 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
- name="Mass Storage Digital Audio Player Support"
+ name="Mass Storage Media Player Support"
category="Hardware"
- description="Provides support for Digital Audio Players that use USB Mass Storage."
+ description="Provides support for media players that use USB Mass Storage without keeping an internal database."
author="Gabriel Burt"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,9 +4,9 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
- name="MTP Audio Player Support"
+ name="MTP Media Player Support"
category="Hardware"
- description="Provides support for Digital Audio Players that use MTP for transfer."
+ description="Provides support for PlaysForSure digital media players that use MTP."
author="Gabriel Burt"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.addin.xml
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.addin.xml (original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,9 +4,9 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2007-2008 Novell Inc. Licensed under the MIT X11 license."
- name="Digital Audio Player Support"
+ name="Digital Media Player Support"
category="Hardware"
- description="Provides support for Digital Audio Players."
+ description="Provides general support for many kinds of media player devices."
author="Gabriel Burt, Aaron Bockover, Ruben Vermeersch"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml Wed Apr 23 22:58:38 2008
@@ -6,7 +6,7 @@
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
name="Audio CD Support"
category="Hardware"
- description="Provides support for listening to and ripping Audio CDs"
+ description="Provides support for listening to and ripping Audio CDs."
author="Aaron Bockover"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,8 +4,10 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ category="User Interface"
name="Bookmarks"
- description="Bookmark your position in tracks."
+ description="Allows for saving specific positions in tracks so you can resume playback later."
+ author="Gabriel Burt"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,4 +1,15 @@
-<Addin id="Banshee.Lastfm">
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.LastFm"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ name="Last.fm Radio and Scrobbling"
+ category="User Interface"
+ description="Provides tightly integrated Last.fm streaming radio and community features."
+ author="Gabriel Burt, Alexander Hixon"
+ url="http://banshee-project.org/"
+ defaultEnabled="true">
<Dependencies>
<Addin id="Banshee.Services" version="1.0"/>
Modified: trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml Wed Apr 23 22:58:38 2008
@@ -1,8 +1,15 @@
-<Addin id="Banshee.MultimediaKeys"
- name="Multimedia Keys"
- description="Provides support for handling playback through the use of keyboard controls."
- url="http://www.banshee-project.org/"
- version="1.0">
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.MultimediaKeys"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
+ name="Multimedia Keys"
+ category="User Interface"
+ description="Provides support for handling playback through the use of keyboard controls."
+ author="Aaron Bockover"
+ url="http://banshee-project.org/"
+ defaultEnabled="true">
<Dependencies>
<Addin id="Banshee.Services" version="1.0"/>
Modified: trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml Wed Apr 23 22:58:38 2008
@@ -5,8 +5,8 @@
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
name="Now Playing"
- category="Sources"
- description="Adds a source that displays video and visualizations, along with other aggregated data about the currently playing track."
+ category="User Interface"
+ description="Provides a source that displays embedded video and provides fullscreen video playback and controls."
author="Aaron Bockover"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml Wed Apr 23 22:58:38 2008
@@ -5,8 +5,8 @@
compatVersion="1.0"
copyright="Â 2008 Novell Inc. Licensed under the MIT X11 license."
name="Play Queue"
- category="Sources"
- description="Adds a source that acts as a queue of playing tracks. When the queue is populated, all playback happens from the queue in a forced order."
+ category="User Interface"
+ description="Provides a source that acts as a queue of playing tracks. When the queue is populated, all playback happens from the queue in a forced order."
author="Aaron Bockover"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml Wed Apr 23 22:58:38 2008
@@ -4,9 +4,9 @@
version="1.0"
compatVersion="1.0"
copyright="Â 2008 Mike Urbanski. Licensed under the MIT X11 license."
- name="Podcasting"
- category="Awesome!"
- description="."
+ name="Podcasts"
+ category="User Interface"
+ description="Allows subscribing to and managing of Podcasts."
author="Michael C. Urbanski"
url="http://banshee-project.org/"
defaultEnabled="true">
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.mdp
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.mdp (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Gui.mdp Wed Apr 23 22:58:38 2008
@@ -67,7 +67,6 @@
<File name="Hyena.Widgets/SmoothScrolledWindow.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena.Widgets/MenuButton.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena.Gui/CompositeUtils.cs" subtype="Code" buildaction="Compile" />
- <File name="Hyena.Widgets/TextViewLabel.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena.Gui/TooltipSetter.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena.Widgets/WrapLabel.cs" subtype="Code" buildaction="Compile" />
</Contents>
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs Wed Apr 23 22:58:38 2008
@@ -35,6 +35,7 @@
{
private string text;
private bool use_markup = false;
+ private bool wrap = true;
private Pango.Layout layout;
public WrapLabel ()
@@ -57,6 +58,8 @@
CreateLayout ();
}
+ layout.Ellipsize = wrap ? Pango.EllipsizeMode.None : Pango.EllipsizeMode.End;
+
if (use_markup) {
layout.SetMarkup (text);
} else {
@@ -110,6 +113,30 @@
return true;
}
+ public void MarkupFormat (string format, params object [] args)
+ {
+ if (args == null || args.Length == 0) {
+ Markup = format;
+ return;
+ }
+
+ for (int i = 0; i < args.Length; i++) {
+ if (args[i] is string) {
+ args[i] = GLib.Markup.EscapeText ((string)args[i]);
+ }
+ }
+
+ Markup = String.Format (format, args);
+ }
+
+ public bool Wrap {
+ get { return wrap; }
+ set {
+ wrap = value;
+ UpdateLayout ();
+ }
+ }
+
public string Markup {
get { return text; }
set {
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Makefile.am
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Makefile.am (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Makefile.am Wed Apr 23 22:58:38 2008
@@ -62,7 +62,6 @@
Hyena.Widgets/RoundedFrame.cs \
Hyena.Widgets/ScrolledWindow.cs \
Hyena.Widgets/SmoothScrolledWindow.cs \
- Hyena.Widgets/TextViewLabel.cs \
Hyena.Widgets/WrapLabel.cs
include $(top_srcdir)/build/build.mk
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]