gint gw_progress_bar_box_add_value ( GtkWindow *w, gfloat value) { GtkProgress *progress_bar = NULL; gint result = -1; #ifdef GW_DEBUG_GUI_COMPONENT g_print ( "*** GW - %s (%d) :: %s()\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); #endif if ( w != NULL ) { if ( (progress_bar = gw_progress_bar_box_get_progress_bar ( w)) != NULL ) { #ifdef GW_DEBUG_GUI_COMPONENT g_print ( "*** GW - %s (%d) :: %s() : new value is %e => %e\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, gtk_progress_get_value ( progress_bar) + value, gw_progress_bar_box_get_percentage ( w)); #endif gtk_progress_set_value ( progress_bar, gtk_progress_get_value ( progress_bar) + value); result = 0; } } return result; }
int my_progress_func(GtkWidget *Bar, int t, int d) { /* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/ gdk_threads_enter(); gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t); gdk_threads_leave(); return 0; }
void finish_operation(FormatDialog* dialog) { dialog->ops_left = 0; gtk_progress_set_value(GTK_PROGRESS(dialog->progress_bar), 0.0); gtk_progress_bar_set_text(dialog->progress_bar, ""); update_dialog(dialog); }
int my_progress_func(GtkWidget *bar, double t, /* dltotal */ double d, /* dlnow */ double ultotal, double ulnow) { /* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/ gdk_threads_enter(); gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t); gdk_threads_leave(); return 0; }
/* Sets the value within the GtkProgress to an absolute value. The value must * be within the valid range of values for the underlying GtkAdjustment. */ int clip_GTK_PROGRESSSETVALUE(ClipMachine * cm) { C_widget *cprg = _fetch_cw_arg(cm); gfloat value = _clip_parnd(cm,2); CHECKCWID(cprg,GTK_IS_PROGRESS); CHECKOPT(2,NUMERIC_t); gtk_progress_set_value(GTK_PROGRESS(cprg->widget), value); return 0; err: return 1; }
static int progress_bar_timeout_callback (GtkWidget *pbar) { gfloat new_val; GtkAdjustment *adj; adj = GTK_PROGRESS (pbar)->adjustment; new_val = adj->value + 1; if (new_val > adj->upper) new_val = adj->lower; gtk_progress_set_value (GTK_PROGRESS (pbar), new_val); return TRUE; }
static void SetProgressBar( GtkWidget *widget, WidgetData *wdata, _ProgressBar *data) { ENTER_FUNC; SetCommon(widget,wdata); #ifdef LIBGTK_3_0_0 gtk_panda_progress_bar_set_value( GTK_PANDA_PROGRESS_BAR(widget),data->value); #else gtk_progress_set_value(GTK_PROGRESS(widget),data->value); #endif LEAVE_FUNC; }
void do_next_operation(FormatDialog* dialog, const gchar* progress_text) { if(dialog->format_error) { handle_format_error(dialog); return; } if(dialog->ops_left <= 0) { finish_operation(dialog); return; } gdouble percent = (gdouble)(dialog->total_ops - dialog->ops_left) / (gdouble)dialog->total_ops; dialog->ops_left--; gtk_progress_set_value(GTK_PROGRESS(dialog->progress_bar), percent); }
gboolean progress_update_timeout(gpointer data) { UpdaterAppState *app_state; llassert(data != NULL); app_state = (UpdaterAppState *) data; gdk_threads_enter(); if (app_state->activity_mode) { gtk_progress_bar_pulse (GTK_PROGRESS_BAR(app_state->progress_bar)); } else { gtk_progress_set_value(GTK_PROGRESS(app_state->progress_bar), app_state->progress_value); } gdk_threads_leave(); return TRUE; }
static void enter_callback(GtkWidget *widget, GtkWidget *do_warning) { GtkCList *cl; gchar *entry_text; char *entry_suffixed; int len; int i, j, k, row; int pixlen, maxpixlen; char *s, *tmp2; gfloat interval; if(is_searching_running) return; is_searching_running = ~0; gtk_grab_add(widget); pixlen=0; maxpixlen=0; entry_text = gtk_entry_get_text(GTK_ENTRY(entry)); DEBUG(printf("Entry contents: %s\n", entry_text)); /* if(!(len=strlen(entry_text))) searchbox_text=NULL; */ if(!(len=strlen(entry_text))) searchbox_text=&default_null_searchbox_text; else strcpy((searchbox_text=(char *)malloc_2(len+1)),entry_text); num_rows=0; gtk_clist_freeze(cl=GTK_CLIST(clist)); gtk_clist_clear(cl); entry_suffixed=wave_alloca(strlen(entry_text)+strlen(regex_type[regex_which])+1+((regex_which<2)?2:0)); *entry_suffixed=0x00; if(regex_which<2) strcpy(entry_suffixed, "\\<"); /* match on word boundary */ strcat(entry_suffixed,entry_text); strcat(entry_suffixed,regex_type[regex_which]); wave_regex_compile(entry_suffixed); for(i=0;i<numfacs;i++) { facs[i]->selected=0; } GTK_ADJUSTMENT(pdata->adj)->upper = (gfloat)((numfacs>1)?numfacs-1:1); pdata->oldvalue = -1.0; interval = (gfloat)(numfacs/100.0); for(i=0;i<numfacs;i++) { pdata->value = i; if(((int)(pdata->value/interval))!=((int)(pdata->oldvalue/interval))) { gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), i); while (gtk_events_pending()) gtk_main_iteration(); } pdata->oldvalue = i; if(wave_regex_match(facs[i]->name)) { if(!facs[i]->vec_root) { row=gtk_clist_append(cl,(gchar **)&(facs[i]->name)); pixlen=gdk_string_measure(signalfont,(gchar *)(facs[i]->name)); } else { if(autocoalesce) { if(facs[i]->vec_root!=facs[i]) continue; tmp2=makename_chain(facs[i]); s=(char *)malloc_2(strlen(tmp2)+4); strcpy(s,"[] "); strcpy(s+3, tmp2); free_2(tmp2); } else { s=(char *)malloc_2(strlen(facs[i]->name)+4); strcpy(s,"[] "); strcpy(s+3, facs[i]->name); } row=gtk_clist_append(cl,(gchar **)&s); pixlen=gdk_string_measure(signalfont,(gchar *)s); free_2(s); } maxpixlen=(pixlen>maxpixlen)?pixlen:maxpixlen; gtk_clist_set_row_data(cl, row,facs[i]); num_rows++; if(num_rows==WAVE_MAX_CLIST_LENGTH) break; } } gtk_clist_set_column_width(GTK_CLIST(clist),0,maxpixlen?maxpixlen:1); gtk_clist_thaw(cl); gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), 0.0); pdata->oldvalue = -1.0; gtk_grab_remove(widget); is_searching_running=0; if(do_warning) if(num_rows>=WAVE_MAX_CLIST_LENGTH) { char buf[256]; sprintf(buf, "Limiting results to first %d entries.", num_rows); simplereqbox("Regex Search Warning",300,buf,"OK", NULL, NULL); } }
static void ok_callback(GtkWidget *widget, GtkWidget *nothing) { int i; struct symchain *symc, *symc_current; gfloat interval; if(is_append_running) return; is_append_running = ~0; gtk_grab_add(widget); symc=NULL; GTK_ADJUSTMENT(pdata->adj)->upper = (gfloat)((num_rows>1)?num_rows-1:1); interval = (gfloat)(num_rows/100.0); pdata->oldvalue = -1.0; for(i=0;i<num_rows;i++) { int len; struct symbol *s, *t; s=(struct symbol *)gtk_clist_get_row_data(GTK_CLIST(clist), i); if(s->selected) { pdata->value = i; if(((int)(pdata->value/interval))!=((int)(pdata->oldvalue/interval))) { gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), i); while (gtk_events_pending()) gtk_main_iteration(); } pdata->oldvalue = i; if((!s->vec_root)||(!autocoalesce)) { AddNode(s->n, NULL); } else { len=0; t=s->vec_root; while(t) { if(t->selected) { if(len) t->selected=0; symc_current=(struct symchain *)calloc_2(1,sizeof(struct symchain)); symc_current->next=symc; symc_current->symbol=t; symc=symc_current; } len++; t=t->vec_chain; } if(len)add_vector_chain(s->vec_root, len); } } } while(symc) { symc->symbol->selected=1; symc_current=symc; symc=symc->next; free_2(symc_current); } MaxSignalLength(); signalarea_configure_event(signalarea, NULL); wavearea_configure_event(wavearea, NULL); gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), 0.0); pdata->oldvalue = -1.0; gtk_grab_remove(widget); is_append_running=0; }
static void replace_callback(GtkWidget *widget, GtkWidget *nothing) { Traces tcache; int i; Trptr tfirst, tlast; struct symchain *symc, *symc_current; gfloat interval; if(is_replace_running) return; is_replace_running = ~0; gtk_grab_add(widget); tfirst=NULL; tlast=NULL; symc=NULL; memcpy(&tcache,&traces,sizeof(Traces)); traces.total=0; traces.first=traces.last=NULL; GTK_ADJUSTMENT(pdata->adj)->upper = (gfloat)((num_rows>1)?num_rows-1:1); interval = (gfloat)(num_rows/100.0); pdata->oldvalue = -1.0; for(i=0;i<num_rows;i++) { int len; struct symbol *s, *t; s=(struct symbol *)gtk_clist_get_row_data(GTK_CLIST(clist), i); if(s->selected) { pdata->value = i; if(((int)(pdata->value/interval))!=((int)(pdata->oldvalue/interval))) { gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), i); while (gtk_events_pending()) gtk_main_iteration(); } pdata->oldvalue = i; if((!s->vec_root)||(!autocoalesce)) { AddNode(s->n, NULL); } else { len=0; t=s->vec_root; while(t) { if(t->selected) { if(len) t->selected=0; symc_current=(struct symchain *)calloc_2(1,sizeof(struct symchain)); symc_current->next=symc; symc_current->symbol=t; symc=symc_current; } len++; t=t->vec_chain; } if(len)add_vector_chain(s->vec_root, len); } } } while(symc) { symc->symbol->selected=1; symc_current=symc; symc=symc->next; free_2(symc_current); } tfirst=traces.first; tlast=traces.last; /* cache for highlighting */ traces.buffercount=traces.total; traces.buffer=traces.first; traces.bufferlast=traces.last; traces.first=tcache.first; traces.last=tcache.last; traces.total=tcache.total; PasteBuffer(); traces.buffercount=tcache.buffercount; traces.buffer=tcache.buffer; traces.bufferlast=tcache.bufferlast; CutBuffer(); while(tfirst) { tfirst->flags |= TR_HIGHLIGHT; if(tfirst==tlast) break; tfirst=tfirst->next; } MaxSignalLength(); signalarea_configure_event(signalarea, NULL); wavearea_configure_event(wavearea, NULL); gtk_progress_set_value (GTK_PROGRESS (pdata->pbar), 0.0); pdata->oldvalue = -1.0; gtk_grab_remove(widget); is_replace_running=0; }
void * check_pop_main (Account *account) { char *buf = NULL, *buf2, *buf3; C2ResolveNode *resolve; int sock; int timedout = FALSE; struct sockaddr_in server; int messages = 0, bytes = 0, downloaded_bytes = 0, i = 0, password_errors = 3; GList *download[DOWNLOAD_LIST_LAST], *uidl_search = NULL, *top_search = NULL; GList *list; gboolean supports_uidl = FALSE; mid_t mid; FILE *index; FILE *mail; Message message; char *mailbox; Mailbox *mbox; GString *strmsg; char *header[HEADER_LAST]; gboolean reading_header = TRUE; gboolean with_attachs = FALSE; char *content_type; char *row[8]; GtkStyle *style, *style2; gboolean clisted = FALSE; g_return_val_if_fail (account, NULL); g_return_val_if_fail (account->type == C2_ACCOUNT_POP, NULL); download[DOWNLOAD_LIST_TOTAL] = NULL; download[DOWNLOAD_LIST_UIDL] = NULL; download[DOWNLOAD_LIST_TOP] = NULL; resolve = c2_resolve (account->protocol.pop.host, &buf); if (buf) { gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); return NULL; } sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) { gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, _("Failed to create socket")); gdk_threads_leave (); return NULL; } server.sin_family = AF_INET; server.sin_port = htons (account->protocol.pop.host_port); server.sin_addr.s_addr= inet_addr (resolve->ip); if (connect (sock, (struct sockaddr *)&server, sizeof (server)) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); return NULL; } /* Guten Morgen, Herr Server! */ buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } c2_free (buf); /* Log In */ gdk_threads_enter (); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), _("Logging in...")); gdk_threads_leave (); retry_login: if (sock_printf (sock, "USER %s\r\n", account->protocol.pop.usr_name) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } c2_free (buf); if (sock_printf (sock, "PASS %s\r\n", account->protocol.pop.pass) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } buf = sock_read (sock, &timedout); if (strnne (buf, "+OK", 3)) { if (--password_errors < 0) { if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } } gdk_threads_enter (); if (!gui_ask_password (account)) { gdk_threads_leave (); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } } else { gdk_threads_leave (); goto retry_login; } } c2_free (buf); /* STAT */ gdk_threads_enter (); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), _("Checking for number of mails in server...")); gdk_threads_leave (); if (sock_printf (sock, "STAT\r\n") < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } sscanf (buf, "+OK %d ", &messages); c2_free (buf); if (!messages) { gdk_threads_enter (); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), _("No messages in server")); window_checking_report (C2_CHECK_OK, account->acc_name, _("No messages to download")); gdk_threads_leave (); clisted = TRUE; goto bye_bye_server; } else if (messages != 1) buf = g_strdup_printf (_("%d messages in server"), messages); else buf = g_strdup_printf (_("1 message in server")); gdk_threads_enter (); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), buf); gdk_threads_leave (); c2_free (buf); /* UIDL */ if (!account->keep_copy) { dont_use_uidl: /* Without UIDL*/ for (i = 1; i <= messages; i++) { buf = g_strdup_printf ("%d", i); download[DOWNLOAD_LIST_UIDL] = g_list_append (download[DOWNLOAD_LIST_UIDL], (gpointer) buf); } } else { /* With UIDL */ if (sock_printf (sock, "UIDL\r\n") < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } for (i = 0;; i++) { buf = sock_read (sock, &timedout); if (!i && strnne (buf, "+OK", 3)) { /* UIDL is optional for POP servers, * so I won't complain if server doesn't like it */ buf2 = g_strdup_printf (_("The POP server of the account %s doesn't support UIDL."), account->acc_name); gdk_threads_enter (); gnome_appbar_set_status (GNOME_APPBAR (WMain->appbar), buf2); gdk_threads_leave (); supports_uidl = FALSE; goto dont_use_uidl; } supports_uidl = TRUE; if (!i) continue; if (streq (buf, ".\r\n")) break; buf2 = str_get_word (1, buf, ' '); buf3 = str_strip (buf2, '\r'); buf2 = str_strip (buf3, '\n'); if (!uidl_check (buf2, account->acc_name)) { download[DOWNLOAD_LIST_UIDL] = g_list_append (download[DOWNLOAD_LIST_UIDL], buf); } } } /* TOP */ if (!config->message_bigger) { /* Without TOP */ dont_use_list: dont_use_top: for (i = 1; i <= messages; i++) download[DOWNLOAD_LIST_TOP] = g_list_append (download[DOWNLOAD_LIST_TOP], (gpointer) i); } else { /* With TOP */ char *subject, *from, *date, *kbytes; if (sock_printf (sock, "LIST\r\n") < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } for (i = 0;; i++) { buf = sock_read (sock, &timedout); if (!i && strnne (buf, "+OK", 3)) { buf2 = g_strdup_printf (_("The POP server of the account %s doesn't support LIST."), account->acc_name); gdk_threads_enter (); gnome_appbar_set_status (GNOME_APPBAR (WMain->appbar), buf2); gdk_threads_leave (); goto dont_use_list; } if (!i) continue; if (streq (buf, ".\r\n")) break; buf2 = str_get_word (1, buf, ' '); str_strip (buf2, '\r'); str_strip (buf2, '\n'); download[DOWNLOAD_LIST_TOP] = g_list_append (download[DOWNLOAD_LIST_TOP], buf); c2_free (buf2); } for (list = download[DOWNLOAD_LIST_TOP]; list; list = list->next) { if (sock_printf (sock, "TOP %d 0\r\n", atoi (CHAR (list->data))) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } strmsg = g_string_new (NULL); for (i = 0;; i++) { buf = sock_read (sock, &timedout); if (!i && strnne (buf, "+OK", 3)) { buf2 = g_strdup_printf (_("The POP server of the account %s doesn't support TOP."), account->acc_name); gdk_threads_enter (); gnome_appbar_set_status (GNOME_APPBAR (WMain->appbar), buf2); gdk_threads_leave (); goto dont_use_top; } if (!i) continue; if (streq (buf, ".\r\n")) break; g_string_append (strmsg, buf); c2_free (buf); } subject = message_get_header_field (NULL, strmsg->str, "\nSubject:"); from = message_get_header_field (NULL, strmsg->str, "From:"); date = message_get_header_field (NULL, strmsg->str, "\nDate:"); kbytes = str_get_word (1, CHAR (list->data), ' '); str_strip (kbytes, '\r');str_strip (kbytes, '\n'); gdk_threads_enter (); if ((atoi (kbytes) >= config->message_bigger*1024) && (!gui_message_big_new (from, subject, date, account->acc_name, kbytes))) { gdk_threads_leave (); c2_free (list->data); list->data = NULL; download[DOWNLOAD_LIST_TOP] = g_list_remove_link (download[DOWNLOAD_LIST_TOP], list); } else gdk_threads_leave (); } } /* Learn messages to download */ if (!account->keep_copy && !config->message_bigger) { /* !UIDL AND !TOP */ download[DOWNLOAD_LIST_TOTAL] = download[DOWNLOAD_LIST_UIDL]; } else if (account->keep_copy && !config->message_bigger) { /* UIDL AND !TOP */ for (list = download[DOWNLOAD_LIST_UIDL]; list; list = list->next) { download[DOWNLOAD_LIST_TOTAL] = g_list_append (download[DOWNLOAD_LIST_TOTAL], str_get_word (0, CHAR (list->data), ' ')); } } else if (!account->keep_copy && config->message_bigger) { /* !UIDL AND TOP */ download[DOWNLOAD_LIST_TOTAL] = download[DOWNLOAD_LIST_TOP]; } else if (account->keep_copy && config->message_bigger) { /* UIDL AND TOP */ for (uidl_search = download[DOWNLOAD_LIST_UIDL]; !uidl_search; uidl_search = uidl_search->next) { for (top_search = download[DOWNLOAD_LIST_TOP]; !top_search; top_search = top_search->next) { printf ("%d %d\n", (int) uidl_search->data, (int) top_search->data); /* TODO */ } } } messages = g_list_length (download[DOWNLOAD_LIST_TOTAL]); gdk_threads_enter (); gtk_progress_configure (GTK_PROGRESS (window_checking->mail_progress), 0, 0, messages); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), _("%p%% downloaded (%v of %u messages)")); gdk_threads_leave (); strmsg = g_string_new (NULL); message.message = message.header = NULL; for (list = download[DOWNLOAD_LIST_TOTAL]; list; list = list->next) { buf = str_get_word (0, CHAR (list->data), ' '); i = atoi (buf); c2_free (buf); /* Ask for the mail */ if (sock_printf (sock, "RETR %d\r\n", i) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } /* Read the first line */ buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } /* Learn bytes in the messages */ sscanf (buf, "+OK %d octets\r\n", &bytes); if (bytes) { gdk_threads_enter (); gtk_progress_configure (GTK_PROGRESS (window_checking->bytes_progress), 0, 0, bytes); gtk_widget_show (window_checking->bytes_progress); gdk_threads_leave (); } else { gdk_threads_enter (); gtk_widget_hide (window_checking->bytes_progress); gdk_threads_leave (); } c2_free (buf); /* Get the mail */ reading_header = TRUE; for (;;) { buf = sock_read (sock, &timedout); if (bytes) { downloaded_bytes += strlen (buf); gdk_threads_enter (); gtk_progress_set_value (GTK_PROGRESS (window_checking->bytes_progress), downloaded_bytes); gdk_threads_leave (); } if (streq (buf, ".\r\n")) { message.message = g_strdup (strmsg->str); g_string_assign (strmsg, ""); str_strip (message.message, '\r'); break; } if (reading_header && strlen (buf) > 2) { char *buf2; buf2 = decode_8bit (buf); c2_free (buf); buf = buf2; } if (reading_header && strlen (buf) == 2) { /* Still reading header and is an empty line */ buf2 = g_strdup_printf ("X-CronosII-Account: %s\r\n", account->acc_name); g_string_append (strmsg, buf2); c2_free (buf2); reading_header = FALSE; } g_string_append (strmsg, buf); } gtk_progress_set_percentage (GTK_PROGRESS (window_checking->bytes_progress), 1); /* Write to the mail file */ mailbox = account->mailbox->name; #if USE_PLUGINS c2_dynamic_module_signal_emit (C2_DYNAMIC_MODULE_MESSAGE_DOWNLOAD_POP, &message, &mailbox, NULL, NULL, NULL); #endif mbox = search_mailbox_name (config->mailbox_head, mailbox); if (!mbox) { /* Mailbox couldn't be found, going with the default */ mbox = account->mailbox; } mid = c2_mailbox_get_next_mid (mbox); buf = c2_mailbox_mail_path (mailbox, mid); if ((mail = fopen (buf, "w")) == NULL) { gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, _("Error opening the file where to store the new mail")); cronos_error (errno, _("Opening the mail file"), ERROR_WARNING); gdk_threads_leave (); c2_free (buf); continue; } c2_free (buf); fprintf (mail, "%s", message.message); fclose (mail); /* Write to the index file */ buf = c2_mailbox_index_path (mailbox); if ((index = fopen (buf, "a")) == NULL) { gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, _("Error opening the main DB file to store the new mail")); cronos_error (errno, _("Opening the main DB file"), ERROR_WARNING); gdk_threads_leave (); c2_free (buf); goto bye_bye_server; } header[HEADER_SUBJECT] = message_get_header_field (&message, NULL, "\nSubject:"); header[HEADER_FROM] = message_get_header_field (&message, NULL, "\nFrom:"); header[HEADER_DATE] = message_get_header_field (&message, NULL, "\nDate:"); content_type = message_get_header_field (&message, NULL, "\nContent-Type:"); with_attachs = FALSE; /* if (content_type) { message_mime_parse_content_type (content_type, &type, &subtype, ¶meter); if (streq (type, "multipart")) { GList *s; MimeHash *mime; message_mime_parse (&message, NULL); for (s = message.mime; s != NULL; s = s->next) { mime = MIMEHASH (s->data); if (!mime) continue; if (strneq (mime->disposition, "attachment", 10)) with_attachs = TRUE; } } }*/ if (!header[HEADER_SUBJECT]) header[HEADER_SUBJECT] = ""; if (!header[HEADER_FROM]) header[HEADER_FROM] = ""; if (!header[HEADER_DATE]) header[HEADER_DATE] = ""; fprintf (index, "N\r\r%s\r%s\r%s\r%s\r%s\r%d\n", with_attachs ? "1" : "", header[HEADER_SUBJECT], header[HEADER_FROM], header[HEADER_DATE], account->acc_name, mid); fclose (index); c2_free (message.message); c2_free (message.header); message.message = message.header = NULL; if (!account->keep_copy) { /* Delete the message */ if (sock_printf (sock, "DELE %d\r\n", i) < 0) { buf = g_strerror (errno); gdk_threads_enter (); window_checking_report (C2_CHECK_ERR, account->acc_name, buf); gdk_threads_leave (); goto bye_bye_server; } buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; goto bye_bye_server; } } if (streq (selected_mbox, mailbox)) { row[0] = ""; row[1] = ""; row[2] = ""; row[3] = header[HEADER_SUBJECT]; row[4] = header[HEADER_FROM]; row[5] = header[HEADER_DATE]; row[6] = account->acc_name; row[7] = g_strdup_printf ("%d", mid); gdk_threads_enter (); gtk_clist_freeze (GTK_CLIST (WMain->clist)); gtk_clist_append (GTK_CLIST (WMain->clist), row); style = gtk_widget_get_style (WMain->clist); style2 = gtk_style_copy (style); style2->font = font_unread; gtk_clist_set_row_style (GTK_CLIST (WMain->clist), GTK_CLIST (WMain->clist)->rows-1, style2); gtk_clist_set_pixmap (GTK_CLIST (WMain->clist), GTK_CLIST (WMain->clist)->rows-1, 0, pixmap_unread, mask_unread); if (with_attachs) gtk_clist_set_pixmap (GTK_CLIST (WMain->clist), GTK_CLIST (WMain->clist)->rows-1, 2, pixmap_attach, mask_attach); new_messages++; gtk_clist_thaw (GTK_CLIST (WMain->clist)); gtk_clist_set_row_data (GTK_CLIST (WMain->clist), GTK_CLIST (WMain->clist)->rows-1, (gpointer) "N"); update_wm_title (); gtk_progress_set_value (GTK_PROGRESS (window_checking->mail_progress), i); gdk_threads_leave (); clisted = TRUE; } gdk_threads_enter (); gtk_progress_set_value (GTK_PROGRESS (window_checking->mail_progress), gtk_progress_get_value (GTK_PROGRESS (window_checking->mail_progress))+1); gdk_threads_leave (); } if (supports_uidl) { GList *llist; for (llist = download[DOWNLOAD_LIST_UIDL]; llist != NULL; llist = llist->next) { char *uidl; uidl = CHAR (llist->data); buf2 = str_get_word (1, uidl, ' '); buf3 = str_strip (buf2, '\r'); buf2 = str_strip (buf3, '\n'); if (buf2) { uidl_register (buf2, account->acc_name); } } } if (messages != 1) buf = g_strdup_printf (_("%d messages downloaded."), messages); else buf = g_strdup_printf (_("1 message downloaded.")); gdk_threads_enter (); gtk_progress_configure (GTK_PROGRESS (window_checking->mail_progress), messages, 0, messages); gtk_progress_set_format_string (GTK_PROGRESS (window_checking->mail_progress), buf); window_checking_report (C2_CHECK_OK, account->acc_name, buf); gdk_threads_leave (); bye_bye_server: if (sock_printf (sock, "QUIT\r\n") < 0) { buf = g_strerror (errno); } buf = sock_read (sock, &timedout); if (pop_check_answer (buf, account, timedout) < 0) { if (timedout) goto run_for_your_life; } run_for_your_life: close (sock); return NULL; }
gboolean apt_action_cb(GIOChannel * io, GIOCondition condition, gpointer data) { GString *str; gchar *package; gchar *package_info; str = g_string_new(""); g_io_channel_read_line_string(io, str, NULL, NULL); if (strncmp(str->str, "Unpacking", strlen("Unpacking")) == 0) { gchar **split_str; gchar *msg; split_str = g_strsplit(str->str, " ", 3); printf(_("Unpacking ---> %s\n"), split_str[1]); msg = g_strdup_printf(_("Unpacking %s ..."), split_str[1]); gtk_label_set_text(GTK_LABEL(label), msg); g_strfreev(split_str); g_free(msg); } else { if (strncmp(str->str, "Setting up", strlen("Setting up")) == 0) { gchar **split_str; gchar *msg; split_str = g_strsplit(str->str, " ", 4); printf(_("Setting up ---> %s\n"), split_str[2]); if (strcmp(split_str[2], last_package) == 0) { gtk_widget_hide_all(hbox1); if (gdk_screen_get_width(screen) >= 1024) { gchar *big_pic; big_pic = g_strdup_printf("%s/reg_doc_big.jpg", branding_path); gtk_image_set_from_file(GTK_IMAGE(im), big_pic); g_free(big_pic); } else { gchar *normal_pic; normal_pic = g_strdup_printf("%s/reg_doc.jpg", branding_path); gtk_image_set_from_file(GTK_IMAGE(im), normal_pic); g_free(normal_pic); } } else { msg = g_strdup_printf(_("Setting up %s ..."), split_str[2]); gtk_label_set_text(GTK_LABEL(label), msg); g_free(msg); } g_strfreev(split_str); } else { if (strncmp(str->str, "--end install ok--", strlen("--end install ok--")) == 0) { g_string_free(str, TRUE); installation_ok = TRUE; return FALSE; } if (strncmp(str->str, "--end install fail--", strlen("--end install fail--")) == 0) { g_string_free(str, TRUE); installation_ok = FALSE; return FALSE; } g_string_free(str, TRUE); return TRUE; } } y = y + x; gtk_progress_set_value(GTK_PROGRESS(pb), y); if (y > z) { char *normal_pic; char *big_pic; switch (z) { case 20: case 40: case 60: case 80: normal_pic = g_strdup_printf("%s/corp_pic%i.jpg", branding_path, (z / 20) + 1); big_pic = g_strdup_printf("%s/corp_pic_big%i.jpg", branding_path, (z / 20) + 1); if (gdk_screen_get_width(screen) >= 1024) gtk_image_set_from_file(GTK_IMAGE(im), big_pic); else gtk_image_set_from_file(GTK_IMAGE(im), normal_pic); g_free(normal_pic); g_free(big_pic); break; } z = z + 20; } gtk_widget_show(pb); gtk_widget_show(label); g_string_free(str, TRUE); return TRUE; }
int main(int argc, char *argv[]) { GdkColor color; gchar *custom_color; custom_color = g_getenv("UDA_CUSTOM_COLOR"); if (custom_color != NULL) gdk_color_parse(custom_color, &color); bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); gtk_init(&argc, &argv); if (argc != 4) { g_print ("Usage uda-postinstall <num_of_total_packages> <packages> <last_package>\n\n" "\t<num_of_total_packages> : This is the number of all packages that will be installated\n" "\t<packages> : name of packages or meta-packages that install all software.\n " "\tyou MUST write the names of this packages between double quotes. Example \"uda-desktop uda-base\"\n" "\t<last_package> : The last package that will be installed in the installation process\n\n"); return; } branding_path = get_branding_path(); last_package = g_strdup(argv[3]); app = glade_xml_new(UIDIR "uda-postinstall.glade", NULL, NULL); win = glade_xml_get_widget(app, "window_apt"); if (custom_color != NULL) gtk_widget_modify_bg(win, GTK_STATE_NORMAL, &color); pb = glade_xml_get_widget(app, "progressbar"); im = glade_xml_get_widget(app, "image"); label = glade_xml_get_widget(app, "label"); hbox1 = glade_xml_get_widget(app, "hbox1"); x = (100.0 / (atoi(argv[1]) * 2.0)); y = 0; gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR(pb), GTK_PROGRESS_CONTINUOUS); gtk_progress_set_format_string(GTK_PROGRESS(pb), "%p%%"); gtk_progress_set_show_text(GTK_PROGRESS(pb), TRUE); gtk_progress_set_value(GTK_PROGRESS(pb), y); z = 20; /* Next percent for show the next corporative image */ cmd = g_strdup_printf("LANG=C DEBCONF_PRIORITY=critical /usr/bin/apt-get -y --force-yes install %s && echo \"--end install ok--\" || echo \"--end install fail--\"", argv[2]); f = popen(cmd, "r"); io = g_io_channel_unix_new(fileno(f)); g_io_add_watch_full(io, G_PRIORITY_LOW, G_IO_IN, apt_action_cb, NULL, close_apt); screen = gdk_screen_get_default(); if (gdk_screen_get_width(screen) >= 1024) { gchar *big_pic; big_pic = g_strdup_printf("%s/corp_pic_big1.jpg", branding_path); gtk_image_set_from_file(GTK_IMAGE(im), big_pic); g_free(big_pic); } else { gchar *normal_pic; normal_pic = g_strdup_printf("%s/corp_pic1.jpg", branding_path); gtk_image_set_from_file(GTK_IMAGE(im), normal_pic); g_free(normal_pic); } gtk_widget_set_size_request(pb, gdk_screen_get_width(screen) * 80 / 100, -1); gtk_widget_show_all(win); gtk_window_fullscreen(GTK_WINDOW(win)); gtk_main(); g_free(branding_path); g_free(last_package); return 0; }