[Xfce4-commits] <xfce4-timer-plugin:master> Various fixes in preparation of 0.6.4

Kemal Ilgar Eroglu noreply at xfce.org
Mon Feb 6 18:48:01 CET 2012


Updating branch refs/heads/master
         to 5475c202da83f16f641d0da0e1c07146e07904f5 (commit)
       from fd77e536a6a9e62681656bf6de2b897b0587fe1f (commit)

commit 5475c202da83f16f641d0da0e1c07146e07904f5
Author: Kemal Ilgar Eroglu <ilgar_eroglu at yahoo.com>
Date:   Mon Feb 6 19:46:16 2012 +0200

    Various fixes in preparation of 0.6.4

 ChangeLog                     |   11 +++
 Makefile.am                   |    3 +-
 autogen.sh                    |   14 ++--
 configure.in.in               |   94 ++++++++++----------
 src/Makefile.am               |   11 +--
 src/xfce4-timer.desktop.in.in |    4 +-
 src/xfcetimer.c               |  193 +++++++++++++++++++++++++++++++++--------
 src/xfcetimer.h               |    1 +
 8 files changed, 230 insertions(+), 101 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2064aca..434b4fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+06/02/2012 Kemal Ilgar Eroglu <ilgar_eroglu at yahoo.com>
+	* Version 0.6.4
+	* Commit patch by Guido Berhoerster, replacing certain fixed-size strings with variable-size code. Fixes bug 8420.
+	* Commit patch by Guido Berhoerster, making the notification dialog modal and the add/edit window transient for the configuration window. Fixes bug 8420.
+	* Added an icon (thanks to Ilgim Eroglu).
+05/01/2012 Kemal Ilgar Eroglu <ilgar_eroglu at yahoo.com>
+	* Version 0.6.3
+	* The progressbar now goes from 100% to 0 in countdown (feature request #7900)
+	* Left click works on progressbar, too (bug #7902)
+	* Ability to sort timers (feature request #4220)
+	* Fixes in some .po files
 19/06/2011 Kemal Ilgar Eroglu <ilgar_eroglu at yahoo.com>
 	* Version 0.6.2
 	* Added pause/resume functionality
diff --git a/Makefile.am b/Makefile.am
index 83584a8..dcc8c7c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,8 @@
 
 SUBDIRS = \
 	src \
-	po
+	po \
+	icons
 
 AUTOMAKE_OPTIONS = \
 	1.8 \
diff --git a/autogen.sh b/autogen.sh
index 3308482..4301dea 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -14,13 +14,13 @@ EOF
 }
 
 # verify that po/LINGUAS is present
-(test -f po/LINGUAS) >/dev/null 2>&1 || {
-  cat >&2 <<EOF
-autogen.sh: The file po/LINGUAS could not be found. Please check your snapshot
-            or try to checkout again.
-EOF
-  exit 1
-}
+#(test -f po/LINGUAS) >/dev/null 2>&1 || {
+#  cat >&2 <<EOF
+#autogen.sh: The file po/LINGUAS could not be found. Please check your snapshot
+#            or try to checkout again.
+#EOF
+#  exit 1
+#}
 
 # substitute revision and linguas
 linguas=`sed -e '/^#/d' po/LINGUAS`
diff --git a/configure.in.in b/configure.in.in
index c989b12..1941f05 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -4,7 +4,7 @@ dnl If you don't want it to overwrite it,
 dnl 	Please disable it in the Anjuta project configuration
 
 dnl version info
-m4_define([xfce4_timer_version], [0.6.2])
+m4_define([xfce4_timer_version], [0.6.4])
 
 dnl init autoconf
 AC_INIT([xfce4-timer-plugin], [xfce4_timer_version], [ilgar_eroglu at yahoo.com])
@@ -55,54 +55,56 @@ else
   packageprefix=${prefix}
 fi
 
-dnl Set PACKAGE DATA & DOC DIR
-packagedatadir=share
-packagedocdir=doc/${PACKAGE}
-
-dnl Set PACKAGE DIRS in config.h.
-packagepixmapsdir=${packagedatadir}/pixmaps
-packagehelpdir=${packagedatadir}/help
-packagemenudir=${packagedatadir}
-
-dnl Subst PACKAGE_DATA_DIR.
-NO_PREFIX_PACKAGE_DATA_DIR="${packagedatadir}"
-AC_SUBST(NO_PREFIX_PACKAGE_DATA_DIR)
-PACKAGE_DATA_DIR="${packageprefix}/${packagedatadir}"
-AC_SUBST(PACKAGE_DATA_DIR)
-
-dnl Subst PACKAGE_DOC_DIR.
-NO_PREFIX_PACKAGE_DOC_DIR="${packagedocdir}"
-AC_SUBST(NO_PREFIX_PACKAGE_DOC_DIR)
-PACKAGE_DOC_DIR="${packageprefix}/${packagedocdir}"
-AC_SUBST(PACKAGE_DOC_DIR)
-
-dnl Subst PACKAGE_PIXMAPS_DIR.
-NO_PREFIX_PACKAGE_PIXMAPS_DIR="${packagepixmapsdir}"
-AC_SUBST(NO_PREFIX_PACKAGE_PIXMAPS_DIR)
-PACKAGE_PIXMAPS_DIR="${packageprefix}/${packagepixmapsdir}"
-AC_SUBST(PACKAGE_PIXMAPS_DIR)
-
-dnl Subst PACKAGE_HELP_DIR.
-NO_PREFIX_PACKAGE_HELP_DIR="${packagehelpdir}"
-AC_SUBST(NO_PREFIX_PACKAGE_HELP_DIR)
-PACKAGE_HELP_DIR="${packageprefix}/${packagehelpdir}"
-AC_SUBST(PACKAGE_HELP_DIR)
-
-dnl Subst PACKAGE_MENU_DIR.
-NO_PREFIX_PACKAGE_MENU_DIR="${packagemenudir}"
-AC_SUBST(NO_PREFIX_PACKAGE_MENU_DIR)
-PACKAGE_MENU_DIR="${packageprefix}/${packagemenudir}"
-AC_SUBST(PACKAGE_MENU_DIR)
-
-AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${packageprefix}/${packagedatadir}")
-AC_DEFINE_UNQUOTED(PACKAGE_DOC_DIR, "${packageprefix}/${packagedocdir}")
-AC_DEFINE_UNQUOTED(PACKAGE_PIXMAPS_DIR, "${packageprefix}/${packagepixmapsdir}")
-AC_DEFINE_UNQUOTED(PACKAGE_HELP_DIR, "${packageprefix}/${packagehelpdir}")
-AC_DEFINE_UNQUOTED(PACKAGE_MENU_DIR, "${packageprefix}/${packagemenudir}")
-AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}")
+#dnl Set PACKAGE DATA & DOC DIR
+#packagedatadir=share
+#packagedocdir=doc/${PACKAGE}
+
+#dnl Set PACKAGE DIRS in config.h.
+#packagepixmapsdir=${packagedatadir}/pixmaps
+#packagehelpdir=${packagedatadir}/help
+#packagemenudir=${packagedatadir}
+
+#dnl Subst PACKAGE_DATA_DIR.
+#NO_PREFIX_PACKAGE_DATA_DIR="${packagedatadir}"
+#AC_SUBST(NO_PREFIX_PACKAGE_DATA_DIR)
+#PACKAGE_DATA_DIR="${packageprefix}/${packagedatadir}"
+#AC_SUBST(PACKAGE_DATA_DIR)
+
+#dnl Subst PACKAGE_DOC_DIR.
+#NO_PREFIX_PACKAGE_DOC_DIR="${packagedocdir}"
+#AC_SUBST(NO_PREFIX_PACKAGE_DOC_DIR)
+#PACKAGE_DOC_DIR="${packageprefix}/${packagedocdir}"
+#AC_SUBST(PACKAGE_DOC_DIR)
+
+#dnl Subst PACKAGE_PIXMAPS_DIR.
+#NO_PREFIX_PACKAGE_PIXMAPS_DIR="${packagepixmapsdir}"
+#AC_SUBST(NO_PREFIX_PACKAGE_PIXMAPS_DIR)
+#PACKAGE_PIXMAPS_DIR="${packageprefix}/${packagepixmapsdir}"
+#AC_SUBST(PACKAGE_PIXMAPS_DIR)
+
+#dnl Subst PACKAGE_HELP_DIR.
+#NO_PREFIX_PACKAGE_HELP_DIR="${packagehelpdir}"
+#AC_SUBST(NO_PREFIX_PACKAGE_HELP_DIR)
+#PACKAGE_HELP_DIR="${packageprefix}/${packagehelpdir}"
+#AC_SUBST(PACKAGE_HELP_DIR)
+
+#dnl Subst PACKAGE_MENU_DIR.
+#NO_PREFIX_PACKAGE_MENU_DIR="${packagemenudir}"
+#AC_SUBST(NO_PREFIX_PACKAGE_MENU_DIR)
+#PACKAGE_MENU_DIR="${packageprefix}/${packagemenudir}"
+#AC_SUBST(PACKAGE_MENU_DIR)
+
+#AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${packageprefix}/${packagedatadir}")
+#AC_DEFINE_UNQUOTED(PACKAGE_DOC_DIR, "${packageprefix}/${packagedocdir}")
+#AC_DEFINE_UNQUOTED(PACKAGE_PIXMAPS_DIR, "${packageprefix}/${packagepixmapsdir}")
+#AC_DEFINE_UNQUOTED(PACKAGE_HELP_DIR, "${packageprefix}/${packagehelpdir}")
+#AC_DEFINE_UNQUOTED(PACKAGE_MENU_DIR, "${packageprefix}/${packagemenudir}")
+#AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}")
 
 AC_OUTPUT([
 Makefile
 po/Makefile.in
 src/Makefile
+icons/Makefile
+icons/48x48/Makefile
 ])
diff --git a/src/Makefile.am b/src/Makefile.am
index 987aa4a..88fa944 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -31,10 +31,11 @@ xfce4_timer_CFLAGS =						\
 #libxfce4_timer_la_LIBADD = 						\
 #	@XFCE4_PANEL_LIBS@
 
+desktopdir = $(datadir)/xfce4/panel-plugins
 desktop_in_in_files = xfce4-timer.desktop.in.in
 desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
-	
-desktopdir = $(datadir)/xfce4/panel-plugins
+%.desktop.in: %.desktop.in.in
+	sed -e "s,\@libexecdir\@,$(libexecdir),g" < $< > $@	
 desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 @INTLTOOL_DESKTOP_RULE@
 
@@ -43,8 +44,4 @@ EXTRA_DIST = 				\
 
 DISTCLEANFILES =			\
 	$(desktop_DATA) $(desktop_in_files)
-	
-# get full path into .desktop file
-%.desktop.in: %.desktop.in.in
-	sed -e "s^@EXTERNAL_PLUGIN_PATH@^$(libexecdir)/xfce4/panel-plugins^" \
-		$< > $@
+
diff --git a/src/xfce4-timer.desktop.in.in b/src/xfce4-timer.desktop.in.in
index 02aad9b..1d2a950 100644
--- a/src/xfce4-timer.desktop.in.in
+++ b/src/xfce4-timer.desktop.in.in
@@ -3,6 +3,6 @@ Type=X-XFCE-PanelPlugin
 Encoding=UTF-8
 _Name=Xfce4 Timer
 _Comment=Timer plugin for Xfce 4.4 panel
-Icon=gtk-paste
-X-XFCE-Exec=@EXTERNAL_PLUGIN_PATH@/xfce4-timer
+Icon=xfce4-timer
+X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-timer
 X-XFCE-Unique=true
diff --git a/src/xfcetimer.c b/src/xfcetimer.c
index 9f59673..0bda1e7 100644
--- a/src/xfcetimer.c
+++ b/src/xfcetimer.c
@@ -83,7 +83,7 @@ static gboolean update_function (gpointer data){
 
   plugin_data *pd=(plugin_data *)data;
   gint elapsed_sec,remaining;
-  gchar tiptext[64];
+  gchar *tiptext = NULL;
   GtkWidget *dialog;
 
   elapsed_sec=(gint)g_timer_elapsed(pd->timer,NULL);
@@ -97,21 +97,23 @@ static gboolean update_function (gpointer data){
      remaining=pd->timeout_period_in_sec-elapsed_sec;
 
      if(remaining>=3600)
-       g_snprintf(tiptext,31,_("%dh %dm %ds left"),remaining/3600, (remaining%3600)/60,
+       tiptext = g_strdup_printf(_("%dh %dm %ds left"),remaining/3600, (remaining%3600)/60,
             remaining%60);
      else if (remaining>=60)
-       g_snprintf(tiptext,31,_("%dm %ds left"),remaining/60, remaining%60);
+       tiptext = g_strdup_printf(_("%dm %ds left"),remaining/60, remaining%60);
      else
-       g_snprintf(tiptext,31,_("%ds left"),remaining);
+       tiptext = g_strdup_printf(_("%ds left"),remaining);
        
      if(pd->is_paused)
        g_strlcat(tiptext,_(" (Paused)"),64);
 
      gtk_progress_bar_set_fraction  (GTK_PROGRESS_BAR(pd->pbar),
-                    ((gdouble)elapsed_sec)/pd->timeout_period_in_sec);
+                    1.0-((gdouble)elapsed_sec)/pd->timeout_period_in_sec);
 
      gtk_tooltips_set_tip(pd->tip,GTK_WIDGET(pd->base),tiptext,NULL);
 
+     g_free(tiptext);
+
      return TRUE;
 
   }
@@ -123,7 +125,7 @@ static gboolean update_function (gpointer data){
   if( (strlen(pd->timeout_command)==0) || !pd->nowin_if_alarm ) {
     gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pd->pbar),1);
     dialog = gtk_message_dialog_new     (NULL,
-                                    GTK_DIALOG_DESTROY_WITH_PARENT,
+                                    GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
                                     GTK_MESSAGE_WARNING,
                                     GTK_BUTTONS_CLOSE,
                                     _("Beeep! :) \nTime is up!"));
@@ -394,7 +396,7 @@ void make_menu(plugin_data *pd){
   GSList *group=NULL;
   GtkWidget *menuitem;
   gchar *timername,*timerinfo;
-  gchar itemtext[256];
+  gchar *itemtext = NULL;
   gint row_count;
 
 
@@ -436,7 +438,7 @@ void make_menu(plugin_data *pd){
       /*g_fprintf(stderr,"\nMaking menuitem %d while selected is %d",row_count,pd->
                                 selected);*/
       gtk_tree_model_get(GTK_TREE_MODEL(pd->list),&iter,1,&timername,2,&timerinfo,-1);
-      g_snprintf(itemtext,255,"%s (%s)",timername,timerinfo);
+      itemtext = g_strdup_printf("%s (%s)",timername,timerinfo);
       menuitem=gtk_radio_menu_item_new_with_label(group,itemtext);
       gtk_widget_show(menuitem);
       g_free(timername);
@@ -454,6 +456,7 @@ void make_menu(plugin_data *pd){
       gtk_menu_shell_append(GTK_MENU_SHELL(pd->menu),menuitem);
 
       /*g_fprintf(stderr,"\nAdding menuitem with label : %s",itemtext);*/
+      g_free(itemtext);
 
       /* We add the address of menuitem to the array */
       g_array_append_val(pd->menuarray,menuitem);
@@ -516,7 +519,7 @@ static void ok_add(GtkButton *button, gpointer data){
   alarm_data *adata = (alarm_data *)data;
   GtkTreeIter iter;
   gint t1,t2,t3,t;
-  gchar timeinfo[16];
+  gchar *timeinfo = NULL;
 
   /* Add item to the list */
   gtk_list_store_append(adata->pd->list,&iter);
@@ -541,11 +544,11 @@ static void ok_add(GtkButton *button, gpointer data){
 
     gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,5,t,-1);
     if(t1>0)
-       g_snprintf(timeinfo,15,_("%dh %dm %ds"),t1,t2,t3);
+       timeinfo = g_strdup_printf(_("%dh %dm %ds"),t1,t2,t3);
     else if(t2>0)
-       g_snprintf(timeinfo,15,_("%dm %ds"),t2,t3);
+       timeinfo = g_strdup_printf(_("%dm %ds"),t2,t3);
     else
-       g_snprintf(timeinfo,15,_("%ds"),t3);
+       timeinfo = g_strdup_printf(_("%ds"),t3);
 
     gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,2,timeinfo,-1);
   }
@@ -555,7 +558,7 @@ static void ok_add(GtkButton *button, gpointer data){
     t2=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(adata->time_m));
     t=t1*60+t2;
     gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,5,t,-1);
-    g_snprintf(timeinfo,9,_("At %02d:%02d"),t1,t2);
+    timeinfo = g_strdup_printf(_("At %02d:%02d"),t1,t2);
     gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,2,timeinfo,-1);
 
   }
@@ -567,6 +570,7 @@ static void ok_add(GtkButton *button, gpointer data){
   gtk_widget_destroy(GTK_WIDGET(adata->window));
 
   g_free(adata);
+  g_free(timeinfo);
 }
 
 
@@ -593,7 +597,7 @@ static void ok_edit(GtkButton *button, gpointer data){
   alarm_data *adata = (alarm_data *)data;
   GtkTreeIter iter;
   gint t1,t2,t3,t;
-  gchar timeinfo[10];
+  gchar *timeinfo = NULL;
 
   GtkTreeSelection *select;
   GtkTreeModel *model;
@@ -614,12 +618,12 @@ static void ok_edit(GtkButton *button, gpointer data){
         t3=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(adata->times));
         t=t1*3600+t2*60+t3;
         gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,5,t,-1);
-       if(t1>0)
-          g_snprintf(timeinfo,15,_("%dh %dm %ds"),t1,t2,t3);
-       else if(t2>0)
-          g_snprintf(timeinfo,15,_("%dm %ds"),t2,t3);
-       else
-          g_snprintf(timeinfo,15,_("%ds"),t3);
+        if(t1>0)
+           timeinfo = g_strdup_printf(_("%dh %dm %ds"),t1,t2,t3);
+        else if(t2>0)
+           timeinfo = g_strdup_printf(_("%dm %ds"),t2,t3);
+        else
+           timeinfo = g_strdup_printf(_("%ds"),t3);
 
         gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,2,timeinfo,-1);
       }
@@ -629,7 +633,7 @@ static void ok_edit(GtkButton *button, gpointer data){
         t2=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(adata->time_m));
         t=t1*60+t2;
         gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,5,t,-1);
-        g_snprintf(timeinfo,9,_("At %02d:%02d"),t1,t2);
+        timeinfo = g_strdup_printf(_("At %02d:%02d"),t1,t2);
         gtk_list_store_set(GTK_LIST_STORE(adata->pd->list),&iter,2,timeinfo,-1);
 
       }
@@ -641,6 +645,7 @@ static void ok_edit(GtkButton *button, gpointer data){
   gtk_widget_destroy(GTK_WIDGET(adata->window));
 
   g_free(adata);
+  g_free(timeinfo);
 }
 
 /**
@@ -679,6 +684,7 @@ static void add_edit_clicked (GtkButton *buttonn, gpointer data){
 
   plugin_data *pd = (plugin_data *)data;
 
+  GtkWindow *parent_window;
   GtkWindow *window;
   GtkLabel *label;
   GtkEntry *name,*command;
@@ -697,6 +703,9 @@ static void add_edit_clicked (GtkButton *buttonn, gpointer data){
   adata->pd=pd;
 
   gtk_window_set_modal(GTK_WINDOW(window),TRUE);
+  parent_window = gtk_widget_get_toplevel(buttonn);
+  if (gtk_widget_is_toplevel(parent_window))
+      gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(parent_window));
 
   vbox=gtk_vbox_new(FALSE, BORDER);
   gtk_container_add(GTK_CONTAINER(window),vbox);
@@ -897,6 +906,104 @@ static void remove_clicked(GtkButton *button, gpointer data){
 
 }
 
+/**
+ * Moves an alarm one row up in the list
+**/
+static void up_clicked(GtkButton *button, gpointer data){
+
+  plugin_data *pd = (plugin_data *)data;
+
+  GtkTreeIter iter,iter_prev;
+  GtkTreeSelection *select;
+  gboolean valid;
+  gint row_count;
+
+  /* Get the selected row */
+  select=gtk_tree_view_get_selection(GTK_TREE_VIEW(pd->tree));
+
+  valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(pd->list), &iter_prev);
+  
+  /* First item can't be moved up */
+  if(!valid || gtk_tree_selection_iter_is_selected(select,&iter_prev))
+	return;
+
+  iter = iter_prev;
+  valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(pd->list), &iter);
+ 
+  row_count=1;
+
+  while (valid){
+
+
+     /* The selected one is swapped with the previous one */
+     if(gtk_tree_selection_iter_is_selected(select,&iter)){
+
+	   gtk_list_store_swap(pd->list, &iter, &iter_prev);
+       if(pd->selected == row_count) /* Update the index of the selected item */
+          pd->selected = row_count-1;          
+       else if(pd->selected == row_count-1)
+          pd->selected = row_count;
+       break;
+     }
+
+	 iter_prev = iter;
+     valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(pd->list), &iter);    
+     row_count++;   
+
+  }
+
+  make_menu(pd);
+
+}
+
+/**
+ * Moves an alarm one row down in the list
+**/
+static void down_clicked(GtkButton *button, gpointer data){
+
+  plugin_data *pd = (plugin_data *)data;
+
+  GtkTreeIter iter,iter_next;
+  GtkTreeSelection *select;
+  gboolean valid;
+  gint row_count;
+
+  /* Get the selected row */
+  select=gtk_tree_view_get_selection(GTK_TREE_VIEW(pd->tree));
+
+  valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(pd->list), &iter);
+
+  if(!valid)
+	return;
+
+  iter_next = iter;
+  valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(pd->list), &iter_next);
+ 
+  row_count=0;
+
+  while (valid){
+
+
+     /* The selected one is swapped with the next one */
+     if(gtk_tree_selection_iter_is_selected(select,&iter)){
+
+	   gtk_list_store_swap(pd->list, &iter, &iter_next);
+       if(pd->selected == row_count) /* Update the index of the selected item */
+          pd->selected = row_count+1;          
+       else if(pd->selected == row_count+1)
+          pd->selected = row_count - 1;
+       break;
+     }
+
+	 iter = iter_next;
+     valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(pd->list), &iter_next);    
+     row_count++;   
+
+  }
+
+  make_menu(pd);
+
+}
 
 /**
  * Adds the progressbar, taking into account the orientation.
@@ -904,7 +1011,9 @@ static void remove_clicked(GtkButton *button, gpointer data){
 **/
 static void add_pbar(XfcePanelPlugin *plugin, plugin_data *pd){
 
-  gtk_widget_hide(pd->eventbox);
+  //g_signal_handler_disconnect (G_OBJECT(plugin), pd->handler);
+
+  gtk_widget_hide(GTK_WIDGET(plugin));
 
   xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
 
@@ -918,7 +1027,7 @@ static void add_pbar(XfcePanelPlugin *plugin, plugin_data *pd){
   /* vertical bar */
   if(xfce_panel_plugin_get_orientation(plugin)==GTK_ORIENTATION_HORIZONTAL){
     pd->box=gtk_hbox_new(TRUE,0);
-    gtk_container_add(GTK_CONTAINER(pd->eventbox),pd->box);
+    gtk_container_add(GTK_CONTAINER(plugin),pd->box);
     gtk_progress_bar_set_orientation    (GTK_PROGRESS_BAR(pd->
                     pbar),GTK_PROGRESS_BOTTOM_TO_TOP);
     gtk_widget_set_size_request(GTK_WIDGET(pd->pbar),PBAR_THICKNESS,0);
@@ -929,7 +1038,7 @@ static void add_pbar(XfcePanelPlugin *plugin, plugin_data *pd){
   }
   else{ /* horizontal bar */
     pd->box=gtk_vbox_new(TRUE,0);
-    gtk_container_add(GTK_CONTAINER(pd->eventbox),pd->box);
+    gtk_container_add(GTK_CONTAINER(plugin),pd->box);
     gtk_progress_bar_set_orientation    (GTK_PROGRESS_BAR(pd->
                     pbar),GTK_PROGRESS_LEFT_TO_RIGHT);
     gtk_widget_set_size_request(GTK_WIDGET(pd->pbar),0,PBAR_THICKNESS);
@@ -938,8 +1047,11 @@ static void add_pbar(XfcePanelPlugin *plugin, plugin_data *pd){
     gtk_box_pack_start(GTK_BOX(pd->box),gtk_hseparator_new(),FALSE,FALSE,0);
 
   }
+  
+  gtk_widget_show_all(GTK_WIDGET(plugin));
 
-  gtk_widget_show_all(pd->eventbox);
+  g_signal_connect  (G_OBJECT(plugin), "button_press_event",
+            G_CALLBACK(pbar_clicked), pd);       
 }
 
 /**
@@ -1150,6 +1262,8 @@ static void tree_selected (GtkTreeSelection *select, gpointer data){
 
   gtk_widget_set_sensitive(pd->buttonedit,TRUE);
   gtk_widget_set_sensitive(pd->buttonremove,TRUE);
+  gtk_widget_set_sensitive(pd->buttonup,TRUE);
+  gtk_widget_set_sensitive(pd->buttondown,TRUE);
 
 }
 
@@ -1189,7 +1303,6 @@ plugin_free (XfcePanelPlugin *plugin, plugin_data *pd)
     g_array_free(pd->menuarray,TRUE);
 
   /* destroy all widgets */
-  gtk_widget_destroy(GTK_WIDGET(pd->eventbox));
 
   /* destroy the tooltips */
   /*gtk_object_destroy(GTK_OBJECT(pd->tip));*/
@@ -1364,21 +1477,33 @@ static void plugin_create_options (XfcePanelPlugin *plugin,plugin_data *pd) {
   pd->buttonadd=button;
   gtk_box_pack_start(GTK_BOX (buttonbox), button, FALSE, FALSE,WIDGET_SPACING<<1);
   gtk_widget_set_sensitive(button,TRUE);
-  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(add_edit_clicked),                                     pd);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(add_edit_clicked), pd);
 
 
   button = gtk_button_new_from_stock (GTK_STOCK_EDIT);
   pd->buttonedit=button;
   gtk_box_pack_start(GTK_BOX (buttonbox), button, FALSE, FALSE,WIDGET_SPACING<<1);
   gtk_widget_set_sensitive(button,FALSE);
-  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(add_edit_clicked),                                     pd);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(add_edit_clicked), pd);
 
   button = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
   pd->buttonremove=button;
   gtk_box_pack_start(GTK_BOX (buttonbox), button, FALSE, FALSE,WIDGET_SPACING);
   gtk_widget_set_sensitive(button,FALSE);
-  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(remove_clicked),                                       pd);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(remove_clicked), pd);
 
+  button = gtk_button_new_from_stock (GTK_STOCK_GO_UP);
+  pd->buttonup=button;
+  gtk_box_pack_start(GTK_BOX (buttonbox), button, FALSE, FALSE,WIDGET_SPACING);
+  gtk_widget_set_sensitive(button,FALSE);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(up_clicked), pd);
+  
+  button = gtk_button_new_from_stock (GTK_STOCK_GO_DOWN);
+  pd->buttondown=button;
+  gtk_box_pack_start(GTK_BOX (buttonbox), button, FALSE, FALSE,WIDGET_SPACING);
+  gtk_widget_set_sensitive(button,FALSE);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK(down_clicked), pd);
+  
   gtk_box_pack_start(GTK_BOX(vbox),gtk_hseparator_new(),FALSE,FALSE,BORDER);
 
   button=gtk_check_button_new_with_label(_("Don't display a warning  if an alarm command is set"));
@@ -1453,8 +1578,6 @@ create_plugin_control (XfcePanelPlugin *plugin)
          G_TYPE_INT);    /* Timer period in seconds if countdown.
                     Alarm time in minutes if 24h format is used,
                     (i.e. 60 x Hr + Min) */
-
-  pd->eventbox=gtk_event_box_new();
   pd->box=NULL;
   pd->timer_on=FALSE;
   pd->timeout=0;
@@ -1493,10 +1616,7 @@ create_plugin_control (XfcePanelPlugin *plugin)
   load_settings(pd);
 
   make_menu(pd);
-
-  g_signal_connect  (G_OBJECT(pd->eventbox), "button_press_event",
-            G_CALLBACK(pbar_clicked), pd);
-
+                      
   gtk_progress_bar_set_bar_style    (GTK_PROGRESS_BAR(pd->pbar),
                     GTK_PROGRESS_CONTINUOUS);
   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pd->pbar),0);
@@ -1504,12 +1624,9 @@ create_plugin_control (XfcePanelPlugin *plugin)
   add_pbar(pd->base,pd);
 
   /* Trying to get a thin box, but no way */
-  /*gtk_widget_set_size_request(pd->eventbox,0,0);*/
   gtk_widget_set_size_request(GTK_WIDGET(plugin),10,10);
   xfce_panel_plugin_set_expand(plugin,FALSE);
 
-  gtk_container_add(GTK_CONTAINER(plugin),pd->eventbox);
-
   gtk_widget_show_all(GTK_WIDGET(plugin));
 
   g_signal_connect (plugin, "free-data",
diff --git a/src/xfcetimer.h b/src/xfcetimer.h
index 0b82a5f..041b992 100644
--- a/src/xfcetimer.h
+++ b/src/xfcetimer.h
@@ -28,6 +28,7 @@ typedef struct {
 		*pbar, 					/* Progress bar */
 		*tree, 					/* Treeview */
 		*buttonadd,*buttonedit,*buttonremove,	/* options window buttons */
+		*buttonup, *buttondown,
 		*spin_repeat, *spin_interval,		/* spinbuttons for alarm repeat */
 		*menu,
 		*repeat_alarm_box;			/* Box holding the repeat 


More information about the Xfce4-commits mailing list