r3365 - in trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: . src
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Tue Nov 6 17:56:09 CET 2007
Author: thomas
Date: 2007-11-06 17:56:07 +0100 (Tue, 06 Nov 2007)
New Revision: 3365
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
Log:
* src/appmanager-data.h:
* src/ipkg-utils.c: (progress_bar_pulse), (install_thread_func),
(run_func_with_gui):
* src/ipkg-utils.h:
* src/navigation-area.c: (navigation_area_new),
(navigation_area_refresh_with_package_list):
* src/tool-box.c: (on_install_clicked), (tool_box_new):
- Implement removing packages from the toolbar button
- Update add/remove buttons depending on status of selectiong package
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-06 16:56:07 UTC (rev 3365)
@@ -1,5 +1,18 @@
2007-11-06 Thomas Wood <thomas at openedhand.com>
+ * src/appmanager-data.h:
+ * src/ipkg-utils.c: (progress_bar_pulse), (install_thread_func),
+ (run_func_with_gui):
+ * src/ipkg-utils.h:
+ * src/navigation-area.c: (navigation_area_new),
+ (navigation_area_refresh_with_package_list):
+ * src/tool-box.c: (on_install_clicked), (tool_box_new):
+
+ - Implement removing packages from the toolbar button
+ - Update add/remove buttons depending on status of selectiong package
+
+2007-11-06 Thomas Wood <thomas at openedhand.com>
+
* src/Makefile.am:
* src/appmanager-window.c: (main):
* src/ipkg-utils.c:
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h 2007-11-06 16:56:07 UTC (rev 3365)
@@ -71,6 +71,9 @@
GtkWidget *installdialog; /* The install dialog */
GtkTreeModel *filter_store; /* GtkListStore for filter menu */
+
+ GtkToolItem *install_btn; /* Install toolbar button */
+ GtkToolItem *remove_btn; /* Remove toolbar button */
} ApplicationManagerData;
/*
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c 2007-11-06 16:56:07 UTC (rev 3365)
@@ -29,7 +29,8 @@
GtkWidget *pbar;
GtkWidget *details;
GtkWidget *dlg;
-} InstallData;
+ int (*func)();
+} IpkgRunData;
static void
add_text_to_textview (GtkTextView *tv, gchar *text)
@@ -56,20 +57,20 @@
}
static gpointer
-install_thread_func (InstallData *data)
+install_thread_func (IpkgRunData *data)
{
int ret;
gchar *real_name;
- ret = ipkg_install_cmd (data->package_name, "root", &real_name);
+ ret = data->func (data->package_name, "root", &real_name);
g_source_remove (data->pulse_source);
if (ret == 0)
{
gdk_threads_enter ();
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data->pbar), 1.0);
- gtk_label_set_text (GTK_LABEL (data->label), "Install succeeded!");
- add_text_to_textview (GTK_TEXT_VIEW (data->details), "Install succeeded\n");
+ gtk_label_set_text (GTK_LABEL (data->label), "Succeeded!");
+ add_text_to_textview (GTK_TEXT_VIEW (data->details), "Operation succeeded\n");
gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG(data->dlg)->action_area), TRUE);
gdk_threads_leave ();
}
@@ -78,11 +79,11 @@
gchar *err, *message;
err = get_error_msg ();
- message = g_strdup_printf ("Install failed: %s", err);
+ message = g_strdup_printf ("Operation failed: %s", err);
gdk_threads_enter ();
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data->pbar), 1.0);
- gtk_label_set_text (GTK_LABEL (data->label), "Install failed");
+ gtk_label_set_text (GTK_LABEL (data->label), "Failed");
add_text_to_textview (GTK_TEXT_VIEW (data->details), message);
gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG(data->dlg)->action_area), TRUE);
gdk_threads_leave ();
@@ -95,15 +96,17 @@
return NULL;
}
+
+
void
-install_package (ApplicationManagerData *data, gchar *name)
+run_func_with_gui (ApplicationManagerData *data, gchar *name, int (*func)())
{
gchar *s;
GtkWidget *dlg, *vbox, *label, *progress, *details, *w, *sw;
- InstallData *install_data;
+ IpkgRunData *install_data;
- dlg = gtk_dialog_new_with_buttons ("Install", GTK_WINDOW (data->mwindow),
+ dlg = gtk_dialog_new_with_buttons ("Update", GTK_WINDOW (data->mwindow),
GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_CANCEL,
NULL);
@@ -114,7 +117,7 @@
gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox);
- s = g_strdup_printf ("Installing \"%s\"", name);
+ s = g_strdup_printf ("Updating status of \"%s\"", name);
label = gtk_label_new (s);
gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
@@ -132,13 +135,14 @@
details = gtk_text_view_new ();
gtk_container_add (GTK_CONTAINER (sw), details);
- install_data = g_new0 (InstallData, 1);
+ install_data = g_new0 (IpkgRunData, 1);
install_data->package_name = name;
install_data->pulse_source = g_timeout_add (250, (GSourceFunc) progress_bar_pulse, progress);
install_data->label = label;
install_data->pbar = progress;
install_data->details = details;
install_data->dlg = dlg;
+ install_data->func = func;
g_thread_create ((GThreadFunc) install_thread_func, install_data, FALSE, NULL);
@@ -148,3 +152,14 @@
gtk_widget_destroy (dlg);
}
+void
+install_package (ApplicationManagerData *data, gchar *name)
+{
+ run_func_with_gui (data, name, ipkg_install_cmd);
+}
+
+void
+remove_package (ApplicationManagerData *data, gchar *name)
+{
+ run_func_with_gui (data, name, ipkg_remove_cmd);
+}
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h 2007-11-06 16:56:07 UTC (rev 3365)
@@ -20,5 +20,6 @@
#define IPKG_UTILS_H
void install_package (ApplicationManagerData *data, gchar *name);
+void remove_package (ApplicationManagerData *data, gchar *name);
#endif /* IPKG_UTILS_H */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c 2007-11-06 16:56:07 UTC (rev 3365)
@@ -27,41 +27,45 @@
#include "package-list.h"
#include "select-menu.h"
+#include "ipkgapi.h"
+
/*
* @brief The callback function of the signal "cursor-changed"
*/
void
-on_treeview_cursor_changed (GtkTreeView *treeview,
- gpointer user_data)
+on_selection_changed (GtkTreeSelection *selection,
+ ApplicationManagerData *data)
{
GtkTreeModel *model;
GtkTreeIter iter;
- GtkTreeSelection *selection;
- gpointer pkg;
+ IPK_PACKAGE *pkg;
g_debug ("Call the on_treeview_cursor_changed");
- selection = gtk_tree_view_get_selection (treeview);
if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ gtk_tree_model_get (model, &iter, COL_POINTER, &pkg, -1);
+ detail_area_update_info (data, pkg);
+
+ if (pkg->state_status == SS_INSTALLED)
{
- gtk_tree_model_get (model, &iter, COL_POINTER, &pkg, -1);
- detail_area_update_info ((ApplicationManagerData *) user_data, pkg);
+ gtk_widget_set_sensitive (GTK_WIDGET (data->install_btn), FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (data->remove_btn), TRUE);
}
+ else
+ {
+ gtk_widget_set_sensitive (GTK_WIDGET (data->install_btn), TRUE);
+ gtk_widget_set_sensitive (GTK_WIDGET (data->remove_btn), FALSE);
+ }
+ }
+ else
+ {
+ gtk_widget_set_sensitive (GTK_WIDGET (data->install_btn), FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (data->remove_btn), FALSE);
+ }
}
/*
- * @brief The callback function of the signal "unselect-all"
- */
-gboolean
-on_treeview_unselect_all (GtkTreeView *treeview,
- gpointer user_data)
-{
- g_debug ("Call the on_treeview_unselect_all");
-
- return FALSE;
-}
-
-/*
* @brief The callback function of the signal "button_press_event"
*/
gboolean
@@ -198,24 +202,18 @@
model = GTK_TREE_MODEL (create_package_list_store ());
gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
g_object_unref (model);
- /* FIXME Set the treeview as the single selection mode now.
- Maybe it uses the multi selection mode in the feature. */
+
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
- GTK_SELECTION_SINGLE);
+ GTK_SELECTION_BROWSE);
scrollwindow = moko_finger_scroll_new ();
gtk_container_add (GTK_CONTAINER (scrollwindow), treeview);
application_manager_data_set_tvpkglist (appdata, treeview);
/* Connect signal to the treeview */
- g_signal_connect ((gpointer) treeview, "cursor_changed",
- G_CALLBACK (on_treeview_cursor_changed),
- appdata);
+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
+ "changed", G_CALLBACK (on_selection_changed), appdata);
- g_signal_connect ((gpointer) treeview, "unselect_all",
- G_CALLBACK (on_treeview_cursor_changed),
- appdata);
-
g_signal_connect ((gpointer) treeview, "button_press_event",
G_CALLBACK (on_treeview_button_press_event),
appdata);
@@ -335,6 +333,7 @@
GtkWidget *treeview;
GtkTreeModel *model;
GtkListStore *store;
+ GtkTreeIter iter;
g_return_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (appdata));
g_return_if_fail (pkglist != NULL);
@@ -356,6 +355,11 @@
gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
g_object_unref (model);
+
+ /* ensure one item is selected */
+ if (gtk_tree_model_get_iter_first (model, &iter))
+ gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
+ &iter);
}
/*
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 2007-11-06 15:38:03 UTC (rev 3364)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 2007-11-06 16:56:07 UTC (rev 3365)
@@ -69,13 +69,24 @@
gtk_tree_model_get (model, &iter, COL_NAME, &name, -1);
install_package (data, name);
-
}
void
on_remove_clicked (GtkWidget *button, ApplicationManagerData *data)
{
+ GtkTreeSelection *sel;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *name;
+ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (data->tvpkglist));
+
+ if (!gtk_tree_selection_get_selected (sel, &model, &iter))
+ return;
+
+ gtk_tree_model_get (model, &iter, COL_NAME, &name, -1);
+
+ remove_package (data, name);
}
@@ -160,15 +171,15 @@
tool_button = gtk_tool_button_new_from_stock (GTK_STOCK_ADD);
g_signal_connect (tool_button, "clicked", G_CALLBACK (on_install_clicked), appdata);
gtk_toolbar_insert (GTK_TOOLBAR (toolbox), tool_button, -1);
- gtk_container_child_set (GTK_CONTAINER (toolbox), GTK_WIDGET (tool_button),
- "expand", TRUE, NULL);
+ gtk_tool_item_set_expand (tool_button, TRUE);
+ appdata->install_btn = tool_button;
/* remove package */
tool_button = gtk_tool_button_new_from_stock (GTK_STOCK_DELETE);
g_signal_connect (tool_button, "clicked", G_CALLBACK (on_remove_clicked), appdata);
gtk_toolbar_insert (GTK_TOOLBAR (toolbox), tool_button, -1);
- gtk_container_child_set (GTK_CONTAINER (toolbox), GTK_WIDGET (tool_button),
- "expand", TRUE, NULL);
+ gtk_tool_item_set_expand (tool_button, TRUE);
+ appdata->remove_btn = tool_button;
return toolbox;
}
More information about the commitlog
mailing list