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(); }
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; }
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); }
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; }