r3363 - in trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: . src
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Tue Nov 6 16:12:49 CET 2007
Author: thomas
Date: 2007-11-06 16:12:47 +0100 (Tue, 06 Nov 2007)
New Revision: 3363
Added:
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
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
Log:
* src/Makefile.am:
* src/appmanager-window.c: (main):
* src/ipkg-utils.c:
* src/ipkg-utils.h:
* src/tool-box.c: (on_upgrade_clicked), (tool_box_new):
Implement installing packages from toolbar button
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-06 15:12:47 UTC (rev 3363)
@@ -1,3 +1,13 @@
+2007-11-06 Thomas Wood <thomas at openedhand.com>
+
+ * src/Makefile.am:
+ * src/appmanager-window.c: (main):
+ * src/ipkg-utils.c:
+ * src/ipkg-utils.h:
+ * src/tool-box.c: (on_upgrade_clicked), (tool_box_new):
+
+ Implement installing packages from toolbar button
+
2007-11-02 Thomas Wood <thomas at openedhand.com>
* src/Makefile.am:
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am 2007-11-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/Makefile.am 2007-11-06 15:12:47 UTC (rev 3363)
@@ -14,6 +14,7 @@
select-menu.c\
apply-dialog.c\
install-dialog.c \
- search-bar.c
+ search-bar.c \
+ ipkg-utils.c
openmoko_appmanager_LDADD = @OPENMOKO_LIBS@
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c 2007-11-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c 2007-11-06 15:12:47 UTC (rev 3363)
@@ -54,6 +54,8 @@
g_debug ("application manager start up");
+ g_thread_init (NULL);
+ gdk_threads_init ();
gtk_init (&argc, &argv);
g_set_application_name( _("Application Manager") );
Added: 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-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.c 2007-11-06 15:12:47 UTC (rev 3363)
@@ -0,0 +1,150 @@
+/*
+ * The application manager in the Openmoko
+ *
+ * Copyright (C) 2007 OpenMoko Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Author: OpenedHand Ltd. <info at openedhand.com>
+ *
+ */
+
+#include <gtk/gtk.h>
+
+#include "appmanager-data.h"
+#include "ipkgapi.h"
+
+typedef struct
+{
+ gchar *package_name;
+ int pulse_source;
+ GtkWidget *label;
+ GtkWidget *pbar;
+ GtkWidget *details;
+ GtkWidget *dlg;
+} InstallData;
+
+static void
+add_text_to_textview (GtkTextView *tv, gchar *text)
+{
+ GtkTextBuffer *buf;
+ GtkTextIter iter;
+
+ buf = gtk_text_view_get_buffer (tv);
+
+ gtk_text_buffer_get_end_iter (buf, &iter);
+ gtk_text_buffer_insert (buf, &iter, text, -1);
+}
+
+static gboolean
+progress_bar_pulse (GtkProgressBar *pbar)
+{
+ if (GTK_IS_PROGRESS_BAR (pbar))
+ {
+ gtk_progress_bar_pulse (pbar);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gpointer
+install_thread_func (InstallData *data)
+{
+ int ret;
+ gchar *real_name;
+
+ ret = ipkg_install_cmd (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_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG(data->dlg)->action_area), TRUE);
+ gdk_threads_leave ();
+ }
+ else
+ {
+ gchar *err, *message;
+
+ err = get_error_msg ();
+ message = g_strdup_printf ("Install 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");
+ 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 ();
+
+ g_free (message);
+ }
+
+ g_free (data);
+
+ return NULL;
+}
+
+void
+install_package (ApplicationManagerData *data, gchar *name)
+{
+ gchar *s;
+ GtkWidget *dlg, *vbox, *label, *progress, *details, *w, *sw;
+
+ InstallData *install_data;
+
+ dlg = gtk_dialog_new_with_buttons ("Install", GTK_WINDOW (data->mwindow),
+ GTK_DIALOG_MODAL,
+ GTK_STOCK_OK, GTK_RESPONSE_CANCEL,
+ NULL);
+ gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (GTK_DIALOG (dlg)->action_area), FALSE);
+
+ vbox = gtk_vbox_new (FALSE, 6);
+ 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);
+ 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);
+ g_free (s);
+
+ progress = gtk_progress_bar_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), progress, FALSE, FALSE, 0);
+
+ w = gtk_expander_new ("Details");
+ gtk_box_pack_start_defaults (GTK_BOX (vbox), w);
+
+ sw = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (w), sw);
+
+ details = gtk_text_view_new ();
+ gtk_container_add (GTK_CONTAINER (sw), details);
+
+ install_data = g_new0 (InstallData, 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;
+
+ g_thread_create ((GThreadFunc) install_thread_func, install_data, FALSE, NULL);
+
+ gtk_widget_show_all (vbox);
+ gtk_dialog_run (GTK_DIALOG (dlg));
+
+ gtk_widget_destroy (dlg);
+}
+
Added: 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-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/ipkg-utils.h 2007-11-06 15:12:47 UTC (rev 3363)
@@ -0,0 +1,24 @@
+/*
+ * The application manager in the Openmoko
+ *
+ * Copyright (C) 2007 OpenMoko Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Author: OpenedHand Ltd. <info at openedhand.com>
+ *
+ */
+
+#ifndef IPKG_UTILS_H
+#define IPKG_UTILS_H
+
+void install_package (ApplicationManagerData *data, gchar *name);
+
+#endif /* IPKG_UTILS_H */
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-05 16:09:58 UTC (rev 3362)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 2007-11-06 15:12:47 UTC (rev 3363)
@@ -27,6 +27,7 @@
#include "appmanager-window.h"
#include "apply-dialog.h"
#include "install-dialog.h"
+#include "ipkg-utils.h"
/*
* @brief The callback function of the button "upgrade"
@@ -51,59 +52,34 @@
g_debug ("destroy a dialog");
}
-/*
- * @brief The callback function of the button "Apply"
- */
-void
-on_apply_clicked (GtkButton *bapply, gpointer data)
+
+void
+on_install_clicked (GtkWidget *button, ApplicationManagerData *data)
{
- GtkWidget *dialog;
- InstallDialog *installdialog;
- gint res;
- gint number;
+ 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);
+
+ install_package (data, name);
+
+}
- g_debug ("Clicked the button apply");
+void
+on_remove_clicked (GtkWidget *button, ApplicationManagerData *data)
+{
+
+}
- if (package_list_check_marked_list_empty (
- MOKO_APPLICATION_MANAGER_DATA (data)))
- {
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_OK,
- _("No package that has been selected"));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- return;
- }
- dialog = apply_dialog_new (MOKO_APPLICATION_MANAGER_DATA (data));
- res = gtk_dialog_run (GTK_DIALOG (dialog));
- /* FIXME Add code to install/remove/upgrade package */
- if (res == GTK_RESPONSE_OK)
- {
- g_debug ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- g_debug ("Check the number of the selected list");
- number = package_list_get_number_of_selected (MOKO_APPLICATION_MANAGER_DATA (data));
- installdialog = install_dialog_new (MOKO_APPLICATION_MANAGER_DATA (data), number);
- application_manager_data_set_install_dialog (MOKO_APPLICATION_MANAGER_DATA (data),
- GTK_WIDGET (installdialog));
- g_debug ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- g_debug ("Begin to install/upgrade/remove packages");
- if (!g_thread_supported ())
- {
- g_thread_init (NULL);
- }
-
- g_thread_create (package_list_execute_change, data, TRUE, NULL);
- gtk_dialog_run (GTK_DIALOG (installdialog));
- gtk_widget_destroy (GTK_WIDGET (installdialog));
- }
-
- gtk_widget_destroy (dialog);
-}
-
/*
* @brief The callback function of the search entry
*/
@@ -166,7 +142,7 @@
tool_box_new (ApplicationManagerData *appdata)
{
GtkWidget *toolbox;
- GtkToolItem *bapply;
+ GtkToolItem *tool_button;
GtkToolItem *bupgrade;
GtkWidget *anImage;
@@ -180,21 +156,20 @@
gtk_toolbar_insert (GTK_TOOLBAR (toolbox), bupgrade, -1);
gtk_container_child_set (GTK_CONTAINER (toolbox), GTK_WIDGET (bupgrade), "expand", TRUE, NULL);
- anImage = gtk_image_new_from_file (PKGDATADIR "/Apply.png");
- bapply = gtk_tool_button_new (anImage, "Apply");
- g_signal_connect ((gpointer)bapply, "clicked",
- G_CALLBACK (on_apply_clicked),
- appdata);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbox), bapply, -1);
- gtk_container_child_set (GTK_CONTAINER (toolbox), GTK_WIDGET (bapply), "expand", TRUE, NULL);
-#if 0
- searchentry = moko_tool_box_get_entry (toolbox);
- application_manager_data_set_search_entry (appdata, GTK_ENTRY (searchentry));
- gtk_entry_set_max_length (GTK_ENTRY (searchentry), MAX_SEARCH_ENTRY_TEXT_LENGTH);
- g_signal_connect ((gpointer) searchentry, "changed",
- G_CALLBACK (on_search_entry_changed),
- appdata);
-#endif
+ /* install package */
+ 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);
+
+ /* 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);
+
return toolbox;
}
More information about the commitlog
mailing list