X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fmain.c;h=1b86c2297395dab8238cea68c11e32c8ba850b74;hb=2677486f46ca29b0600b3f57efda242ba06fd7eb;hp=f791684c7551bb2e550e5732789c364c9a52f472;hpb=156559c34ff1d61b2045365b85a9613b854119ba;p=ptask.git diff --git a/src/main.c b/src/main.c index f791684..1b86c22 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 jeanfi@gmail.com + * Copyright (C) 2012-2013 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -20,14 +20,18 @@ #include #include #include +#include #include #include -#include +#include + +#include "log.h" #include "note.h" #include "tw.h" +#include static const char *program_name; static struct task **tasks; @@ -39,6 +43,7 @@ static GtkWidget *w_tasksave_btn; static GtkWidget *w_taskdone_btn; static GtkComboBox *w_status; static GtkComboBox *w_priority; +/*static GSettings *settings;*/ enum { COL_ID, @@ -51,6 +56,7 @@ enum { static struct option long_options[] = { {"version", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, + {"debug", required_argument, 0, 'd'}, {0, 0, 0, 0} }; @@ -70,7 +76,8 @@ static void print_help() { printf(_("Usage: %s [OPTION]...\n"), program_name); - puts(_("Ptask is a task management UI based on taskwarrior.")); + puts(_("ptask is a task management user interface based" + " on taskwarrior.")); puts(""); puts(_("Options:")); @@ -79,6 +86,11 @@ static void print_help() puts(""); + puts(_(" -d, --debug=LEVEL " + "set the debug level, integer between 0 and 3")); + + puts(""); + printf(_("Report bugs to: %s\n"), PACKAGE_BUGREPORT); puts(""); printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); @@ -94,7 +106,7 @@ static struct task *get_selected_task(GtkTreeView *treeview) GValue value = {0,}; const char *uuid; - printf("get_selected_task\n"); + log_debug("get_selected_task"); gtk_tree_view_get_cursor(treeview, &path, &cols); @@ -138,6 +150,7 @@ static void clear_task_panel() static void refresh() { + GtkWidget *dialog; GtkTreeModel *model; struct task **tasks_cur; struct task *task; @@ -146,11 +159,11 @@ static void refresh() int status; const char *project; - printf("refresh\n"); + log_debug("refresh"); clear_task_panel(); status = gtk_combo_box_get_active(w_status); - printf("status: %d\n", status); + log_debug("status: %d", status); if (tasks) tw_task_list_free(tasks); @@ -168,26 +181,40 @@ static void refresh() model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview)); gtk_list_store_clear(GTK_LIST_STORE(model)); - for (tasks_cur = tasks, i = 0; *tasks_cur; tasks_cur++, i++) { - task = (*tasks_cur); - - gtk_list_store_append(GTK_LIST_STORE(model), &iter); - if (task->project) - project = task->project; - else - project = ""; - - gtk_list_store_set(GTK_LIST_STORE(model), - &iter, - COL_ID, (*tasks_cur)->id, - COL_DESCRIPTION, (*tasks_cur)->description, - COL_PROJECT, project, - COL_UUID, (*tasks_cur)->uuid, - COL_PRIORITY, (*tasks_cur)->priority, - -1); + if (tasks) { + for (tasks_cur = tasks, i = 0; *tasks_cur; tasks_cur++, i++) { + task = (*tasks_cur); + + gtk_list_store_append(GTK_LIST_STORE(model), &iter); + + if (task->project) + project = task->project; + else + project = ""; + + gtk_list_store_set(GTK_LIST_STORE(model), + &iter, + COL_ID, (*tasks_cur)->id, + COL_DESCRIPTION, + (*tasks_cur)->description, + COL_PROJECT, project, + COL_UUID, (*tasks_cur)->uuid, + COL_PRIORITY, (*tasks_cur)->priority, + -1); + } + } else { + dialog = gtk_message_dialog_new(NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("Error loading tasks, verify " + "that a supported version of " + "taskwarrior is installed ")); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); } - printf("refresh done\n"); + log_debug("refresh done"); } int taskdone_clicked_cbk(GtkButton *btn, gpointer data) @@ -212,7 +239,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data) task = get_selected_task(GTK_TREE_VIEW(w_treeview)); - printf("tasksave_clicked_cbk %d\n", task->id); + log_debug("tasksave_clicked_cbk %d", task->id); buf = gtk_text_view_get_buffer(w_note); @@ -220,7 +247,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data) gtk_text_buffer_get_iter_at_offset(buf, &eIter, -1); txt = gtk_text_buffer_get_text(buf, &sIter, &eIter, TRUE); - printf("note=%s\n", txt); + log_debug("note=%s", txt); if (!task->note || strcmp(txt, task->note)) note_put(task->uuid, txt); @@ -234,7 +261,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data) tw_modify_project(task->uuid, ctxt); priority = gtk_combo_box_get_active(w_priority); - printf("priority: %d\n", priority); + log_debug("priority: %d", priority); switch (priority) { case 3: @@ -260,7 +287,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data) int refresh_clicked_cbk(GtkButton *btn, gpointer data) { - printf("refresh_clicked_cbk\n"); + log_debug("refresh_clicked_cbk"); refresh(); return FALSE; @@ -283,7 +310,7 @@ int newtask_clicked_cbk(GtkButton *btn, gpointer data) GtkEntry *entry; const char *ctxt; - printf("newtask_clicked_cbk\n"); + log_debug("newtask_clicked_cbk"); builder = gtk_builder_new(); gtk_builder_add_from_file @@ -296,17 +323,17 @@ int newtask_clicked_cbk(GtkButton *btn, gpointer data) result = gtk_dialog_run(diag); if (result == GTK_RESPONSE_ACCEPT) { - printf("ok\n"); + log_debug("ok"); entry = GTK_ENTRY(gtk_builder_get_object (builder, "diag_tasknew_description")); ctxt = gtk_entry_get_text(entry); - printf("%s\n", ctxt); + log_debug("%s", ctxt); tw_add(ctxt); refresh(); } else { - printf("cancel\n"); + log_debug("cancel"); } g_object_unref(G_OBJECT(builder)); @@ -318,7 +345,7 @@ int newtask_clicked_cbk(GtkButton *btn, gpointer data) static int status_changed_cbk(GtkComboBox *w, gpointer data) { - printf("status_changed_cbk\n"); + log_debug("status_changed_cbk"); refresh(); return FALSE; @@ -344,7 +371,7 @@ static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) GtkTextBuffer *buf; int priority; - printf("cursor_changed_cbk\n"); + log_debug("cursor_changed_cbk"); task = get_selected_task(treeview); @@ -375,9 +402,9 @@ static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) priority = priority_to_int(task->priority); gtk_combo_box_set_active(w_priority, priority); } else { - printf("clear task widgets\n"); + log_debug("clear task widgets"); clear_task_panel(); - printf("clear task widgets done\n"); + log_debug("clear task widgets done"); } return FALSE; @@ -408,9 +435,32 @@ static gint priority_cmp(GtkTreeModel *model, return 0; } +static void log_init() +{ + char *home, *path, *dir; + + home = getenv("HOME"); + + if (!home) + return ; + + dir = malloc(strlen(home)+1+strlen(".ptask")+1); + sprintf(dir, "%s/%s", home, ".ptask"); + mkdir(dir, 0777); + + path = malloc(strlen(dir)+1+strlen("log")+1); + sprintf(path, "%s/%s", dir, "log"); + + log_open(path); + + free(dir); + free(path); +} + int main(int argc, char **argv) { - GtkWidget *window, *btn; + GtkWindow *window; + GtkWidget *btn; GtkBuilder *builder; GtkTreeModel *model; int optc, cmdok, opti; @@ -425,7 +475,7 @@ int main(int argc, char **argv) #endif cmdok = 1; - while ((optc = getopt_long(argc, argv, "vh", long_options, + while ((optc = getopt_long(argc, argv, "vhd:", long_options, &opti)) != -1) { switch (optc) { case 'h': @@ -434,6 +484,10 @@ int main(int argc, char **argv) case 'v': print_version(); exit(EXIT_SUCCESS); + case 'd': + log_level = atoi(optarg); + log_info(_("Enables debug mode.")); + break; default: cmdok = 0; break; @@ -446,13 +500,21 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } + log_init(); + gtk_init(NULL, NULL); + + /* settings = g_settings_new("ptask"); + + printf("%d\n", g_settings_get_int(settings, "windows_x"));*/ + builder = gtk_builder_new(); gtk_builder_add_from_file (builder, PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "ptask.glade", NULL); - window = GTK_WIDGET(gtk_builder_get_object(builder, "window")); + /* window = create_window();*/ + window = GTK_WINDOW(gtk_builder_get_object(builder, "window")); g_signal_connect(window, "delete_event", G_CALLBACK(delete_event_cbk), NULL); @@ -497,7 +559,7 @@ int main(int argc, char **argv) g_object_unref(G_OBJECT(builder)); - gtk_widget_show_all(window); + gtk_widget_show_all(GTK_WIDGET(window)); gtk_main();