[ease/plugins] Moved ImportWidget out of ease-core.
- From: Nate Stedman <natesm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ease/plugins] Moved ImportWidget out of ease-core.
- Date: Sun, 22 Aug 2010 21:48:07 +0000 (UTC)
commit 0dd6fd8883bcbc220cfbb8ac81cffec537a5bbd3
Author: Nate Stedman <natesm gmail com>
Date: Sun Aug 22 10:53:42 2010 -0400
Moved ImportWidget out of ease-core.
Communication is with signals on the service.
ease-core/Makefile.am | 1 -
ease-core/ease-plugin-import-service.vala | 58 +++++++++------------------
ease/Makefile.am | 1 +
ease/ease-import-dialog.vala | 16 +++++---
ease/ease-import-flickr-media.vala | 6 +++
{ease-core => ease}/ease-import-widget.vala | 47 ++++++++++++++++++++-
6 files changed, 80 insertions(+), 49 deletions(-)
---
diff --git a/ease-core/Makefile.am b/ease-core/Makefile.am
index d3e5f43..16e9bd2 100644
--- a/ease-core/Makefile.am
+++ b/ease-core/Makefile.am
@@ -20,7 +20,6 @@ libease_core_ EASE_CORE_VERSION@_la_SOURCES = \
ease-image-actor.vala \
ease-image-element.vala \
ease-image.vala \
- ease-import-widget.vala \
ease-iterable-models.vala \
ease-media-element.vala \
ease-plugin-import-media.vala \
diff --git a/ease-core/ease-plugin-import-service.vala b/ease-core/ease-plugin-import-service.vala
index 0ca8e91..5eb0733 100644
--- a/ease-core/ease-plugin-import-service.vala
+++ b/ease-core/ease-plugin-import-service.vala
@@ -43,15 +43,17 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
internal Gtk.ListStore model;
/**
- * The widget for this service.
- */
- internal ImportWidget widget;
-
- /**
* The size of the list to download.
*/
private float list_size;
+ public signal void started();
+ public signal void proxy_call_complete();
+ public signal void no_results();
+ public signal Gtk.IconView loading_started();
+ public signal void loading_progress(double progress);
+ public signal void loading_complete();
+
/**
* Stores the images to download. As each image is downloaded, it is
* removed from the list.
@@ -91,22 +93,13 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
images_list.add(media);
}
- internal void run(Gtk.Widget sender)
+ public void run(string search)
{
// create the rest proxy call
proxy = create_proxy();
- call = create_call(proxy, widget.search.text);
+ call = create_call(proxy, search);
- // remove the results
- widget.icons_container.visible = false;
- widget.no_results.visible = false;
-
- // display the spinner
- widget.spinner.start();
- widget.spinner_container.visible = true;
-
- // reset the progress bar
- widget.progress.set_fraction(0);
+ started();
// run the call
try { call.run_async(on_call_finish, this); }
@@ -120,9 +113,7 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
*/
private void on_call_finish(Rest.ProxyCall call)
{
- // remove the spinner
- widget.spinner_container.visible = false;
- widget.spinner.stop();
+ proxy_call_complete();
// create list
images_list = new Gee.LinkedList<ImportMedia?>();
@@ -135,19 +126,14 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
if (list_size > 0)
{
- // add the icon view
- widget.icons_container.visible = true;
-
- // add the progress
- widget.progress.visible = true;
-
// create model
model = new Gtk.ListStore(2, typeof(Gdk.Pixbuf), typeof(string));
-
+
// set icons
- widget.icons.set_model(model);
- widget.icons.text_column = Column.TEXT;
- widget.icons.pixbuf_column = Column.PIXBUF;
+ var icons = loading_started();
+ icons.set_model(model);
+ icons.text_column = Column.TEXT;
+ icons.pixbuf_column = Column.PIXBUF;
// if threads are supported, get the pixbufs in a thread
if (Thread.supported())
@@ -162,7 +148,7 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
}
else
{
- widget.no_results.visible = true;
+ no_results();
}
}
@@ -197,10 +183,7 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
}
// set the widget.progress bar
- lock (widget)
- {
- widget.progress.set_fraction(1 - (images_list.size / list_size));
- }
+ loading_progress(1 - (images_list.size / list_size));
// continue if there are more images
lock (images_list)
@@ -209,10 +192,7 @@ public abstract class Ease.Plugin.ImportService : GLib.Object
}
// otherwise, remove the widget.progress bar and return
- lock (widget)
- {
- widget.progress.visible = false;
- }
+ loading_complete();
return null;
}
diff --git a/ease/Makefile.am b/ease/Makefile.am
index 5f6bbf5..db77d73 100644
--- a/ease/Makefile.am
+++ b/ease/Makefile.am
@@ -13,6 +13,7 @@ ease_SOURCES = \
ease-import-flickr-service.vala \
ease-import-oca-media.vala \
ease-import-oca-service.vala \
+ ease-import-widget.vala \
ease-inspector-element-pane.vala \
ease-inspector-pane.vala \
ease-inspector-slide-pane.vala \
diff --git a/ease/ease-import-dialog.vala b/ease/ease-import-dialog.vala
index d8cbbdd..d7dc840 100644
--- a/ease/ease-import-dialog.vala
+++ b/ease/ease-import-dialog.vala
@@ -29,14 +29,10 @@ internal class Ease.ImportDialog : Gtk.Window
view.show_all();
Plugin.ImportService service = new OCAService();
- var oca = new Source.Item.from_stock_icon(
- "OpenClipArt", "gtk-go-down", new ImportWidget(service));
+ var oca = create_item("OpenClipArt", "gtk-go-down", service);
group.add_item(oca);
-
service = new FlickrService();
- var flickr = new Source.Item.from_stock_icon(
- "Flickr", "gtk-go-down", new ImportWidget(service));
- group.add_item(flickr);
+ group.add_item(create_item("Flickr", "gtk-go-down", service));
add(view);
view.show_all();
@@ -47,4 +43,12 @@ internal class Ease.ImportDialog : Gtk.Window
{
show();
}
+
+ private Source.Item create_item(string title, string stock_id,
+ Plugin.ImportService service)
+ {
+ var widget = new ImportWidget(service);
+
+ return new Source.Item.from_stock_icon(title, stock_id, widget);
+ }
}
diff --git a/ease/ease-import-flickr-media.vala b/ease/ease-import-flickr-media.vala
new file mode 100644
index 0000000..76d3396
--- /dev/null
+++ b/ease/ease-import-flickr-media.vala
@@ -0,0 +1,6 @@
+internal class Ease.FlickrMedia : Plugin.ImportMedia
+{
+ internal string title;
+ internal string description;
+ internal string author;
+}
diff --git a/ease-core/ease-import-widget.vala b/ease/ease-import-widget.vala
similarity index 77%
rename from ease-core/ease-import-widget.vala
rename to ease/ease-import-widget.vala
index 573d270..933c872 100644
--- a/ease-core/ease-import-widget.vala
+++ b/ease/ease-import-widget.vala
@@ -44,7 +44,7 @@ public class Ease.ImportWidget : Gtk.Alignment
internal Gtk.Widget no_results;
/**
- * The ImportService associated with this widget.
+ * The ImportService associated with this
*/
private Plugin.ImportService service;
@@ -56,7 +56,6 @@ public class Ease.ImportWidget : Gtk.Alignment
public ImportWidget(Plugin.ImportService serv)
{
service = serv;
- service.widget = this;
set_padding(0, 0, 0, 0);
// darken the background
@@ -84,7 +83,7 @@ public class Ease.ImportWidget : Gtk.Alignment
// search button
button = builder.get_object("search-button") as Gtk.Button;
- button.clicked.connect(service.run);
+ button.clicked.connect(() => service.run(search.text));
button.expose_event.connect(set_bg);
// progress
@@ -108,6 +107,48 @@ public class Ease.ImportWidget : Gtk.Alignment
var root = builder.get_object("root") as Gtk.EventBox;
root.expose_event.connect(set_bg);
add(root);
+
+ // service signals
+ service.started.connect(() => {
+ // remove the results
+ icons_container.visible = false;
+ no_results.visible = false;
+
+ // display the spinner
+ spinner.start();
+ spinner_container.visible = true;
+
+ // reset the progress bar
+ progress.set_fraction(0);
+ });
+
+ service.proxy_call_complete.connect(() => {
+ // remove the spinner
+ spinner_container.visible = false;
+ spinner.stop();
+ });
+
+ service.no_results.connect(() => {
+ no_results.visible = true;
+ });
+
+ service.loading_started.connect(() => {
+ // add the icon view
+ icons_container.visible = true;
+
+ // add the progress
+ progress.visible = true;
+
+ return icons;
+ });
+
+ service.loading_progress.connect((fraction) => {
+ progress.set_fraction(fraction);
+ });
+
+ service.loading_complete.connect(() => {
+ progress.visible = false;
+ });
}
private bool set_bg(Gtk.Widget root, Gdk.EventExpose event)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]