Add a configuration value to re-order tasks

This commit is contained in:
Pierre Pronchery 2015-10-01 22:06:56 +02:00
parent 8f1ce0080b
commit 1e09de2e4c

View File

@ -50,6 +50,7 @@ typedef struct _Task
GtkWidget * image; GtkWidget * image;
GtkWidget * label; GtkWidget * label;
gboolean delete; gboolean delete;
gboolean reorder;
} Task; } Task;
struct _PanelApplet struct _PanelApplet
@ -58,6 +59,7 @@ struct _PanelApplet
Task ** tasks; Task ** tasks;
size_t tasks_cnt; size_t tasks_cnt;
gboolean label; gboolean label;
gboolean reorder;
GtkWidget * widget; GtkWidget * widget;
GtkWidget * hbox; GtkWidget * hbox;
@ -88,8 +90,8 @@ static const char * _tasks_atom[TASKS_ATOM_COUNT] =
/* prototypes */ /* prototypes */
/* task */ /* task */
static Task * _task_new(Tasks * tasks, gboolean label, Window window, static Task * _task_new(Tasks * tasks, gboolean label, gboolean reorder,
char const * name, GdkPixbuf * pixbuf); Window window, char const * name, GdkPixbuf * pixbuf);
static void _task_delete(Task * Task); static void _task_delete(Task * Task);
static void _task_set(Task * task, char const * name, GdkPixbuf * pixbuf); static void _task_set(Task * task, char const * name, GdkPixbuf * pixbuf);
static void _task_toggle_state(Task * task, TasksAtom state); static void _task_toggle_state(Task * task, TasksAtom state);
@ -157,8 +159,8 @@ PanelAppletDefinition applet =
/* functions */ /* functions */
/* Task */ /* Task */
/* task_new */ /* task_new */
static Task * _task_new(Tasks * tasks, gboolean label, Window window, static Task * _task_new(Tasks * tasks, gboolean label, gboolean reorder,
char const * name, GdkPixbuf * pixbuf) Window window, char const * name, GdkPixbuf * pixbuf)
{ {
Task * task; Task * task;
GtkWidget * hbox; GtkWidget * hbox;
@ -181,6 +183,7 @@ static Task * _task_new(Tasks * tasks, gboolean label, Window window,
_task_on_clicked), task); _task_on_clicked), task);
task->image = gtk_image_new(); task->image = gtk_image_new();
task->delete = FALSE; task->delete = FALSE;
task->reorder = reorder;
#if GTK_CHECK_VERSION(3, 0, 0) #if GTK_CHECK_VERSION(3, 0, 0)
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
#else #else
@ -284,6 +287,7 @@ static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
tasks->helper = helper; tasks->helper = helper;
tasks->tasks = NULL; tasks->tasks = NULL;
tasks->tasks_cnt = 0; tasks->tasks_cnt = 0;
/* config: label */
if((p = helper->config_get(helper->panel, "tasks", "label")) != NULL) if((p = helper->config_get(helper->panel, "tasks", "label")) != NULL)
tasks->label = strtol(p, NULL, 0) ? TRUE : FALSE; tasks->label = strtol(p, NULL, 0) ? TRUE : FALSE;
else else
@ -291,6 +295,15 @@ static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
tasks->label = FALSE; tasks->label = FALSE;
#else #else
tasks->label = TRUE; tasks->label = TRUE;
#endif
/* config: reorder */
if((p = helper->config_get(helper->panel, "tasks", "reorder")) != NULL)
tasks->reorder = strtol(p, NULL, 0) ? TRUE : FALSE;
else
#ifdef EMBEDDED
tasks->reorder = TRUE;
#else
tasks->reorder = FALSE;
#endif #endif
#if GTK_CHECK_VERSION(3, 0, 0) #if GTK_CHECK_VERSION(3, 0, 0)
tasks->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); tasks->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
@ -624,14 +637,14 @@ static int _do_tasks_add(Tasks * tasks, int desktop, Window window,
== NULL) == NULL)
return 1; return 1;
tasks->tasks = q; tasks->tasks = q;
if((p = _task_new(tasks, tasks->label, window, name, pixbuf)) == NULL) if((p = _task_new(tasks, tasks->label, tasks->reorder, window, name,
pixbuf)) == NULL)
return 1; return 1;
tasks->tasks[tasks->tasks_cnt++] = p; tasks->tasks[tasks->tasks_cnt++] = p;
gtk_widget_show_all(p->widget); gtk_widget_show_all(p->widget);
gtk_box_pack_start(GTK_BOX(tasks->hbox), p->widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(tasks->hbox), p->widget, FALSE, TRUE, 0);
#ifdef EMBEDDED if(tasks->reorder)
gtk_box_reorder_child(GTK_BOX(tasks->hbox), p->widget, 0); gtk_box_reorder_child(GTK_BOX(tasks->hbox), p->widget, 0);
#endif
return 0; return 0;
} }
@ -700,9 +713,9 @@ static void _task_on_clicked(gpointer data)
Task * task = data; Task * task = data;
_clicked_activate(task); _clicked_activate(task);
#ifdef EMBEDDED if(task->reorder)
gtk_box_reorder_child(GTK_BOX(task->tasks->hbox), task->widget, 0); gtk_box_reorder_child(GTK_BOX(task->tasks->hbox), task->widget,
#endif 0);
} }
static void _clicked_activate(Task * task) static void _clicked_activate(Task * task)