Esempio n. 1
0
void DateFilter::on_filtertype_changed() {
	Glib::ustring text = m_filter_type->get_active_text();
	
	if(text == gettext("None")) {
		m_filter_date->hide();
		m_filter_range->hide();
		m_startdate.clear();
		m_enddate.clear();
	}

	if(text == gettext("Today")) {
		m_filter_date->hide();
		m_filter_range->hide();
		set_today();
	}

	if(text == gettext("Yesterday")) {
		m_filter_date->hide();
		m_filter_range->hide();
		set_yesterday();
	}

	if(text == gettext("Date")) {
		m_filter_date->show();
		m_filter_range->hide();
		if(m_startdate.empty()) {
			set_today();
		}
		m_enddate.clear();
	}

	if(text == gettext("Range")) {
		m_filter_date->show();
		m_filter_range->show();
		if(m_startdate.empty()) {
			set_today();
		}
		if(m_enddate.empty()) {
			m_enddate = m_startdate;
		}
	}


	update_labels();
}
Esempio n. 2
0
File: gui.c Progetto: rosedu/osmo
gint 
key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) {

gint page;

    page = gtk_notebook_get_current_page (GTK_NOTEBOOK(notebook));

    /************************************************************************/
    /*** CALENDAR PAGE                                                    ***/
    /************************************************************************/

    if(page == PAGE_CALENDAR) {

        if (!config.day_notes_visible) {

            switch (event->keyval) {
                case GDK_Left:
                    calendar_btn_prev_day();
                    return TRUE;
                case GDK_Right:
                    calendar_btn_next_day();
                    return TRUE;
                case GDK_Up:
                    calendar_btn_prev_week();
                    return TRUE;
                case GDK_Down:
                    calendar_btn_next_week();
                    return TRUE;
                case GDK_Home:
                    calendar_btn_prev_year();
                    return TRUE;
                case GDK_End:
                    calendar_btn_next_year();
                    return TRUE;
                case GDK_Return:
                    if (calendar_only == FALSE) {
                        gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(notes_button), 
                                                     !gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(notes_button)));
                    }
                    return TRUE;
                case GDK_space:
                    set_today (TRUE);
                    return TRUE;
                case GDK_Delete:
                    if (calendar_only == FALSE) {
                        calendar_clear_text_cb (NULL, NULL);
                    }
                    return TRUE;
                case GDK_g:
                    calendar_create_jumpto_window ();
                    return TRUE;
                case GDK_f:
                    calendar_create_fullyear_window ();
                    return TRUE;
            }

        }

        switch (event->keyval) {

            case GDK_Escape:
                if (calendar_only == FALSE) {
                    gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(notes_button), FALSE);
                }
                return TRUE;
            case GDK_Left:
                if (event->state & GDK_MOD1_MASK) {  /* ALT + Left */
                    calendar_btn_prev_day();
                    return TRUE;
                }
                return FALSE;
            case GDK_Right:
                if (event->state & GDK_MOD1_MASK) {  /* ALT + Right */
                    calendar_btn_next_day();
                    return TRUE;
                }
                return FALSE;
            case GDK_Up:
                if (event->state & GDK_MOD1_MASK) {  /* ALT + Up */
                    calendar_btn_prev_week();
                    return TRUE;
                }
                return FALSE;
            case GDK_Down:
                if (event->state & GDK_MOD1_MASK) {  /* ALT + Down */
                    calendar_btn_next_week();
                    return TRUE;
                }
                return FALSE;
        }

    }

    /************************************************************************/
    /*** TASKS PAGE                                                        ***/
    /************************************************************************/

    if(page == PAGE_TASKS) {

            switch (event->keyval) {

                case GDK_Escape:
                    if(tasks_panel_status == TRUE) {
                        show_tasks_desc_panel(FALSE);
                    }
                    return TRUE;
                case GDK_Return:
                    if (event->state & GDK_CONTROL_MASK) {  /* CTRL + Enter */
                        if (gtk_tree_selection_get_selected (tasks_list_selection, NULL, NULL)) {
                            tasks_add_edit_dialog_show (TRUE);
                            return TRUE;
                        }
                    }
                    if(tasks_panel_status == FALSE) {
                        show_tasks_desc_panel(TRUE);
                    }
                    return TRUE;
                case GDK_h:
                    if (event->state & GDK_CONTROL_MASK) {  /* CTRL + h */
                        config.hide_completed = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(ct_hide_items_checkbutton));
                        config.hide_completed = !config.hide_completed;
                        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(ct_hide_items_checkbutton), config.hide_completed);
                        gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(tasks_filter));
                    }
                    return TRUE;
                case GDK_Delete:
                    tasks_remove_dialog_show(tasks_list, tasks_list_store);
                    return TRUE;
                case GDK_Insert:
                    tasks_add_edit_dialog_show (FALSE);
                    return TRUE;
                case GDK_space:
                    return TRUE;
                case GDK_Left:
                    if (filter_index > 0) {
                        filter_index--;
                        gtk_combo_box_set_active(GTK_COMBO_BOX(cf_combobox), filter_index);
                    }
                    return TRUE;
                case GDK_Right:
                    if (filter_index < get_combobox_items(GTK_COMBO_BOX(cf_combobox))-1) {
                        filter_index++;
                        gtk_combo_box_set_active(GTK_COMBO_BOX(cf_combobox), filter_index);
                    }
                    return TRUE;
            }
    }

    /************************************************************************/
    /*** CONTACTS PAGE                                                    ***/
    /************************************************************************/

    if(page == PAGE_CONTACTS) {

            switch (event->keyval) {

                case GDK_Escape:
                    if (gtk_widget_is_focus(contacts_find_entry) == FALSE) {
                        if(contacts_panel_status == TRUE) {
                            show_contacts_desc_panel(FALSE);
                        }
                    } else {
                        if (strlen(gtk_entry_get_text(GTK_ENTRY(contacts_find_entry)))) {
                            gtk_entry_set_text(GTK_ENTRY(contacts_find_entry), "");
                        } 
                    }
                    return TRUE;
                case GDK_Return:
                    if (event->state & GDK_CONTROL_MASK) {  /* CTRL + Enter */
                        if (gtk_tree_selection_get_selected (contacts_list_selection, NULL, NULL)) {
                            contacts_add_edit_dialog_show (TRUE);
                            return TRUE;
                        }
                    }
                    if(contacts_panel_status == FALSE) {
                        show_contacts_desc_panel(TRUE);
                        return TRUE;
                    } else if (gtk_widget_is_focus(contacts_find_entry) == FALSE) {
                        gui_scrolled_window_move_position(contacts_panel_scrolledwindow, SW_MOVE_DOWN);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_BackSpace:
                    if(contacts_panel_status == TRUE && gtk_widget_is_focus(contacts_find_entry) == FALSE) {
                        gui_scrolled_window_move_position(contacts_panel_scrolledwindow, SW_MOVE_UP);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_Delete:
                    if(gtk_widget_is_focus(contacts_find_entry) == FALSE) {
                        contacts_remove_dialog_show(contacts_list, contacts_list_store);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_Insert:
                    if(gtk_widget_is_focus(contacts_find_entry) == FALSE) {
                        contacts_add_edit_dialog_show (FALSE);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_1:
                    if (event->state & GDK_MOD1_MASK) {  /* ALT + 1 */
                        gtk_combo_box_set_active(GTK_COMBO_BOX(contacts_find_combobox), CONTACTS_FF_FIRST_NAME);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_2:
                    if (event->state & GDK_MOD1_MASK) {  /* ALT + 2 */
                        gtk_combo_box_set_active(GTK_COMBO_BOX(contacts_find_combobox), CONTACTS_FF_LAST_NAME);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_3:
                    if (event->state & GDK_MOD1_MASK) {  /* ALT + 3 */
                        gtk_combo_box_set_active(GTK_COMBO_BOX(contacts_find_combobox), CONTACTS_FF_ALL_FIELDS);
                        return TRUE;
                    }
                    return FALSE;
                case GDK_l:
                    if (event->state & GDK_CONTROL_MASK) {  /* CTRL + l */
                        gtk_widget_grab_focus(GTK_WIDGET(contacts_find_entry));
                        return TRUE;
                    }
                    return FALSE;
            }
    }

    /************************************************************************/
    /*** OPTIONS PAGE                                                     ***/
    /************************************************************************/

    if(page == PAGE_OPTIONS) {

            if (!(event->state & GDK_CONTROL_MASK)) {  /* CTRL + Page_Up */
                switch (event->keyval) {

                    case GDK_Page_Down:
                        options_switch_buttons(FALSE);
                        return TRUE;

                    case GDK_Page_Up:
                        options_switch_buttons(TRUE);
                        return TRUE;
                }
            }
    }

    /************************************************************************/
    /*** ABOUT PAGE                                                       ***/
    /************************************************************************/

    if(page == PAGE_ABOUT) {

            if (!(event->state & GDK_CONTROL_MASK)) {  /* CTRL + Page_Up */
                switch (event->keyval) {

                    case GDK_Page_Down:
                        about_switch_buttons(FALSE);
                        return TRUE;

                    case GDK_Page_Up:
                        about_switch_buttons(TRUE);
                        return TRUE;
                }
            }
    }

    /************************************************************************/
    /*** GLOBAL SHORTCUTS                                                 ***/
    /************************************************************************/

    switch (event->keyval) {

        case GDK_q:
            if (event->state & GDK_CONTROL_MASK) {  /* CTRL + Q */
                    gui_window_close_cb(NULL, NULL);
            }
            return FALSE;    

        case GDK_Page_Up:
            if (event->state & GDK_CONTROL_MASK) {  /* CTRL + Page_Up */
                current_tab--;
                current_tab = current_tab < 0 ? number_of_tabs-1:current_tab;
                gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), current_tab);
                return TRUE;
            } else if (page == PAGE_CALENDAR) {
                if (config.day_notes_visible) {
                    if (event->state & GDK_MOD1_MASK) {  /* ALT + Page_Up */
                        calendar_btn_prev_month();
                        return TRUE;
                    }
                } else {
                    calendar_btn_prev_month();
                    return TRUE;
                }
            }
            return FALSE;

        case GDK_Page_Down:
            if (event->state & GDK_CONTROL_MASK) {  /* CTRL + Page_Down */
                current_tab++;
                current_tab = current_tab == number_of_tabs ? 0:current_tab;
                gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), current_tab);
                return TRUE;
            } else if (page == PAGE_CALENDAR) {
                if (config.day_notes_visible) {
                    if (event->state & GDK_MOD1_MASK) {  /* ALT + Page_Down */
                        calendar_btn_next_month();
                        return TRUE;
                    }
                } else {
                    calendar_btn_next_month();
                    return TRUE;
                }
            }
            return FALSE;
        case GDK_F1:
            gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), PAGE_CALENDAR);
            return TRUE;
        case GDK_F2:
            gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), PAGE_TASKS);
            return TRUE;
        case GDK_F3:
            gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), PAGE_CONTACTS);
            return TRUE;
        case GDK_F4:
            gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), PAGE_OPTIONS);
            return TRUE;
        case GDK_F5:
            gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), PAGE_ABOUT);
            return TRUE;

    }

    return FALSE;
}
Esempio n. 3
0
File: gui.c Progetto: rosedu/osmo
void gui_create_window(void) {

GdkPixbuf   *icon;

    contacts_filter_disabled = TRUE;
    all_pages_added = FALSE;

    fd_day_name = pango_font_description_from_string(config.day_name_font);
    fd_calendar = pango_font_description_from_string(config.calendar_font);
    fd_notes = pango_font_description_from_string(config.notes_font);

    main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    sprintf(tmpbuf, "OSMO - %s", _("a handy personal organizer"));
    gtk_window_set_title (GTK_WINDOW (main_window), tmpbuf);

    icon = gdk_pixbuf_new_from_inline(-1, osmo_icon, FALSE, NULL);
    gtk_window_set_icon (GTK_WINDOW(main_window), icon);
    g_object_unref(icon);

    gtk_window_move (GTK_WINDOW (main_window), config.window_x, config.window_y);
    if (calendar_only == FALSE) {
        gtk_window_set_default_size (GTK_WINDOW(main_window), config.window_size_x, config.window_size_y);
    } else {
        gtk_window_set_default_size (GTK_WINDOW(main_window), 500, -1);
    }
    gtk_window_set_resizable (GTK_WINDOW (main_window), TRUE);

    g_signal_connect (G_OBJECT (main_window), "delete_event",
                      G_CALLBACK(gui_window_close_cb), NULL);
    g_signal_connect (G_OBJECT (main_window), "key_press_event",
                      G_CALLBACK (key_press_cb), NULL);

    osmo_register_stock_icons();

    osmo_tooltips = gtk_tooltips_new();

    notebook = gtk_notebook_new();
    GTK_WIDGET_UNSET_FLAGS(notebook, GTK_CAN_FOCUS);
    gtk_widget_show (notebook);
    gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_RIGHT);
    gtk_container_add(GTK_CONTAINER(main_window), notebook);
    g_signal_connect(notebook, "switch-page", 
                     G_CALLBACK(notebook_sw_cb), NULL);

    if (calendar_only == FALSE) {
        read_notes ();
    } else {
        gtk_notebook_set_show_tabs (GTK_NOTEBOOK(notebook), FALSE);
    }

    gui_create_calendar(notebook);

    if (calendar_only == FALSE) {
        gui_create_tasks(notebook);
        gui_create_contacts(notebook);
        gui_create_options(notebook);
        gui_create_about(notebook);

        read_tasks_entries ();
        apply_date_colors();

        read_contacts_entries ();
        set_export_active();

        create_category_combobox (GTK_COMBO_BOX (cf_combobox), tasks_category_store, FALSE);
        gtk_combo_box_set_active (GTK_COMBO_BOX(cf_combobox), 0);

        contacts_filter_disabled = FALSE;

        number_of_tabs = NUMBER_OF_TABS;

        if(config.remember_latest_tab == TRUE) {
            current_tab = config.latest_tab;
        } else {
            current_tab = PAGE_CALENDAR;
        }
    } else {
        number_of_tabs = 1;
        current_tab = 0;
    }

    gui_url_initialize();

    gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), current_tab);
    gtk_widget_show(main_window);

    all_pages_added = TRUE;
    set_today (TRUE);
}
Esempio n. 4
0
int main(int argc, char *argv[])
{
    ex_t rc = EX_OK;

    bfpath *bfp;
    bfpath_mode mode;

    fBogoutil = true;

    signal_setup();			/* setup to catch signals */
    atexit(bf_exit);

    progtype = build_progtype(progname, DB_TYPE);

    set_today();			/* compute current date for token age */

    process_arglist(argc, argv);
    process_config_files(false, longopts_bogoutil);	/* need to read lock sizes */

    /* Extra or missing parameters */
    if (flag != M_WORD && flag != M_LIST_LOGFILES && argc != optind) {
	fprintf(stderr, "Missing or extraneous argument.\n");
	usage(stderr);
	exit(EX_ERROR);
    }

    bfp = bfpath_create(ds_file);
    if (bogohome == NULL)
	set_bogohome( "." );		/* set default */

    bfpath_set_bogohome(bfp);

    mode = get_mode(flag);
    if (bfpath_check_mode(bfp, mode)) {
	if (bfp->isdir)
	    bfpath_set_filename(bfp, WORDLIST);
    }

    if (!bfpath_check_mode(bfp, mode)) {
	fprintf(stderr, "Can't open wordlist '%s'\n", bfp->filepath);
	exit(EX_ERROR);
    }

    errno = 0;		/* clear error status */

    switch (flag) {
	case M_RECOVER:
	    ds_init(bfp);
	    rc = ds_recover(bfp, false);
	    break;
	case M_CRECOVER:
	    ds_init(bfp);
	    rc = ds_recover(bfp, true);
	    break;
	case M_CHECKPOINT:
	    ds_init(bfp);
	    rc = ds_checkpoint(bfp);
	    break;
	case M_LIST_LOGFILES:
	    dsm_init(bfp);
	    rc = ds_list_logfiles(bfp, argc - optind, argv + optind);
	    break;
	case M_PURGELOGS:
	    ds_init(bfp);
	    rc = ds_purgelogs(bfp);
	    break;
	case M_REMOVEENV:
	    dsm_init(bfp);
	    rc = ds_remove(bfp);
	    break;
	case M_VERIFY:
	    dsm_init(bfp);
	    rc = ds_verify(bfp);
	    break;
	case M_LEAFPAGES:
	    {
		u_int32_t c;

		dsm_init(bfp);
		c = ds_leafpages(bfp);
		if (c == 0xffffffff) {
		    fprintf(stderr, "%s: error getting leaf page count.\n", ds_file);
		    rc = EX_ERROR;
		} else if (c == 0) {
		    puts("UNKNOWN");
		} else {
		    printf("%lu\n", (unsigned long)c);
		}
	    }
	    break;
	case M_PAGESIZE:
	    {
		u_int32_t s;

		dsm_init(bfp);
		s = ds_pagesize(bfp);
		if (s == 0xffffffff) {
		    fprintf(stderr, "%s: error getting page size.\n", ds_file);
		} else if (s == 0) {
		    puts("UNKNOWN");
		} else {
		    printf("%lu\n", (unsigned long)s);
		}
	    }
	    break;
	case M_DUMP:
	    rc = dump_wordlist(bfp);
	    break;
	case M_LOAD:
	    rc = load_wordlist(bfp) ? EX_ERROR : EX_OK;
	    break;
	case M_MAINTAIN:
	    maintain = true;
	    rc = maintain_wordlist_file(bfp);
	    break;
	case M_WORD:
	    argc -= optind;
	    argv += optind;
	    rc = display_words(bfp, argc, argv, prob);
	    break;
	case M_HIST:
	    rc = histogram(bfp);
	    break;
	case M_ROBX:
	    rc = get_robx(bfp);
	    break;
	case M_NONE:
	default:
	    /* should have been handled above */
	    abort();
	    break;
    }

    bfpath_free(bfp);

    return rc;
}