David King left as an exercise for the reader: OK, I think i got it (haven't had time to test, and am *NOT* an expert with vala). I'm using GLib collections now. I don't think this is the right way to go -- you want to use the best collections possible -- but it ought work, from what I can tell. Please apply after verifying they work -- I'll be able to check it out later tonight. https://github.com/dankamongmen/dankcheese/commit/e5f561b6da246d29ec41735e429c389733b45134 https://github.com/dankamongmen/dankcheese/commit/d409358f16f7460afd9a069987b29e899cb98bd6 https://github.com/dankamongmen/dankcheese/commit/6e1ad975cf7add59c980f1d52b9f1da7c17a84f4 also attached. patch 1 pulls gee dep checks from autotools files patch 2 reverts to glib collections patch 3 adds myself to AUTHORS -- nick black http://www.sprezzatech.com -- unix and hpc consulting to make an apple pie from scratch, you need first invent a universe.
From d409358f16f7460afd9a069987b29e899cb98bd6 Mon Sep 17 00:00:00 2001 From: nick black <nick black sprezzatech com> Date: Mon, 7 Jan 2013 08:49:15 -0500 Subject: [PATCH 1/2] kill gee deps in autotools files --- Makefile.am | 1 - configure.ac | 1 - 2 files changed, 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index e332074..6be69bc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -59,7 +59,6 @@ VALAFLAGS = \ --pkg posix \ --pkg gtk+-3.0 \ --pkg gmodule-2.0 \ - --pkg gee-0.8 \ --pkg clutter-1.0 \ --pkg clutter-gtk-1.0 \ --pkg gstreamer-1.0 \ diff --git a/configure.ac b/configure.ac index 9e254e5..8aa2494 100644 --- a/configure.ac +++ b/configure.ac @@ -73,7 +73,6 @@ LIBRSVG_REQUIRED="librsvg-2.0 >= 2.32.0" CLUTTER_REQUIRED="clutter-1.0 >= 1.10.0" CLUTTERGTK_REQUIRED="clutter-gtk-1.0 >= 0.91.8" CLUTTERGST_REQUIRED="clutter-gst-2.0 >= 1.9.0" -GEE_REQUIRED="gee-0.8 >= 0.9.0" LIBCANBERRA_REQUIRED="libcanberra-gtk3 >= 0.26" X11_REQUIRED="x11" GNOME_VIDEO_EFFECTS_REQUIRED="gnome-video-effects" -- 1.8.1
From e5f561b6da246d29ec41735e429c389733b45134 Mon Sep 17 00:00:00 2001 From: nick black <nick black sprezzatech com> Date: Mon, 7 Jan 2013 08:49:41 -0500 Subject: [PATCH 2/2] remove gee as requested --- src/cheese-effects-manager.vala | 33 ++++++++++----------------------- src/cheese-window.vala | 41 ++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 44 deletions(-) diff --git a/src/cheese-effects-manager.vala b/src/cheese-effects-manager.vala index 06fc87b..8bef381 100644 --- a/src/cheese-effects-manager.vala +++ b/src/cheese-effects-manager.vala @@ -20,17 +20,16 @@ */ using GLib; -using Gee; const string GROUP_NAME = "Effect"; internal class Cheese.EffectsManager : GLib.Object { - public ArrayList<Effect> effects; + public GLib.Array<Effect> effects; public EffectsManager () { - effects = new ArrayList<Effect>(Gee.Functions.get_equal_func_for(typeof(Effect))); + effects = new Array<Effect>(); } /** @@ -40,15 +39,15 @@ internal class Cheese.EffectsManager : GLib.Object { GLib.List<Cheese.Effect> effect_list = Cheese.Effect.load_effects (); for (int i = 0; i < effect_list.length (); i++) - effects.add (effect_list<Cheese.Effect>.nth (i).data); + effects.append_val (effect_list<Cheese.Effect>.nth (i).data); - effects.sort (Gee.Functions.get_compare_func_for(typeof(Cheese.Effect))); + effects.sort ((GLib.CompareFunc)sort_value); /* add identity effect as the first in the effect list */ - if (effects.size > 0) + if (effects.length > 0) { Effect e = new Effect (_("No Effect"), "identity"); - effects.insert (0, e); + effects.prepend_val (e); } } @@ -60,27 +59,15 @@ internal class Cheese.EffectsManager : GLib.Object */ public Effect ? get_effect (string name) { - foreach (Effect eff in effects) - { - if (eff.name == name) - return eff; + for(int i = 0 ; i < effects.length ; ++i){ + if((string)effects.index(i) == name){ + return effects.index(i); + } } return null; } /** - * Compare two effects by the pipeline description. - * - * @param a an effect to compare against - * @param b another effect to compare against - * @return true if the effects are the same, false otherwise - */ - private static bool cmp_value (Effect a, Effect b) - { - return a.pipeline_desc == b.pipeline_desc; - } - - /** * A sort function for effects * * @param a an effect to sort against diff --git a/src/cheese-window.vala b/src/cheese-window.vala index 58317f8..08313fd 100644 --- a/src/cheese-window.vala +++ b/src/cheese-window.vala @@ -26,7 +26,6 @@ using Clutter; using Config; using Eog; using Gst; -using Gee; using CanberraGtk; [DBus(name = "org.freedesktop.PackageKit.Modify")] @@ -77,7 +76,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow private Clutter.Box current_effects_grid; private int current_effects_page = 0; - private ArrayList<Clutter.Box> effects_grids; + private GLib.Array<Clutter.Box> effects_grids; private Gtk.ToggleAction wide_mode_action; private Gtk.Action countdown_action; @@ -1076,7 +1075,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow [CCode (instance_pos = -1)] public void on_next_effects_page (Gtk.Action action) { - if (current_effects_page != (effects_manager.effects.size / EFFECTS_PER_PAGE)) + if (current_effects_page != (effects_manager.effects.length / EFFECTS_PER_PAGE)) { activate_effects_page (current_effects_page + 1); } @@ -1096,15 +1095,15 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow { viewport_layout.remove ((Clutter.Actor) current_effects_grid); } - current_effects_grid = effects_grids[number]; + current_effects_grid = effects_grids.index(number); current_effects_grid.set ("opacity", 0); viewport_layout.add ((Clutter.Actor) current_effects_grid); current_effects_grid.animate (Clutter.AnimationMode.LINEAR, 1000, "opacity", 255); - for (int i = 0; i < effects_manager.effects.size; i++) + for (int i = 0; i < effects_manager.effects.length; i++) { int page_of_effect = i / EFFECTS_PER_PAGE; - Cheese.Effect effect = effects_manager.effects[i]; + Cheese.Effect effect = effects_manager.effects.index(i); if (page_of_effect == number) { if (!effect.is_preview_connected ()) @@ -1130,7 +1129,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow { effects_page_prev_action.sensitive = (is_effects_selector_active && current_effects_page != 0); effects_page_next_action.sensitive = - (is_effects_selector_active && current_effects_page != effects_manager.effects.size / EFFECTS_PER_PAGE); + (is_effects_selector_active && current_effects_page != effects_manager.effects.length / EFFECTS_PER_PAGE); } /** @@ -1145,7 +1144,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow { video_preview.hide (); - if (effects_grids.size == 0) + if (effects_grids.length == 0) { error_layer.text = _("No effects found"); error_layer.show (); @@ -1158,7 +1157,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow } else { - if (effects_grids.size == 0) + if (effects_grids.length == 0) { error_layer.hide (); } @@ -1184,26 +1183,26 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow effects_manager.load_effects (); /* Must initialize effects_grids before returning, as it is dereferenced later, bug 654671. */ - effects_grids = new ArrayList<Clutter.Box> (); + effects_grids = new GLib.Array<Clutter.Box> (); - if (effects_manager.effects.size == 0) + if (effects_manager.effects.length == 0) { warning ("gnome-video-effects is not installed."); return; } - for (int i = 0; i <= effects_manager.effects.size / EFFECTS_PER_PAGE; i++) + for (int i = 0; i <= effects_manager.effects.length / EFFECTS_PER_PAGE; i++) { Clutter.TableLayout table_layout = new TableLayout (); Clutter.Box grid = new Clutter.Box (table_layout); - effects_grids.add (grid); + effects_grids.append_val (grid); table_layout.set_column_spacing (10); table_layout.set_row_spacing (10); } - for (int i = 0; i < effects_manager.effects.size; i++) + for (int i = 0; i < effects_manager.effects.length; i++) { - Effect effect = effects_manager.effects[i]; + Effect effect = effects_manager.effects.index(i); Clutter.Texture texture = new Clutter.Texture (); Clutter.BinLayout layout = new Clutter.BinLayout (Clutter.BinAlignment.CENTER, Clutter.BinAlignment.CENTER); @@ -1234,7 +1233,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow "x-align", Clutter.BinAlignment.CENTER, "y-align", Clutter.BinAlignment.END, null); - Clutter.TableLayout table_layout = (Clutter.TableLayout) effects_grids[i / EFFECTS_PER_PAGE].layout_manager; + Clutter.TableLayout table_layout = (Clutter.TableLayout) effects_grids.index(i / EFFECTS_PER_PAGE).layout_manager; table_layout.pack ((Clutter.Actor) box, (i % EFFECTS_PER_PAGE) % 3, (i % EFFECTS_PER_PAGE) / 3); @@ -1242,11 +1241,11 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow } setup_effects_page_switch_sensitivity (); - current_effects_grid = effects_grids[0]; + current_effects_grid = effects_grids.index(0); } } - private Gee.HashMap<string, bool> action_sensitivities; + private HashTable<string, bool> action_sensitivities; /** * Toggle the sensitvity of the camera actions. * @@ -1257,7 +1256,8 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow is_camera_actions_sensitive = active; if (active) { - foreach (string key in action_sensitivities.keys) + /*List<string> keys = new List<string>(action_sensitivities.get_keys());*/ + foreach (string key in action_sensitivities.get_keys()) { Gtk.Action action = gtk_builder.get_object (key) as Gtk.Action; action.sensitive = action_sensitivities.get (key); @@ -1265,8 +1265,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow } else { - action_sensitivities = new HashMap<string, bool> - (Gee.Functions.get_hash_func_for(typeof(string))); + action_sensitivities = new GLib.HashTable<string, bool>(str_hash, str_equal); GLib.SList<weak GLib.Object> objects = gtk_builder.get_objects (); foreach (GLib.Object obj in objects) { -- 1.8.1
From 6e1ad975cf7add59c980f1d52b9f1da7c17a84f4 Mon Sep 17 00:00:00 2001 From: nick black <nick black sprezzatech com> Date: Mon, 7 Jan 2013 08:53:36 -0500 Subject: [PATCH] add myself to AUTHORS --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 4228b7a..0fbc66f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -17,6 +17,7 @@ the following people contributed to cheese: - James Liggett <jrliggett cox net> - Luca Ferretti <elle uca libero it> - Mirco "MacSlow" Müller <macslow bangang de> + - Nick Black <dankamongmen gmail com> - Patryk Zawadzki <patrys pld-linux org> - Ryan Zeigler <zeiglerr gmail com> - Sebastian Keller <sebastian-keller gmx de> -- 1.8.1
Attachment:
signature.asc
Description: Digital signature