gint plugin_init(gchar **error) { gchar *rcpath; hook_id = HOOK_NONE; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "Bogofilter", rcpath, NULL); g_free(rcpath); bogofilter_gtk_init(); debug_print("Bogofilter plugin loaded\n"); #ifdef USE_PTHREAD bogofilter_start_thread(); #endif if (config.process_emails) { bogofilter_register_hook(); } procmsg_register_spam_learner(bogofilter_learn); procmsg_spam_set_folder(config.save_folder, bogofilter_get_spam_folder); return 0; }
void prefs_common_read_config(void) { FILE *fp; gchar *path; gchar buf[PREFSBUFSIZE]; path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "Common", path, NULL); g_free(path); prefs_common.online_mode = TRUE; path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY, NULL); if ((fp = g_fopen(path, "rb")) == NULL) { if (ENOENT != errno) FILE_OP_ERROR(path, "fopen"); g_free(path); return; } g_free(path); while (fgets(buf, sizeof(buf), fp) != NULL) { g_strstrip(buf); if (buf[0] == '\0') continue; prefs_common.mime_open_cmd_history = add_history(prefs_common.mime_open_cmd_history, buf); } fclose(fp); prefs_common.mime_open_cmd_history = g_list_reverse(prefs_common.mime_open_cmd_history); }
gint plugin_init(gchar **error) { gchar *rcpath; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, _("Fetchinfo"), error)) return -1; mail_receive_hook_id = hooks_register_hook(MAIL_RECEIVE_HOOKLIST, mail_receive_hook, NULL); if (mail_receive_hook_id == (guint)-1) { /* i18n: Possible error message during plugin load */ *error = g_strdup(_("Failed to register mail receive hook")); return -1; } prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "Fetchinfo", rcpath, NULL); g_free(rcpath); fetchinfo_gtk_init(); debug_print("Fetchinfo plugin loaded\n"); return 0; }
static void read_config(void) { gchar *path; gboolean initial = FALSE; debug_print("autoenc: read_config\n"); path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, "autoencrc", NULL); if (!is_file_exist(path)) { initial = TRUE; prefs_set_default(param); } else { prefs_read_config(param, "AutoEncrypt", path, NULL); } if (!config.autoenc_template_subject) { config.autoenc_template_subject = g_strdup(_("Password of encrypted file")); } if (!config.autoenc_template_body) { config.autoenc_template_body = g_strdup(_("Subject: %s\\n" "Date: %d\\n" "The password of the encrypted file attached in the above mail is as follows:\\n" "\\n" "File name: %z\\n" "Password: %p")); } if (initial) { write_config(); } g_free(path); }
void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label) { const gchar *p = label; gchar *rcpath; gint id; g_return_if_fail(ac_prefs != NULL); g_return_if_fail(label != NULL); memset(&tmp_ac_prefs, 0, sizeof(PrefsAccount)); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACCOUNT_RC, NULL); prefs_read_config(param, label, rcpath, NULL); g_free(rcpath); *ac_prefs = tmp_ac_prefs; while (*p && !g_ascii_isdigit(*p)) p++; id = atoi(p); if (id < 0) g_warning("wrong account id: %d\n", id); ac_prefs->account_id = id; if (ac_prefs->protocol == A_APOP) { debug_print("converting protocol A_APOP to new prefs.\n"); ac_prefs->protocol = A_POP3; ac_prefs->use_apop_auth = TRUE; } custom_header_read_config(ac_prefs); }
void address_keeper_prefs_init(void) { static gchar *path[3]; gchar *rcpath; gchar *tmp; path[0] = _("Plugins"); path[1] = _("Address Keeper"); path[2] = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, PREFS_BLOCK_NAME, rcpath, NULL); g_free(rcpath); tmp = g_malloc(strlen(addkeeperprefs.block_matching_addrs) + 1); pref_get_unescaped_pref(tmp, addkeeperprefs.block_matching_addrs); g_free(addkeeperprefs.block_matching_addrs); addkeeperprefs.block_matching_addrs = tmp; addkeeperprefs_page.page.path = path; addkeeperprefs_page.page.create_widget = addkeeper_prefs_create_widget_func; addkeeperprefs_page.page.destroy_widget = addkeeper_prefs_destroy_widget_func; addkeeperprefs_page.page.save_page = addkeeper_prefs_save_func; addkeeperprefs_page.page.weight = 40.0; prefs_gtk_register_page((PrefsPage *) &addkeeperprefs_page); }
int main(int argc, char **argv) { GtkWidget *info_dialog; if (argc != 1) { if (argc == 2 && !strncmp(argv[1], "-cal", 4) && strlen(argv[1]) == 4) { calendar_only = TRUE; } else { fprintf(stderr, "OSMO v%s - %s\n", VERSION, _("a handy personal organizer")); fprintf(stderr, "Copyright (c) 2007 Tomasz Maka <*****@*****.**>\n\n"); fprintf(stderr, "%s: %s [%s]\n\n", _("usage"), argv[0], _("options")); fprintf(stderr, "%s:\n", _("options")); fprintf(stderr, " -cal : %s\n", _("show small calendar window")); exit (-1); } } prefs_read_config (); gtk_init (&argc, &argv); if(check_if_app_is_running() == FALSE) { gtk_set_locale(); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); gui_create_window (); gtk_main (); prefs_write_config (); unlink(prefs_get_config_filename (RUN_FLAG_FILE)); } else { sprintf(tmpbuf, _("Another copy of OSMO is already running or it has been stopped uncleanly (in this case please remove '%s' file and try again)."), prefs_get_config_filename (RUN_FLAG_FILE)); info_dialog = gtk_message_dialog_new (GTK_WINDOW_TOPLEVEL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, tmpbuf); gtk_window_set_title(GTK_WINDOW(info_dialog), _("Error")); gtk_window_set_position(GTK_WINDOW(info_dialog), GTK_WIN_POS_CENTER); gtk_widget_show (info_dialog); gtk_dialog_run(GTK_DIALOG(info_dialog)); gtk_widget_destroy(info_dialog); } return 0; }
void folder_item_prefs_read_config(FolderItem * item) { gchar * id; gchar *rcpath; id = folder_item_get_identifier(item); folder_item_prefs_clear(&tmp_prefs); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, FOLDERITEM_RC, NULL); prefs_read_config(param, id, rcpath, NULL); g_free(id); g_free(rcpath); *item->prefs = tmp_prefs; }
gint plugin_init(gchar **error) { gchar *rcpath; /* Version check */ if(!check_plugin_version(MAKE_NUMERIC_VERSION(3,13,2,39), VERSION_NUMERIC, _("GData"), error)) return -1; hook_address_completion = hooks_register_hook(ADDDRESS_COMPLETION_BUILD_ADDRESS_LIST_HOOKLIST, my_address_completion_build_list_hook, NULL); if(hook_address_completion == (guint) -1) { *error = g_strdup(_("Failed to register address completion hook in the GData plugin")); return -1; } hook_offline_switch = hooks_register_hook(OFFLINE_SWITCH_HOOKLIST, my_offline_switch_hook, NULL); if(hook_offline_switch == (guint) -1) { hooks_unregister_hook(ADDDRESS_COMPLETION_BUILD_ADDRESS_LIST_HOOKLIST, hook_address_completion); *error = g_strdup(_("Failed to register offline switch hook in the GData plugin")); return -1; } /* Configuration */ prefs_set_default(cm_gdata_param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(cm_gdata_param, "GDataPlugin", rcpath, NULL); g_free(rcpath); /* If the refresh token is still stored in config, save it to * password store. */ if(cm_gdata_config.oauth2_refresh_token != NULL) { passwd_store_set(PWS_PLUGIN, "GData", GDATA_TOKEN_PWD_STRING, cm_gdata_config.oauth2_refresh_token, TRUE); passwd_store_write_config(); } cm_gdata_prefs_init(); debug_print("GData plugin loaded\n"); /* contacts cache */ cm_gdata_load_contacts_cache_from_file(); cm_gdata_update_contacts_update_timer(); cm_gdata_update_contacts_cache(); return 0; }
gint plugin_init(gchar **error) { gchar *rcpath; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; hook_id = hooks_register_hook(MAIL_FILTERING_HOOKLIST, mail_filtering_hook, NULL); if (hook_id == -1) { *error = g_strdup(_("Failed to register mail filtering hook")); return -1; } prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "ClamAV", rcpath, NULL); g_free(rcpath); clamav_gtk_init(); if (config.clamav_enable) { debug_print("Creating socket\n"); config.alert_ack = TRUE; Clamd_Stat status = clamd_prepare(); switch (status) { case NO_SOCKET: g_warning("[init] No socket information"); alertpanel_error(_("Init\nNo socket information.\nAntivirus disabled.")); break; case NO_CONNECTION: g_warning("[init] Clamd does not respond to ping"); alertpanel_warning(_("Init\nClamd does not respond to ping.\nIs clamd running?")); break; default: break; } } debug_print("Clamd plugin loaded\n"); return 0; }
void vcal_prefs_init(void) { static gchar *path[3]; gchar *rcpath; gboolean passwords_migrated = FALSE; path[0] = _("Plugins"); path[1] = _("vCalendar"); path[2] = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, PREFS_BLOCK_NAME, rcpath, NULL); g_free(rcpath); /* Move passwords that are still in main config to password store. */ if (vcalprefs.export_pass != NULL && strlen(vcalprefs.export_pass) > 0) { passwd_store_set(PWS_PLUGIN, "vCalendar", "export", vcalprefs.export_pass, TRUE); passwords_migrated = TRUE; memset(vcalprefs.export_pass, 0, strlen(vcalprefs.export_pass)); g_free(vcalprefs.export_pass); } if (vcalprefs.export_freebusy_pass != NULL && strlen(vcalprefs.export_freebusy_pass) > 0) { passwd_store_set(PWS_PLUGIN, "vCalendar", "export", vcalprefs.export_freebusy_pass, TRUE); passwords_migrated = TRUE; memset(vcalprefs.export_freebusy_pass, 0, strlen(vcalprefs.export_freebusy_pass)); g_free(vcalprefs.export_freebusy_pass); } if (passwords_migrated) passwd_store_write_config(); vcal_prefs_page.page.path = path; vcal_prefs_page.page.create_widget = vcal_prefs_create_widget_func; vcal_prefs_page.page.destroy_widget = vcal_prefs_destroy_widget_func; vcal_prefs_page.page.save_page = vcal_prefs_save_func; prefs_gtk_register_page((PrefsPage *) &vcal_prefs_page); }
void libravatar_prefs_init(void) { static gchar *path[3]; gchar *rcpath; path[0] = _("Plugins"); path[1] = _("Libravatar"); path[2] = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, PREFS_BLOCK_NAME, rcpath, NULL); g_free(rcpath); libravatarprefs_page.page.path = path; libravatarprefs_page.page.create_widget = libravatar_prefs_create_widget_func; libravatarprefs_page.page.destroy_widget = libravatar_prefs_destroy_widget_func; libravatarprefs_page.page.save_page = libravatar_prefs_save_func; prefs_gtk_register_page((PrefsPage *) &libravatarprefs_page); }
void fancy_prefs_init(void) { static gchar *path[3]; gchar *rcpath; path[0] = _("Plugins"); path[1] = "Fancy"; path[2] = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, PREFS_BLOCK_NAME, rcpath, NULL); g_free(rcpath); fancy_prefs_page.page.path = path; fancy_prefs_page.page.create_widget = create_fancy_prefs_page; fancy_prefs_page.page.destroy_widget = destroy_fancy_prefs_page; fancy_prefs_page.page.save_page = save_fancy_prefs_page; fancy_prefs_page.page.weight = 30.0; prefs_gtk_register_page((PrefsPage *) &fancy_prefs_page); }
void rssyl_prefs_init(void) { static gchar *path[3]; gchar *rcpath; path[0] = _("Plugins"); path[1] = PLUGIN_NAME; /* We don't need this translated */ path[2] = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, PREFS_BLOCK_NAME, rcpath, NULL); g_free(rcpath); rssyl_gtk_prefs_page.page.path = path; rssyl_gtk_prefs_page.page.create_widget = create_rssyl_prefs_page; rssyl_gtk_prefs_page.page.destroy_widget = destroy_rssyl_prefs_page; rssyl_gtk_prefs_page.page.save_page = save_rssyl_prefs; rssyl_gtk_prefs_page.page.weight = 30.0; prefs_gtk_register_page((PrefsPage *) &rssyl_gtk_prefs_page); }
gint plugin_init(gchar **error) { gchar *rcpath; hook_id = -1; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "SpamAssassin", rcpath, NULL); g_free(rcpath); if (!spamassassin_check_username()) { *error = g_strdup(_("Failed to get username")); return -1; } spamassassin_gtk_init(); debug_print("SpamAssassin plugin loaded\n"); if (config.process_emails) { spamassassin_register_hook(); } if (!config.enable || config.transport == SPAMASSASSIN_DISABLED) { log_warning(LOG_PROTOCOL, _("SpamAssassin plugin is loaded but disabled by its preferences.\n")); } else { if (config.transport == SPAMASSASSIN_TRANSPORT_TCP) debug_print("Enabling learner with a remote spamassassin server requires spamc/spamd 3.1.x\n"); procmsg_register_spam_learner(spamassassin_learn); procmsg_spam_set_folder(config.save_folder, spamassassin_get_spam_folder); } return 0; }
void prefs_gpg_init() { static gchar *path[3]; gchar *rcpath; const gchar *tmp = NULL; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "GPG", rcpath, NULL); g_free(rcpath); path[0] = _("Plugins"); path[1] = _("GPG"); path[2] = NULL; gpg_page.page.path = path; gpg_page.page.create_widget = prefs_gpg_create_widget_func; gpg_page.page.destroy_widget = prefs_gpg_destroy_widget_func; gpg_page.page.save_page = prefs_gpg_save_func; gpg_page.page.weight = 30.0; prefs_gtk_register_page((PrefsPage *) &gpg_page); gpg_account_page.page.path = path; gpg_account_page.page.create_widget = prefs_gpg_account_create_widget_func; gpg_account_page.page.destroy_widget = prefs_gpg_account_destroy_widget_func; gpg_account_page.page.save_page = prefs_gpg_account_save_func; gpg_account_page.page.weight = 30.0; prefs_account_register_page((PrefsPage *) &gpg_account_page); tmp = g_getenv("GPG_AGENT_INFO"); if (tmp) saved_gpg_agent_info = g_strdup(tmp); prefs_gpg_enable_agent(prefs_gpg_get_config()->use_gpg_agent); }
int main (int argc, char **argv) { struct timeval timer; gchar buffer[PATH_MAX]; GUI *appGUI = NULL; CHART *chr = NULL; STATISTICS *sts = NULL; TEST *tst = NULL; OPTIONS *opt = NULL; #ifdef MAEMO osso_context_t *osso_context = NULL; /* initialize maemo application */ osso_context = osso_initialize(APP_NAME, APP_VER, TRUE, NULL); if (osso_context == NULL) { fprintf (stderr, "osso_initialize failed.\n"); exit (1); } #endif appGUI = g_new0 (GUI, 1); g_return_val_if_fail (appGUI != NULL, -1); chr = g_new0 (CHART, 1); g_return_val_if_fail (chr != NULL, -1); sts = g_new0 (STATISTICS, 1); g_return_val_if_fail (sts != NULL, -1); tst = g_new0 (TEST, 1); g_return_val_if_fail (tst != NULL, -1); opt = g_new0 (OPTIONS, 1); g_return_val_if_fail (opt != NULL, -1); /* register modules */ appGUI->chr = chr; appGUI->sts = sts; appGUI->tst = tst; appGUI->opt = opt; /* default values */ appGUI->old_kana_type = -1; appGUI->chr->chart_window = NULL; appGUI->tst->any_key = FALSE; appGUI->tst->test_state = FALSE; appGUI->sts->active_tab = -1; appGUI->opt->active_tab = -1; /* preferences update */ g_snprintf (buffer, PATH_MAX, "%s%c%s", g_get_home_dir(), G_DIR_SEPARATOR, CONFIG_DIRNAME); if (g_file_test(buffer, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) != TRUE) { prefs_read_config (CONFIG_FILENAME_OLD, CONFIG_DIRNAME_OLD); prefs_write_config (CONFIG_FILENAME, CONFIG_DIRNAME); if (g_file_test(prefs_get_config_filename (STATS_FILENAME_OLD, CONFIG_DIRNAME_OLD), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) == TRUE) { stats_read_list (STATS_FILENAME_OLD, CONFIG_DIRNAME_OLD, appGUI); } stats_write_list (STATS_FILENAME, CONFIG_DIRNAME, appGUI); } prefs_read_config (CONFIG_FILENAME, CONFIG_DIRNAME); stats_read_list (STATS_FILENAME, CONFIG_DIRNAME, appGUI); /* init */ #ifdef MAEMO hildon_gtk_init (&argc, &argv); #else gtk_init (&argc, &argv); #endif setlocale (LC_ALL, ""); #if defined(WIN32) || defined(WIN64) /* Set the locale directory as subdirectory of application path */ char WINLOCALEDIR[MAX_PATH]; strcpy(WINLOCALEDIR, g_path_get_dirname(argv[0])); strcat(WINLOCALEDIR, "\\share\\locale"); bindtextdomain (PACKAGE, WINLOCALEDIR); #else bindtextdomain (PACKAGE, LOCALEDIR); #endif bind_textdomain_codeset (PACKAGE, "UTF-8"); textdomain (PACKAGE); /* set seed */ gettimeofday(&timer, NULL); #if defined(WIN32) || defined(WIN64) srand((long)time(NULL)); #else srand48(timer.tv_usec + getpid()); #endif #ifdef MAEMO show_splash_screen (); #endif gui_create_window (appGUI); gtk_main (); stats_write_list (STATS_FILENAME, CONFIG_DIRNAME, appGUI); stats_free_list (appGUI); prefs_write_config (CONFIG_FILENAME, CONFIG_DIRNAME); g_free (opt); g_free (tst); g_free (sts); g_free (chr); g_free (appGUI); #ifdef MAEMO /* deinitialize OSSO */ osso_deinitialize (osso_context); #endif return 0; }
int main(int argc, char **argv) { GUI *appGUI = NULL; CALENDAR *cal = NULL; TASKS *tsk = NULL; CONTACTS *cnt = NULL; NOTES *nte = NULL; OPTIONS *opt = NULL; GtkWidget *info_dialog; gchar tmpbuf[BUFFER_SIZE]; gint response = -1; struct flock *s_lock = NULL; int fhandle; GOptionContext *cmd_context; gboolean cmd_calendar = FALSE; gboolean cmd_check_events = FALSE; gint cmd_check_ndays_events = 0; gchar *cmd_cfg_path = NULL; gboolean cmd_tiny_gui = FALSE; GOptionEntry cmd_options[] = { { "calendar", 'c', 0, G_OPTION_ARG_NONE, &cmd_calendar, N_("Show small calendar window"), NULL }, { "check", 'e', 0, G_OPTION_ARG_NONE, &cmd_check_events, N_("Check for events since last run"), NULL }, { "days", 'd', 0, G_OPTION_ARG_INT, &cmd_check_ndays_events, N_("Number of days to check forward for events (default: 0)"), NULL }, { "config", 's', 0, G_OPTION_ARG_STRING, &cmd_cfg_path, N_("Set absolute path for settings and data files"), "PATH" }, { "tinygui", 't', 0, G_OPTION_ARG_NONE, &cmd_tiny_gui, N_("Modify GUI to use Osmo on low resolutions"), NULL }, { NULL } }; appGUI = g_new0 (GUI, 1); g_return_val_if_fail (appGUI != NULL, -1); cal = g_new0 (CALENDAR, 1); g_return_val_if_fail (cal != NULL, -1); tsk = g_new0 (TASKS, 1); g_return_val_if_fail (tsk != NULL, -1); cnt = g_new0 (CONTACTS, 1); g_return_val_if_fail (cnt != NULL, -1); nte = g_new0 (NOTES, 1); g_return_val_if_fail (nte != NULL, -1); opt = g_new0 (OPTIONS, 1); g_return_val_if_fail (opt != NULL, -1); /* register modules */ appGUI->cal = cal; appGUI->tsk = tsk; appGUI->cnt = cnt; appGUI->nte = nte; appGUI->opt = opt; appGUI->run_date = utl_get_current_julian (); appGUI->run_time = get_seconds_for_today (); appGUI->key_counter = 0; /* default values */ appGUI->hovering_over_link = FALSE; appGUI->hand_cursor = NULL; appGUI->regular_cursor = NULL; appGUI->gui_url_tag = NULL; appGUI->trayicon_popup_menu = NULL; appGUI->calendar_only = FALSE; appGUI->check_events = FALSE; appGUI->tiny_gui = FALSE; appGUI->save_status = 0; appGUI->print_font_size = 10; appGUI->cal->date = g_date_new (); g_return_val_if_fail (appGUI->cal->date != NULL, -1); g_date_set_time_t (appGUI->cal->date, time (NULL)); appGUI->tsk->id_counter = 0; appGUI->tsk->tasks_panel_status = FALSE; appGUI->tsk->tasks_filter_disabled = FALSE; appGUI->tsk->tasks_list_store = NULL; appGUI->tsk->notifications = NULL; appGUI->cnt->photo_image = NULL; appGUI->cnt->contacts_uim_widget = NULL; appGUI->cnt->contacts_panel_status = FALSE; appGUI->cnt->contacts_filter_disabled = TRUE; appGUI->cnt->export_button = NULL; appGUI->cnt->output_file_entry = NULL; appGUI->opt->options_counter = 0; setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); bind_textdomain_codeset (PACKAGE, "UTF-8"); textdomain (PACKAGE); if (argc == 2 && (!strncmp(argv[1], "--help", 6) || (argv[1][0] == '-' && argv[1][1] == '?'))) { fprintf(stderr, "\nOSMO v%s - %s\n", VERSION, _("a handy personal organizer")); fprintf(stderr, "Copyright (c) 2007-2008 Tomasz Maka <*****@*****.**>\n\n"); } cmd_context = g_option_context_new(NULL); g_option_context_add_main_entries(cmd_context, cmd_options, TRANSLATION_DOMAIN); g_option_context_parse(cmd_context, &argc, &argv, NULL); g_option_context_free(cmd_context); appGUI->calendar_only = cmd_calendar; appGUI->check_events = cmd_check_events; appGUI->check_ndays_events = cmd_check_ndays_events; appGUI->config_path = cmd_cfg_path; appGUI->tiny_gui = cmd_tiny_gui; if (prefs_get_config_filename (CONFIG_FILENAME, appGUI) == NULL) { fprintf(stderr, "%s\n", _("ERROR: Cannot create config files")); goto finish; } s_lock = g_new0 (struct flock, 1); s_lock->l_type = F_WRLCK; s_lock->l_whence = SEEK_SET; s_lock->l_start = 0; s_lock->l_len = 0; prefs_read_config (appGUI); close(creat(prefs_get_config_filename (RUN_FLAG_FILE, appGUI), S_IRUSR | S_IWUSR)); /* create lock file */ gtk_init (&argc, &argv); fhandle = open(prefs_get_config_filename (RUN_FLAG_FILE, appGUI), O_RDWR); if (fhandle) { if (fcntl(fhandle, F_SETLK, s_lock) == -1) { close (fhandle); g_snprintf (tmpbuf, BUFFER_SIZE, "%s %s\n\n%s", _("Another copy of OSMO is already running."), _("Simultaneously use two or more copies of OSMO can be a cause of data loss."), _("Do you really want to continue?")); info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW_TOPLEVEL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, tmpbuf); gtk_window_set_title(GTK_WINDOW(info_dialog), _("Warning")); gtk_window_set_position(GTK_WINDOW(info_dialog), GTK_WIN_POS_CENTER); gtk_widget_show (info_dialog); response = gtk_dialog_run(GTK_DIALOG(info_dialog)); gtk_widget_destroy(info_dialog); if (response == GTK_RESPONSE_NO || response == GTK_RESPONSE_DELETE_EVENT) { goto finish; } } } notify_init("Osmo notification"); if (appGUI->calendar_only != TRUE) { /* setup timer at 1000ms (1s) interval */ g_timeout_add (1000, (GtkFunction) time_handler, appGUI); } config.run_counter++; if (gui_create_window (appGUI) == TRUE) { gtk_main (); } if (appGUI->calendar_only == FALSE) { config.lastrun_date = utl_get_current_julian (); config.lastrun_time = get_seconds_for_today(); } if (appGUI->check_events == FALSE) { prefs_write_config (appGUI); } if (fhandle) { s_lock->l_type = F_UNLCK; fcntl(fhandle, F_SETLK, s_lock); close (fhandle); } finish: g_date_free (appGUI->cal->date); g_free (opt); g_free (nte); g_free (cnt); g_free (tsk); g_free (cal); g_free (appGUI); g_free (s_lock); return 0; }
gint plugin_init(gchar **error) { gchar *rcpath; /* Version check */ /* No be able to test against new-contacts */ if(!check_plugin_version(MAKE_NUMERIC_VERSION(3,8,1,46), VERSION_NUMERIC, _("Notification"), error)) return -1; /* Check if threading is enabled */ if(!g_thread_supported()) { *error = g_strdup(_("The Notification plugin needs threading support.")); return -1; } hook_f_item = hooks_register_hook(FOLDER_ITEM_UPDATE_HOOKLIST, my_folder_item_update_hook, NULL); if(hook_f_item == (guint) -1) { *error = g_strdup(_("Failed to register folder item update hook in the " "Notification plugin")); return -1; } hook_f = hooks_register_hook(FOLDER_UPDATE_HOOKLIST, my_folder_update_hook, NULL); if(hook_f == (guint) -1) { *error = g_strdup(_("Failed to register folder update hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); return -1; } hook_m_info = hooks_register_hook(MSGINFO_UPDATE_HOOKLIST, my_msginfo_update_hook, NULL); if(hook_m_info == (guint) -1) { *error = g_strdup(_("Failed to register msginfo update hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); return -1; } hook_offline = hooks_register_hook(OFFLINE_SWITCH_HOOKLIST, my_offline_switch_hook, NULL); if(hook_offline == (guint) -1) { *error = g_strdup(_("Failed to register offline switch hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); return -1; } hook_mw_close = hooks_register_hook(MAIN_WINDOW_CLOSE, my_main_window_close_hook, NULL); if(hook_mw_close == (guint) -1) { *error = g_strdup(_("Failed to register main window close hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); hooks_unregister_hook(OFFLINE_SWITCH_HOOKLIST, hook_offline); return -1; } hook_got_iconified = hooks_register_hook(MAIN_WINDOW_GOT_ICONIFIED, my_main_window_got_iconified_hook, NULL); if(hook_got_iconified == (guint) -1) { *error = g_strdup(_("Failed to register got iconified hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); hooks_unregister_hook(OFFLINE_SWITCH_HOOKLIST, hook_offline); hooks_unregister_hook(MAIN_WINDOW_CLOSE, hook_mw_close); return -1; } hook_account = hooks_register_hook(ACCOUNT_LIST_CHANGED_HOOKLIST, my_account_list_changed_hook, NULL); if (hook_account == (guint) -1) { *error = g_strdup(_("Failed to register account list changed hook in the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); hooks_unregister_hook(OFFLINE_SWITCH_HOOKLIST, hook_offline); hooks_unregister_hook(MAIN_WINDOW_CLOSE, hook_mw_close); hooks_unregister_hook(MAIN_WINDOW_GOT_ICONIFIED, hook_got_iconified); return -1; } hook_theme_changed = hooks_register_hook(THEME_CHANGED_HOOKLIST, my_update_theme_hook, NULL); if(hook_theme_changed == (guint)-1) { *error = g_strdup(_("Failed to register theme change hook int the " "Notification plugin")); hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); hooks_unregister_hook(OFFLINE_SWITCH_HOOKLIST, hook_offline); hooks_unregister_hook(MAIN_WINDOW_CLOSE, hook_mw_close); hooks_unregister_hook(MAIN_WINDOW_GOT_ICONIFIED, hook_got_iconified); hooks_unregister_hook(ACCOUNT_LIST_CHANGED_HOOKLIST, hook_account); return -1; } /* Configuration */ prefs_set_default(notify_param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(notify_param, "NotificationPlugin", rcpath, NULL); g_free(rcpath); /* Folder specific stuff */ notification_foldercheck_read_array(); notification_notified_hash_startup_init(); notify_gtk_init(); #ifdef NOTIFICATION_BANNER notification_update_banner(); #endif #ifdef NOTIFICATION_LCDPROC notification_lcdproc_connect(); #endif #ifdef NOTIFICATION_TRAYICON if(notify_config.trayicon_enabled && notify_config.trayicon_hide_at_startup && claws_is_starting()) { MainWindow *mainwin = mainwindow_get_mainwindow(); g_idle_add(trayicon_startup_idle,NULL); if(mainwin && gtk_widget_get_visible(GTK_WIDGET(mainwin->window))) main_window_hide(mainwin); main_set_show_at_startup(FALSE); } #endif my_account_list_changed_hook(NULL,NULL); if(notify_config.urgency_hint_new || notify_config.urgency_hint_unread) notification_update_msg_counts(NULL); #ifdef NOTIFICATION_HOTKEYS notification_hotkeys_update_bindings(); #endif debug_print("Notification plugin loaded\n"); return 0; }