void on_toolbar_next_clicked (GtkButton * UNUSED(button), gpointer UNUSED(user_data)) { GtkCTree *ctree; GtkCTreeNode *n; ctree = GTK_CTREE (lookup_widget (gems, "mailbox")); if (ctree->clist.rows == 0) return; n = gtk_ctree_node_nth (GTK_CTREE (ctree), (&(GTK_CTREE (ctree)->clist))->focus_row); gtk_ctree_unselect (GTK_CTREE (ctree), n); if ((&(GTK_CTREE (ctree)->clist))->focus_row < ((&(GTK_CTREE (ctree)->clist))->rows - 1)) (&(GTK_CTREE (ctree)->clist))->focus_row++; n = gtk_ctree_node_nth (GTK_CTREE (ctree), (&(GTK_CTREE (ctree)->clist))->focus_row); gtk_ctree_select (GTK_CTREE (ctree), n); if (gtk_ctree_node_is_visible (GTK_CTREE (ctree), n) != GTK_VISIBILITY_FULL) gtk_ctree_node_moveto (GTK_CTREE (ctree), n, 0, 1, 0); putmail (GTK_WIDGET (ctree)); return; }
static void selected_row_changed(GtkCTree *ctree) { int row; if (selected_record) { search_gui_unref_record(selected_record); selected_record = NULL; } row = clist_get_cursor_row(GTK_CLIST(ctree)); if (row >= 0) { GtkCTreeNode *node; node = gtk_ctree_node_nth(GTK_CTREE(ctree), row); selected_record = search_gui_get_record(ctree, GTK_CTREE_NODE(node)); if (selected_record) { search_gui_ref_record(selected_record); } } if (row_selected_ev) { cq_resched(row_selected_ev, ROW_SELECT_TIMEOUT); } else { row_selected_ev = cq_main_insert(ROW_SELECT_TIMEOUT, row_selected_expire, NULL); } }
static void plCTRow(GtkWidget * widget, gint row, gint column, GdkEventButton * bevent, gpointer data) { DirNodeType * DirNode; GtkCTreeNode * node; node=gtk_ctree_node_nth( GTK_CTREE( widget ),row ); DirNode=gtk_ctree_node_get_row_data( GTK_CTREE( widget ),node ); current_path=DirNode->path; gtk_ctree_expand( GTK_CTREE( widget ),node ); scan_dir( DirNode->path ); if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) ); }
int putmail (GtkWidget * widget) { synopsis *s; GtkCTreeNode *n; GtkWidget *from, *subj, *date, *recipt, *body; char *shtuff; if (widget != NULL) { n = gtk_ctree_node_nth (GTK_CTREE (widget), (&(GTK_CTREE (widget)->clist))->focus_row); s = (synopsis *) gtk_ctree_node_get_row_data (GTK_CTREE (widget), n); if (s) shtuff = (char *) db_read_body (s->id); else { printf ("synopsis for row %d is NULL!\n", (&(GTK_CTREE (widget)->clist))->focus_row); return FALSE; } } else { s = (synopsis *) malloc (sizeof (synopsis)); s->sender = strdup (" "); s->subject = strdup (" "); s->date = strdup (" "); s->sender = strdup (" "); shtuff = strdup (" "); } from = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (gems), "entry1"); date = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (gems), "entry2"); subj = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (gems), "entry3"); recipt = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (gems), "entry4"); body = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (gems), "text1"); gtk_entry_set_text (GTK_ENTRY (from), s->sender); gtk_entry_set_text (GTK_ENTRY (subj), s->subject); gtk_entry_set_text (GTK_ENTRY (date), s->date); gtk_text_freeze (GTK_TEXT (body)); gtk_text_set_point (GTK_TEXT (body), 0); gtk_text_forward_delete (GTK_TEXT (body), gtk_text_get_length (GTK_TEXT (body))); gtk_text_insert (GTK_TEXT (body), NULL, NULL, NULL, shtuff, -1); gtk_text_thaw (GTK_TEXT (body)); if (widget == NULL) { free (s); free (shtuff); } return TRUE; }
void on_toolbar_reply_clicked (GtkButton * UNUSED(button), gpointer UNUSED(user_data)) { synopsis *s; GtkCTreeNode *n; GtkWidget *from, *subj, *date, *recipt, *body, *comp, *widget; char *shtuff, buf[1024]; if ((widget = lookup_widget (gems, "mailbox")) == NULL) return; comp = create_compose (); from = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "entry1"); /* to = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "entry5"); */ date = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "entry2"); subj = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "entry6"); recipt = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "entry4"); body = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (comp), "text2"); n = gtk_ctree_node_nth (GTK_CTREE (widget), (&(GTK_CTREE (widget)->clist))->focus_row); s = (synopsis *) gtk_ctree_node_get_row_data (GTK_CTREE (widget), n); shtuff = replyify (s, (char *)db_read_body (s->id)); gtk_entry_set_text (GTK_ENTRY (from), s->sender); /* * if(!strncasecmp("re: ", s->subject, 4)) */ if (tolower (s->subject[0]) == 'r' && tolower (s->subject[1]) == 'e' && s->subject[2] == ':' && s->subject[3] == ' ') sprintf (buf, "%s", s->subject); else sprintf (buf, "Re: %s", s->subject); gtk_entry_set_text (GTK_ENTRY (subj), buf); gtk_entry_set_text (GTK_ENTRY (date), s->date); gtk_text_freeze (GTK_TEXT (body)); gtk_text_set_point (GTK_TEXT (body), 0); gtk_text_forward_delete (GTK_TEXT (body), gtk_text_get_length (GTK_TEXT (body))); gtk_text_insert (GTK_TEXT (body), NULL, NULL, NULL, shtuff, -1); gtk_text_thaw (GTK_TEXT (body)); if (widget == NULL) { free (s); free (shtuff); } gtk_text_set_editable (GTK_TEXT (body), TRUE); gtk_widget_show (comp); return; }
void on_delete1_activate (GtkMenuItem * UNUSED(menuitem), gpointer UNUSED(user_data)) { GtkWidget *w; GtkCTree *ctree; GtkCTreeNode *n; mboxs *m; ctree = GTK_CTREE (lookup_widget (gems, "mailboxlist")); n = gtk_ctree_node_nth (ctree, (&(ctree->clist))->focus_row); m = (mboxs *) gtk_ctree_node_get_row_data (ctree, n); w = create_delete_mbox (); gtk_widget_show (w); gtk_object_set_user_data (GTK_OBJECT (w), m); }
static void select_row_cb(GtkWidget * widget, gint row, gint column, GdkEventButton * bevent, gpointer data) { DirNode *dirnode; GtkCTreeNode *node; void (*handler) (gchar *); if (bevent) { if (bevent->type == GDK_2BUTTON_PRESS) { node = gtk_ctree_node_nth(GTK_CTREE(widget), row); dirnode = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node); handler = (void (*)(gchar *)) gtk_object_get_user_data(GTK_OBJECT(widget)); if (handler) handler(dirnode->path); } } }
/* Returns : The node corresponding to the row th row. */ int clip_GTK_CTREENODENTH (ClipMachine *cm) { C_widget *cctree = _fetch_cw_arg(cm); guint row = _clip_parni(cm,2); C_object *cnode; GtkCTreeNode *node; CHECKCWID(cctree,GTK_IS_CTREE); CHECKOPT(2,NUMERIC_t); if (_clip_parinfo(cm,2)==UNDEF_t) row = 1; node = gtk_ctree_node_nth (GTK_CTREE(cctree->widget), row-1); if (node) { cnode = _list_get_cobject(cm,node); if (!cnode) cnode = _register_object(cm,node,GTK_TYPE_CTREE_NODE,NULL,NULL); if (cnode) _clip_mclone(cm,RETPTR(cm),&cnode->obj); } return 0; err: return 1; }
/* * Refresh provider graphic list. */ void gdisp_refreshSampledSymbolList ( Kernel_T *kernel ) { GList *providerItem = (GList*)NULL; Provider_T *provider = (Provider_T*)NULL; GtkWidget *cTree = (GtkWidget*)NULL; GList *cTreeList = (GList*)NULL; GtkCTreeRow *cTreeRow = (GtkCTreeRow*)NULL; GtkCTreeNode *cTreeNode = (GtkCTreeNode*)NULL; guint cTreeLength = 0; guint cTreeCpt = 0; /* ------------------------ PER PROVIDER ---------------------- */ cTree = kernel->widgets.sampledSymbolHTree; /* * When removing a node, GTK main loop activate the "unselect" * callback, that performs a post recursive action on a node * that has been destroyed. * Avoid that shame by temporarily blocking the signal emission. */ gtk_clist_freeze(GTK_CLIST(cTree)); gtk_signal_handler_block_by_func(GTK_OBJECT(cTree), gdisp_treeUnselectRowCallback, (gpointer)kernel); /* * Remove all top-level node, those that have no parent. * First step : build top-level list. */ cTreeLength = g_list_length(GTK_CTREE(cTree)->clist.row_list); for (cTreeCpt=0; cTreeCpt<cTreeLength; cTreeCpt++) { cTreeNode = gtk_ctree_node_nth(GTK_CTREE(cTree),cTreeCpt); if (cTreeNode != (GtkCTreeNode*)NULL) { cTreeRow = GTK_CTREE_ROW(cTreeNode); if (cTreeRow->parent == (GtkCTreeNode*)NULL) { cTreeList = g_list_append(cTreeList,(gpointer)cTreeNode); } /* node is top-level, ie without parent */ } /* node exists */ } /* loop over all rows */ /* * Second step : remove all top_level nodes. */ cTreeList = g_list_first(cTreeList); while (cTreeList != (GList*)NULL) { gtk_ctree_remove_node(GTK_CTREE(cTree), (GtkCTreeNode*)cTreeList->data); cTreeList = g_list_next(cTreeList); } /* * Loop over all providers. Forget tree node address. */ providerItem = g_list_first(kernel->providerList); while (providerItem != (GList*)NULL) { provider = (Provider_T*)providerItem->data; provider->pNode = (GtkCTreeNode*)NULL; providerItem = g_list_next(providerItem); } /* * Finalise. */ gdisp_finaliseHierarchicalTree(kernel, cTree); /* * Activate again the unselect handler. */ gtk_signal_handler_unblock_by_func(GTK_OBJECT(cTree), gdisp_treeUnselectRowCallback, (gpointer)kernel); gtk_clist_thaw(GTK_CLIST(cTree)); }
gint gtk_dir_tree_open_dir(GtkDirTree *dir_tree, const gchar *path) { GtkCTreeNode *root_node, *node; GtkDirTreeNode *dir_node; DIR *dir; gchar *c; gchar *folder; gint nlen; gint new_path, new_node; gchar *text; gchar root[5], root1[5], root2[5], root3[5], root4[5]; gchar *aux_path, *real_path; if((dir=opendir(path)) == NULL) return FALSE; closedir(dir); /* GET ABSOLUTE PATH */ sprintf(root,"%s",G_DIR_SEPARATOR_S); sprintf(root1,"%s.",G_DIR_SEPARATOR_S); sprintf(root2,"%s..",G_DIR_SEPARATOR_S); sprintf(root3,"%s..%s",G_DIR_SEPARATOR_S,G_DIR_SEPARATOR_S); sprintf(root4,"%s.%s",G_DIR_SEPARATOR_S,G_DIR_SEPARATOR_S); if(path){ gint length; aux_path = g_strdup(path); length = strlen(aux_path); if(strcmp(aux_path + length - 2, root1) == 0){ if(length == 2) { g_free(aux_path); aux_path = g_strdup(root); } else { aux_path[length - 1] = '\0'; } } else if(strcmp(aux_path + length - 3, root2) == 0){ if(length == 3) { g_free(aux_path); aux_path = g_strdup(root); } else { gint i = length - 4; while(i >= 0){ if(aux_path[i] == root[0]){ aux_path[i+1] = '\0'; break; } i--; } } } else if(strcmp(aux_path + length - 4, root3) == 0){ if(length == 4) { g_free(aux_path); aux_path = g_strdup(root); } else { gint i = length - 5; while(i >= 0){ if(aux_path[i] == root[0]){ aux_path[i+1] = '\0'; break; } i--; } } } else if(strcmp(aux_path + length - 3, root4) == 0){ if(length == 3) { g_free(aux_path); aux_path = g_strdup(root); } else { aux_path[length - 2] = '\0'; } } } else aux_path = g_strdup(G_DIR_SEPARATOR_S); real_path = g_strdup(aux_path); g_free(aux_path); c = (gchar *)real_path; folder = NULL; nlen = 0; root_node = gtk_ctree_node_nth(GTK_CTREE(dir_tree), 1); gtk_ctree_expand(GTK_CTREE(dir_tree), root_node); new_path = FALSE; new_node = TRUE; while(*c != '\0' && *c != '\n' && c != NULL){ nlen++; folder = (char *)g_realloc(folder, (nlen+1)*sizeof(char)); folder[nlen-1] = *c; folder[nlen]='\0'; if(*c == G_DIR_SEPARATOR){ if(new_path){ node = GTK_CTREE_ROW(root_node)->children; while(node){ dir_node = gtk_ctree_node_get_row_data(GTK_CTREE(dir_tree), node); text = dir_node->path; if(strcmp(text, folder) == 0){ gtk_ctree_expand(GTK_CTREE(dir_tree), node); root_node = node; break; } node = GTK_CTREE_NODE_NEXT(node); } } else { new_path = TRUE; } new_node = FALSE; } else { new_node = TRUE; } c++; } if(new_node){ nlen++; folder = (char *)g_realloc(folder, (nlen+1)*sizeof(char)); folder[nlen-1] = G_DIR_SEPARATOR; folder[nlen]='\0'; node = GTK_CTREE_ROW(root_node)->children; while(node){ dir_node = gtk_ctree_node_get_row_data(GTK_CTREE(dir_tree), node); text = dir_node->path; if(strcmp(text, folder) == 0){ gtk_ctree_expand(GTK_CTREE(dir_tree), node); root_node = node; break; } node = GTK_CTREE_NODE_NEXT(node); } } g_free(folder); if (gtk_ctree_node_is_visible(GTK_CTREE(dir_tree), root_node) != GTK_VISIBILITY_FULL) { gtk_widget_map(GTK_WIDGET(dir_tree)); gtk_ctree_node_moveto(GTK_CTREE(dir_tree), root_node, 0, 0.5, 0.5); } gtk_ctree_select(GTK_CTREE(dir_tree), root_node); return TRUE; }
/* a mailbox was clicked * TODO: this is called twice on keypress... up and down? */ void on_mailboxlist_tree_select_row (GtkCTree * ctree, GList * UNUSED(node), gint UNUSED(column), gpointer UNUSED(user_data)) { GtkWidget *mailbox, *stat; GtkCTreeNode *n; GtkCList *clist; GtkWidget *appbar; gchar *text[3]; synopsis **syn; int x = 0, mboxcount; mboxview *m; n = gtk_ctree_node_nth (ctree, (&(ctree->clist))->focus_row); m = (mboxview *) gtk_ctree_node_get_row_data (ctree, n); if (m == NULL) { printf (_("Bad mbox (null)\n")); exit (-1); } stat = lookup_widget (gems, "appbar1"); mailbox = lookup_widget (gems, "mailbox"); appbar = lookup_widget (gems, "appbar1"); /*** TODO *** clear the mail things */ putmail (NULL); gnome_appbar_push (GNOME_APPBAR (stat), _("Reading synopsis")); while (gtk_events_pending ()) gtk_main_iteration (); syn = (synopsis **) db_read_synopsis (m->mailbox->id, m->status); gnome_appbar_pop (GNOME_APPBAR (stat)); gnome_appbar_push (GNOME_APPBAR (stat), _("Displaying mailbox")); while (gtk_events_pending ()) gtk_main_iteration (); clist = >K_CTREE (mailbox)->clist; gtk_clist_clear (clist); while (gtk_events_pending ()) gtk_main_iteration (); gtk_clist_freeze (clist); if(syn) { mboxcount = 0; while (syn[mboxcount] != NULL) mboxcount++; while (syn[x] != NULL) { GtkCTreeNode *n; text[0] = syn[x]->sender; text[1] = syn[x]->date; text[2] = syn[x]->subject; n = gtk_ctree_insert_node (GTK_CTREE (mailbox), NULL, NULL, text, 5, NULL, NULL, NULL, NULL, TRUE, TRUE); gtk_ctree_node_set_row_data (GTK_CTREE (mailbox), n, syn[x]); gnome_appbar_set_progress (GNOME_APPBAR (appbar), (float)x / (float)mboxcount); /* * pump the status bar */ if (gtk_events_pending ()) gtk_main_iteration (); x++; } free (syn); } gtk_clist_set_sort_column (clist, 1); gtk_clist_set_sort_type (clist, GTK_SORT_ASCENDING); gtk_clist_sort (clist); gtk_clist_thaw (clist); update_mboxlist (NULL); gnome_appbar_set_progress (GNOME_APPBAR (appbar), 0.0); gnome_appbar_pop (GNOME_APPBAR (stat)); /* * gtk_signal_handler_unblock(GTK_OBJECT(ctree), select_row); */ }