hipo r179 - in trunk: . data src
- From: bgarret svn gnome org
- To: svn-commits-list gnome org
- Subject: hipo r179 - in trunk: . data src
- Date: Fri, 28 Mar 2008 17:50:41 +0000 (GMT)
Author: bgarret
Date: Fri Mar 28 17:50:41 2008
New Revision: 179
URL: http://svn.gnome.org/viewvc/hipo?rev=179&view=rev
Log:
2008-03-28 Benoit Garret <benoit garret_gnome gadz org>
* data/hipo.schemas.in:
* src/HipoMainWindow.cs:
* src/Settings.cs:
* src/TracksContainer.cs:
* src/hipo.glade:
Add tracks view column editing.
Fixes #484512 and #392427
Modified:
trunk/ChangeLog
trunk/data/hipo.schemas.in
trunk/src/HipoMainWindow.cs
trunk/src/Settings.cs
trunk/src/TracksContainer.cs
trunk/src/hipo.glade
Modified: trunk/data/hipo.schemas.in
==============================================================================
--- trunk/data/hipo.schemas.in (original)
+++ trunk/data/hipo.schemas.in Fri Mar 28 17:50:41 2008
@@ -14,7 +14,22 @@
</long>
</locale>
</schema>
-
+
+ <schema>
+ <key>/schemas/apps/hipo/tracksview_columns</key>
+ <applyto>/apps/hipo/tracksview_columns</applyto>
+ <owner>hipo</owner>
+ <type>list</type>
+ <list_type>string</list_type>
+ <default>[Artist,Album,Title,Genre]</default>
+ <locale name="C">
+ <short>Tracks view columns</short>
+ <long>
+ List of columns displayed in the tracks view. Possible values are Title, Artist, Album, Genre.
+ </long>
+ </locale>
+ </schema>
+
</schemalist>
</gconfschemafile>
Modified: trunk/src/HipoMainWindow.cs
==============================================================================
--- trunk/src/HipoMainWindow.cs (original)
+++ trunk/src/HipoMainWindow.cs Fri Mar 28 17:50:41 2008
@@ -39,6 +39,7 @@
[Widget] private VBox sourceListBox;
private SourceList sourceList;
+ private PreferencesDialog preferencesDialog;
private DeviceCombo combo;
private Glade.XML gxml;
private Gnome.Program program;
@@ -160,6 +161,9 @@
// create the progress dialog
progressDialog = new ImportDialog (hipoWindow);
+ // create the preferences dialog
+ preferencesDialog = new PreferencesDialog ();
+
// create the capacity bar
capacityBar = new CapacityBar ();
sourceListBox.PackStart (capacityBar, false, false, 0);
@@ -409,7 +413,7 @@
private void OnPreferences (object o, EventArgs args)
{
- // FIXME
+ preferencesDialog.Show ();
}
private void OnHelp (object o, EventArgs args)
Modified: trunk/src/Settings.cs
==============================================================================
--- trunk/src/Settings.cs (original)
+++ trunk/src/Settings.cs Fri Mar 28 17:50:41 2008
@@ -18,12 +18,18 @@
//
//
+using System;
+using System.Collections.Generic;
+using Gtk;
+using Glade;
+
+
namespace Hipo
{
public class Settings
{
static GConf.Client client = new GConf.Client ();
-
+
public static event GConf.NotifyEventHandler Changed
{
add {
@@ -33,24 +39,58 @@
client.RemoveNotify ("/apps/hipo", value);
}
}
-
+
+ public static Array TracksviewColumns
+ {
+ get {
+ return (Array) client.Get (SettingKeys.TracksviewColumns);
+ }
+ set {
+ // UGLY HACK: gconf-sharp does not seem to accept empty arrays
+ Array v = value;
+
+ if (v.Length > 0)
+ client.Set (SettingKeys.TracksviewColumns, value);
+ else
+ {
+ Array empty = Array.CreateInstance (typeof (string), 1);
+ empty.SetValue ("", 0);
+ client.Set (SettingKeys.TracksviewColumns, empty);
+ }
+ }
+ }
+
+ public static event GConf.NotifyEventHandler TracksviewColumnsChanged
+ {
+ add {
+ client.AddNotify (SettingKeys.TracksviewColumns, value);
+ }
+ remove{
+ client.RemoveNotify (SettingKeys.TracksviewColumns, value);
+ }
+ }
+
public static string LastPath
{
get {
- return (string) client.Get ("/apps/hipo/last_path");
+ return (string) client.Get (SettingKeys.LastPath);
}
set {
- client.Set ("/apps/hipo/last_path", value);
+ // always have a valid directory set
+ if (value != null)
+ client.Set (SettingKeys.LastPath, value);
+ else
+ client.Set (SettingKeys.LastPath, Environment.GetFolderPath (Environment.SpecialFolder.Desktop));
}
}
public static event GConf.NotifyEventHandler LastPathChanged
{
add {
- client.AddNotify ("/apps/hipo/last_path", value);
+ client.AddNotify (SettingKeys.LastPath, value);
}
remove{
- client.RemoveNotify ("/apps/hipo/last_path", value);
+ client.RemoveNotify (SettingKeys.LastPath, value);
}
}
}
@@ -63,5 +103,79 @@
return "/apps/hipo/last_path";
}
}
+
+ public static string TracksviewColumns
+ {
+ get {
+ return "/apps/hipo/tracksview_columns";
+ }
+ }
+
+ }
+
+ public class PreferencesDialog
+ {
+ [Widget] private Window properties;
+ [Widget] private CheckButton checkbutton_artist;
+ [Widget] private CheckButton checkbutton_album;
+ [Widget] private CheckButton checkbutton_title;
+ [Widget] private CheckButton checkbutton_genre;
+ [Widget] private Button button_close;
+
+ private Glade.XML gxml;
+
+ public PreferencesDialog ()
+ {
+ Tools.Log (this, 3, "Creating the PreferencesDialog");
+
+ gxml = new Glade.XML (null, "hipo.glade", "properties", null);
+ gxml.Autoconnect (this);
+
+ Array columns = Settings.TracksviewColumns;
+
+ foreach (string column in columns)
+ {
+ if (column == "Album")
+ checkbutton_album.Active = true;
+ if (column == "Artist")
+ checkbutton_artist.Active = true;
+ if (column == "Title")
+ checkbutton_title.Active = true;
+ if (column == "Genre")
+ checkbutton_genre.Active = true;
+ }
+
+ checkbutton_album.Toggled += OnButtonToggled;
+ checkbutton_artist.Toggled += OnButtonToggled;
+ checkbutton_title.Toggled += OnButtonToggled;
+ checkbutton_genre.Toggled += OnButtonToggled;
+ button_close.Clicked += OnCloseClicked;
+ }
+
+ public void Show ()
+ {
+ properties.ShowAll ();
+ }
+
+ private void OnButtonToggled (object o, EventArgs args)
+ {
+ List<string> columns = new List<string> ();
+
+ if (checkbutton_artist.Active)
+ columns.Add ("Artist");
+ if (checkbutton_album.Active)
+ columns.Add ("Album");
+ if (checkbutton_title.Active)
+ columns.Add ("Title");
+ if (checkbutton_genre.Active)
+ columns.Add ("Genre");
+
+ Settings.TracksviewColumns = columns.ToArray ();
+ }
+
+ private void OnCloseClicked (object o, EventArgs args)
+ {
+ properties.HideAll ();
+ }
}
}
Modified: trunk/src/TracksContainer.cs
==============================================================================
--- trunk/src/TracksContainer.cs (original)
+++ trunk/src/TracksContainer.cs Fri Mar 28 17:50:41 2008
@@ -27,6 +27,7 @@
using Gtk;
using Gdk;
using Glade;
+using GConf;
using IPod;
using Mono.Unix;
@@ -58,17 +59,7 @@
// create the columns, treeview, etc
view = new TreeView ();
- TreeViewColumn column = BuildColumn (Column.Artist);
- view.AppendColumn (column);
-
- column = BuildColumn (Column.Album);
- view.AppendColumn (column);
-
- column = BuildColumn (Column.Title);
- view.AppendColumn (column);
-
- column = BuildColumn (Column.Genre);
- view.AppendColumn (column);
+ BuildColumns (Settings.TracksviewColumns);
view.HeadersVisible = true;
view.HeadersClickable = true;
@@ -94,6 +85,9 @@
view.KeyPressEvent += OnKeyPress;
view.ButtonPressEvent += OnButtonPress;
+ // hook up the change column settings event
+ Hipo.Settings.TracksviewColumnsChanged += OnColumnsChanged;
+
// create the search entry and bind the changed event
search = new Entry ();
search.Changed += SearchFor;
@@ -124,7 +118,24 @@
menu.Add (item);
}
- TreeViewColumn BuildColumn (Column column)
+ private void BuildColumns (Array wanted_columns)
+ {
+ Array all_columns = Enum.GetNames (typeof (Column));
+
+ foreach (string wanted_column in wanted_columns)
+ {
+ foreach (string column in all_columns)
+ {
+ if (column == wanted_column)
+ {
+ Gtk.TreeViewColumn col = BuildColumn ((Column) Enum.Parse (typeof (Column), column));
+ view.AppendColumn (col);
+ }
+ }
+ }
+ }
+
+ private TreeViewColumn BuildColumn (Column column)
{
EditableCellRenderer cell = new EditableCellRenderer ();
cell.Edited += OnTrackEdit;
@@ -263,6 +274,18 @@
}
+ private void OnColumnsChanged (object o, NotifyEventArgs args)
+ {
+ foreach (TreeViewColumn column in view.Columns)
+ {
+ view.RemoveColumn (column);
+ }
+
+ Array wanted_columns = (Array)args.Value;
+
+ BuildColumns (wanted_columns);
+ }
+
[GLib.ConnectBefore]
private void OnButtonPress (object o, ButtonPressEventArgs args)
{
Modified: trunk/src/hipo.glade
==============================================================================
--- trunk/src/hipo.glade (original)
+++ trunk/src/hipo.glade Fri Mar 28 17:50:41 2008
@@ -595,4 +595,161 @@
</widget>
</child>
</widget>
+ <widget class="GtkWindow" id="properties">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="title" translatable="yes" context="yes">Preferences</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="default_width">200</property>
+ <property name="default_height">200</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes"><b><u>Show columns:</u></b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">10</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkTable" id="table3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">1</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_artist">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes">Artist</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">10</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_album">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes">Album</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">10</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes">Title</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">10</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton_genre">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes">Genre</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">10</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkButton" id="button_close">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes" context="yes">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</glade-interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]