Send commitlog mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r3363 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   2. r3364 - in
      trunk/src/target/OM-2007.2/applications/openmoko-worldclock2: .
      src ([EMAIL PROTECTED])
   3. r3365 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
--- Begin Message ---
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  <[EMAIL PROTECTED]>
+
+       * 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  <[EMAIL PROTECTED]>
 
        * 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. <[EMAIL PROTECTED]>
+ *
+ */
+ 
+#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. <[EMAIL PROTECTED]>
+ *
+ */
+
+#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;
 }
 




--- End Message ---
--- Begin Message ---
Author: chris
Date: 2007-11-06 16:38:03 +0100 (Tue, 06 Nov 2007)
New Revision: 3364

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
Log:
        * src/worldclock-main.c: (main):
        Set the window title


Modified: trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog      
2007-11-06 15:12:47 UTC (rev 3363)
+++ trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/ChangeLog      
2007-11-06 15:38:03 UTC (rev 3364)
@@ -1,3 +1,8 @@
+2007-11-06  Chris Lord  <[EMAIL PROTECTED]>
+
+       * src/worldclock-main.c: (main):
+       Set the window title
+
 2007-11-02  Chris Lord  <[EMAIL PROTECTED]>
 
        * src/worldclock-main.c: (map_clicked_cb), (main):

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
  2007-11-06 15:12:47 UTC (rev 3363)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-worldclock2/src/worldclock-main.c
  2007-11-06 15:38:03 UTC (rev 3364)
@@ -527,6 +527,7 @@
        data.zoom_level = 1;
        
        data.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_title (GTK_WINDOW (data.window), "World Clock");
        vbox = gtk_vbox_new (FALSE, 0);
        
        /* Create toolbar */




--- End Message ---
--- Begin Message ---
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  <[EMAIL PROTECTED]>
 
+       * 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  <[EMAIL PROTECTED]>
+
        * 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;
 }




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to