static GtkWidget * pine_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { GtkWidget *box, *w; g_datalist_set_data ( &target->data, "pine-do-mail", GINT_TO_POINTER (TRUE)); g_datalist_set_data ( &target->data, "pine-do-addr", GINT_TO_POINTER (TRUE)); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); w = gtk_check_button_new_with_label (_("Mail")); gtk_toggle_button_set_active ((GtkToggleButton *) w, TRUE); g_signal_connect ( w, "toggled", G_CALLBACK (checkbox_mail_toggle_cb), target); gtk_box_pack_start ((GtkBox *) box, w, FALSE, FALSE, 0); w = gtk_check_button_new_with_label (_("Address Book")); gtk_toggle_button_set_active ((GtkToggleButton *) w, TRUE); g_signal_connect ( w, "toggled", G_CALLBACK (checkbox_addr_toggle_cb), target); gtk_box_pack_start ((GtkBox *) box, w, FALSE, FALSE, 0); gtk_widget_show_all (box); return box; }
/** * 创建好友信息区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateInfoArea() { GtkWidget *frame, *sw; GtkWidget *widget; GtkTextBuffer *buffer; frame = gtk_frame_new(_("Info.")); g_datalist_set_data(&widset, "info-frame", frame); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN); gtk_container_add(GTK_CONTAINER(frame), sw); buffer = gtk_text_buffer_new(progdt.table); if (grpinf->member) FillPalInfoToBuffer(buffer, (PalInfo *)grpinf->member->data); widget = gtk_text_view_new_with_buffer(buffer); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(widget), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(widget), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(widget), GTK_WRAP_NONE); gtk_container_add(GTK_CONTAINER(sw), widget); g_datalist_set_data(&widset, "info-textview-widget", widget); return frame; }
/* Start the main import operation */ void org_gnome_evolution_readdbx_import (EImport *ei, EImportTarget *target, EImportImporter *im) { DbxImporter *m; m = mail_msg_new (&dbx_import_info); g_datalist_set_data (&target->data, "dbx-msg", m); m->import = ei; g_object_ref (m->import); m->target = target; m->parent_uri = NULL; m->folder_name = NULL; m->folder_uri = NULL; m->status_timeout_id = e_named_timeout_add (100, dbx_status_timeout, m); g_mutex_init (&m->status_lock); m->cancellable = camel_operation_new (); g_signal_connect ( m->cancellable, "status", G_CALLBACK (dbx_status), m); mail_msg_unordered_push (m); }
static gint mail_importer_pine_import (EImport *ei, EImportTarget *target) { GCancellable *cancellable; struct _pine_import_msg *m; gint id; cancellable = camel_operation_new (); m = mail_msg_new_with_cancellable (&pine_import_info, cancellable); g_datalist_set_data (&target->data, "pine-msg", m); m->import = ei; g_object_ref (m->import); m->target = target; m->status_timeout_id = e_named_timeout_add ( 100, pine_status_timeout, m); g_mutex_init (&m->status_lock); m->cancellable = cancellable; g_signal_connect ( m->cancellable, "status", G_CALLBACK (pine_status), m); id = m->base.seq; mail_msg_fast_ordered_push (m); return id; }
/** * @param stock_id stock name * @return this @a stock_id's pixbuf (or NULL for invalid stock ids) * * Return the pixbuf associated with @a stock_id, the pixbuf is * owned by the stock system and persists throughout runtime. * To display stock icons in widgets use gxk_stock_image() and not * this pixbuf. */ GdkPixbuf* gxk_stock_fallback_pixbuf (const gchar *stock_id) { static GData *stock_pixbuf_repo = NULL; GdkPixbuf *pixbuf; g_return_val_if_fail (stock_id != NULL, NULL); pixbuf = g_datalist_get_data (&stock_pixbuf_repo, stock_id); if (!pixbuf) { GtkIconSet *iset = gtk_icon_factory_lookup_default (stock_id); if (iset) { static GtkStyle *style = NULL; /* FIXME: GTKFIX: gtk_icon_set_render_icon() shouldn't demand a style */ if (!style) style = gtk_style_new (); pixbuf = gtk_icon_set_render_icon (iset, style, GTK_TEXT_DIR_NONE, GTK_STATE_NORMAL, -1, NULL, NULL); g_datalist_set_data (&stock_pixbuf_repo, stock_id, pixbuf); } } return pixbuf; }
/** * 创建主窗口. * @return 窗口 */ GtkWidget *DialogPeer::CreateMainWindow() { char buf[MAX_BUFLEN]; GtkWidget *window; gint width, height; PalInfo *palinfor; char ipstr[INET_ADDRSTRLEN]; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); palinfor = (PalInfo *)grpinf->member->data; inet_ntop(AF_INET, &palinfor->ipv4, ipstr, INET_ADDRSTRLEN); snprintf(buf, MAX_BUFLEN, _("Talk with %s(%s) IP:%s"), palinfor->name,palinfor->host,ipstr); gtk_window_set_title(GTK_WINDOW(window), buf); width = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "window-width")); height = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "window-height")); gtk_window_set_default_size(GTK_WINDOW(window), width, height); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_add_accel_group(GTK_WINDOW(window), accel); widget_enable_dnd_uri(window); g_datalist_set_data(&widset, "window-widget", window); grpinf->dialog = window; g_object_set_data(G_OBJECT(window),"dialog",this); MainWindowSignalSetup(window); g_signal_connect_swapped(GTK_OBJECT(window), "show", G_CALLBACK(ShowDialogPeer), this); return window; }
/** * 创建待接收文件区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateFileToReceiveArea() { GtkWidget *frame, *hbox, *vbox, *button ,*pbar, *sw, *treeview; GtkTreeModel *model; frame = gtk_frame_new(_("File to be receive.")); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); pbar = gtk_progress_bar_new(); g_datalist_set_data(&widset, "file-receive-progress-bar-widget", pbar); gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pbar),_("Receiving progress.")); hbox = gtk_hbox_new(FALSE,1); gtk_box_pack_start(GTK_BOX(hbox),pbar,TRUE,TRUE,0); button = gtk_button_new_with_label(_("Accept")); g_signal_connect_swapped(button, "clicked", G_CALLBACK(ReceiveFile), this); g_datalist_set_data(&widset, "file-receive-accept-button", button); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,TRUE,0); button = gtk_button_new_with_label(_("Refuse")); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,TRUE,0); g_signal_connect_swapped(button, "clicked", G_CALLBACK(RemoveSelectedRcv), this); g_datalist_set_data(&widset, "file-receive-refuse-button", button); button = gtk_button_new_with_label(_("Detial")); gtk_box_pack_end(GTK_BOX(hbox),button,FALSE,TRUE,0); g_signal_connect_swapped(button, "clicked", G_CALLBACK(OpenTransDlg), NULL); vbox = gtk_vbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN); model = CreateFileToReceiveModel(); g_datalist_set_data_full(&mdlset, "file-to-receive-model", model, GDestroyNotify(g_object_unref)); treeview = CreateFileToReceiveTree(model); g_datalist_set_data(&widset, "file-to-receive-treeview-widget", treeview); g_object_set_data(G_OBJECT(treeview), "dialog", this); gtk_container_add(GTK_CONTAINER(sw), treeview); gtk_box_pack_end(GTK_BOX(vbox),sw,TRUE,TRUE,0); gtk_container_add(GTK_CONTAINER(frame), vbox); return frame; }
/* * If the given session_id corresponds to a human session not already in the * set, return TRUE and add the corresponding session_id to the * humanity_by_session_id set. Otherwise, return FALSE. */ static gboolean add_session_to_set (const gchar *session_id) { if (!is_human_session (session_id) || session_in_set (session_id)) return FALSE; g_datalist_set_data (&humanity_by_session_id, session_id, GUINT_TO_POINTER (TRUE)); return TRUE; }
static void checkbox_addr_toggle_cb (GtkToggleButton *tb, EImportTarget *target) { gboolean active; active = gtk_toggle_button_get_active (tb); g_datalist_set_data ( &target->data, "pine-do-addr", GINT_TO_POINTER (active)); }
/** * 接收好友文件信息. */ void UdpData::RecvPalFile() { uint32_t packetno, commandno; const char *ptr; pthread_t pid; GData *para; packetno = iptux_get_dec_number(buf, ':', 1); commandno = iptux_get_dec_number(buf, ':', 4); ptr = iptux_skip_string(buf, size, 1); /* 只有当此为共享文件信息或文件信息不为空才需要接收 */ if ((commandno & IPTUX_SHAREDOPT) || (ptr && *ptr != '\0')) { para = NULL; g_datalist_init(¶); g_datalist_set_data(¶, "palinfo", cthrd.GetPalFromList(ipv4)); g_datalist_set_data_full(¶, "extra-data", g_strdup(ptr), GDestroyNotify(g_free)); g_datalist_set_data(¶, "packetno", GUINT_TO_POINTER(packetno)); g_datalist_set_data(¶, "commandno", GUINT_TO_POINTER(commandno)); pthread_create(&pid, NULL, ThreadFunc(RecvFile::RecvEntry), para); pthread_detach(pid); } }
static GtkWidget * gnome_calendar_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { GtkWidget *hbox, *w; GSettings *settings; gboolean done_cal, done_tasks; settings = e_util_ref_settings ("org.gnome.evolution.importer"); done_cal = g_settings_get_boolean (settings, "gnome-calendar-done-calendar"); done_tasks = g_settings_get_boolean (settings, "gnome-calendar-done-tasks"); g_object_unref (settings); g_datalist_set_data (&target->data, "gnomecal-do-cal", GINT_TO_POINTER (!done_cal)); g_datalist_set_data (&target->data, "gnomecal-do-tasks", GINT_TO_POINTER (!done_tasks)); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); w = gtk_check_button_new_with_label (_("Calendar Events")); gtk_toggle_button_set_active ((GtkToggleButton *) w, !done_cal); g_signal_connect ( w, "toggled", G_CALLBACK (calendar_toggle_cb), target); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); w = gtk_check_button_new_with_label (_("Tasks")); gtk_toggle_button_set_active ((GtkToggleButton *) w, !done_tasks); g_signal_connect ( w, "toggled", G_CALLBACK (tasks_toggle_cb), target); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); gtk_widget_show_all (hbox); return hbox; }
/** * 初始化声音系统. */ void SoundSystem::InitSublayer() { GstElement *pipeline; GstElement *filesrc, *decode, *volume, *convert, *sink; GstBus *bus; gst_init(NULL, NULL); pipeline = gst_pipeline_new("sound-system"); g_datalist_set_data_full(&eltset, "pipeline-element", pipeline, GDestroyNotify(gst_object_unref)); filesrc = gst_element_factory_make("filesrc", "source"); g_datalist_set_data(&eltset, "filesrc-element", filesrc); decode = gst_element_factory_make("decodebin", "decode"); g_datalist_set_data(&eltset, "decode-element", decode); volume = gst_element_factory_make("volume", "volume"); g_datalist_set_data(&eltset, "volume-element", volume); convert = gst_element_factory_make("audioconvert", "convert"); g_datalist_set_data(&eltset, "convert-element", convert); sink = gst_element_factory_make("autoaudiosink", "output"); g_datalist_set_data(&eltset, "output-element", sink); gst_bin_add_many(GST_BIN(pipeline), filesrc, decode, volume, convert, sink, NULL); gst_element_link_many(filesrc, decode, NULL); gst_element_link_many(volume, convert, sink, NULL); g_signal_connect_swapped(decode, "pad-added", G_CALLBACK(LinkElement), &eltset); bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); gst_bus_add_signal_watch(GST_BUS(bus)); g_signal_connect_swapped(bus, "message::error", G_CALLBACK(ErrorMessageOccur), this); g_signal_connect_swapped(bus, "message::eos", G_CALLBACK(EosMessageOccur), this); gst_object_unref(bus); g_object_set(volume, "volume", progdt.volume, NULL); }
static void csv_import (EImport *ei, EImportTarget *target, EImportImporter *im) { CSVImporter *gci; ESource *source; gchar *filename; FILE *file; gint errn; EImportTargetURI *s = (EImportTargetURI *) target; GError *error = NULL; filename = g_filename_from_uri (s->uri_src, NULL, &error); if (filename == NULL) { e_import_complete (ei, target, error); g_clear_error (&error); return; } file = g_fopen (filename, "r"); errn = errno; g_free (filename); if (file == NULL) { error = g_error_new_literal (G_IO_ERROR, g_io_error_from_errno (errn), _("Can’t open .csv file")); e_import_complete (ei, target, error); g_clear_error (&error); return; } gci = g_malloc0 (sizeof (*gci)); g_datalist_set_data (&target->data, "csv-data", gci); gci->import = g_object_ref (ei); gci->target = target; gci->file = file; gci->fields_map = NULL; gci->count = 0; fseek (file, 0, SEEK_END); gci->size = ftell (file); fseek (file, 0, SEEK_SET); source = g_datalist_get_data (&target->data, "csv-source"); e_book_client_connect (source, 30, NULL, book_client_connect_cb, gci); }
static void vcard_import (EImport *ei, EImportTarget *target, EImportImporter *im) { VCardImporter *gci; ESource *source; EImportTargetURI *s = (EImportTargetURI *) target; gchar *filename; gchar *contents; VCardEncoding encoding; filename = g_filename_from_uri (s->uri_src, NULL, NULL); if (filename == NULL) { g_message(G_STRLOC ": Couldn't get filename from URI '%s'", s->uri_src); e_import_complete (ei, target); return; } encoding = guess_vcard_encoding (filename); if (encoding == VCARD_ENCODING_NONE) { g_free (filename); /* This check is superfluous, we've already * checked otherwise we can't get here ... */ e_import_complete (ei, target); return; } if (!g_file_get_contents (filename, &contents, NULL, NULL)) { g_message (G_STRLOC ":Couldn't read file."); g_free (filename); e_import_complete (ei, target); return; } g_free (filename); gci = g_malloc0 (sizeof (*gci)); g_datalist_set_data(&target->data, "vcard-data", gci); gci->import = g_object_ref (ei); gci->target = target; gci->encoding = encoding; gci->contents = contents; source = g_datalist_get_data (&target->data, "vcard-source"); e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, e_client_utils_authenticate_handler, NULL, book_loaded_cb, gci); }
/** * 创建所有区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateAllArea() { GtkWidget *box; GtkWidget *hpaned, *vpaned; gint position; box = gtk_vbox_new(FALSE, 0); /* 加入菜单条 */ gtk_box_pack_start(GTK_BOX(box), CreateMenuBar(), FALSE, FALSE, 0); /* 加入主区域 */ hpaned = gtk_hpaned_new(); g_datalist_set_data(&widset, "main-paned", hpaned); g_object_set_data(G_OBJECT(hpaned), "position-name", (gpointer)"main-paned-divide"); position = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "main-paned-divide")); gtk_paned_set_position(GTK_PANED(hpaned), position); gtk_box_pack_start(GTK_BOX(box), hpaned, TRUE, TRUE, 0); g_signal_connect(hpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); /*/* 加入聊天历史记录&输入区域 */ vpaned = gtk_vpaned_new(); g_object_set_data(G_OBJECT(vpaned), "position-name", (gpointer)"historyinput-paned-divide"); position = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "historyinput-paned-divide")); gtk_paned_set_position(GTK_PANED(vpaned), position); gtk_paned_pack1(GTK_PANED(hpaned), vpaned, TRUE, TRUE); g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_paned_pack1(GTK_PANED(vpaned), CreateHistoryArea(), TRUE, TRUE); gtk_paned_pack2(GTK_PANED(vpaned), CreateInputArea(), FALSE, TRUE); /* 加入好友信息&附件区域 */ vpaned = gtk_vpaned_new(); g_object_set_data(G_OBJECT(vpaned), "position-name", (gpointer)"infoenclosure-paned-divide"); position = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "infoenclosure-paned-divide")); gtk_paned_set_position(GTK_PANED(vpaned), position); gtk_paned_pack2(GTK_PANED(hpaned), vpaned, FALSE, TRUE); g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_paned_pack1(GTK_PANED(vpaned), CreateInfoArea(), TRUE, TRUE); gtk_paned_pack2(GTK_PANED(vpaned), CreateFileArea(), FALSE, TRUE); return box; }
/** * 创建文件接收区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateFileReceiveArea() { GtkWidget *vpaned; gint position; vpaned = gtk_vpaned_new(); g_datalist_set_data(&widset, "file-receive-paned-widget", vpaned); g_object_set_data(G_OBJECT(vpaned), "position-name", (gpointer)"file-receive-paned-divide"); position = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "file-receive-paned-divide")); gtk_paned_set_position(GTK_PANED(vpaned), position); g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_paned_pack1(GTK_PANED(vpaned),CreateFileToReceiveArea(),TRUE,FALSE); gtk_paned_pack2(GTK_PANED(vpaned),CreateFileReceivedArea(),TRUE,FALSE); return vpaned; }
/** * Adds a child to a parent node, and enure uniqueness of its key */ static void ipoddisk_add_child (struct ipoddisk_node *parent, struct ipoddisk_node *child, gchar *key) { int ndup = 0; gchar *new_key = g_strdup(key); while (g_datalist_get_data(&parent->nd_children, new_key)) { ndup++; g_free(new_key); new_key = g_strdup_printf("(%d) %s", ndup, key); } g_datalist_set_data(&parent->nd_children, new_key, child); g_free(new_key); return; }
GtkWidget *DialogPeer::CreateFileMenu() { GtkWidget *menushell, *window; GtkWidget *menu, *menuitem; window = GTK_WIDGET(g_datalist_get_data(&widset, "window-widget")); menushell = gtk_menu_item_new_with_mnemonic(_("_File")); menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menushell), menu); menuitem = gtk_menu_item_new_with_label(_("Attach File")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(AttachRegular), this); gtk_widget_add_accelerator(menuitem, "activate", accel, GDK_S, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); menuitem = gtk_menu_item_new_with_label(_("Attach Folder")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(AttachFolder), this); gtk_widget_add_accelerator(menuitem, "activate", accel, GDK_D, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); menuitem = gtk_menu_item_new_with_label(_("Request Shared Resources")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(AskSharedFiles), grpinf); gtk_widget_add_accelerator(menuitem, "activate", accel, GDK_R, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); menuitem = gtk_tearoff_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); menuitem = gtk_menu_item_new_with_label(_("Close")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(gtk_widget_destroy), window); gtk_widget_add_accelerator(menuitem, "activate", accel, GDK_W, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); g_datalist_set_data(&widset, "file-menu",menu); return menushell; }
/** * 读取对话框的UI布局数据. */ void DialogPeer::ReadUILayout() { GConfClient *client; gint numeric; client = gconf_client_get_default(); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_window_width", NULL); numeric = numeric ? numeric : 570; g_datalist_set_data(&dtset, "window-width", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_window_height", NULL); numeric = numeric ? numeric : 420; g_datalist_set_data(&dtset, "window-height", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_main_paned_divide", NULL); numeric = numeric ? numeric : 375; g_datalist_set_data(&dtset, "main-paned-divide", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_historyinput_paned_divide", NULL); numeric = numeric ? numeric : 255; g_datalist_set_data(&dtset, "historyinput-paned-divide", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_infoenclosure_paned_divide", NULL); numeric = numeric ? numeric : 255; g_datalist_set_data(&dtset, "infoenclosure-paned-divide", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_enclosure_paned_divide", NULL); numeric = numeric ? numeric : 280; g_datalist_set_data(&dtset, "enclosure-paned-divide", GINT_TO_POINTER(numeric)); numeric = gconf_client_get_int(client, GCONF_PATH "/peer_file_recieve_paned_divide", NULL); numeric = numeric ? numeric : 140; g_datalist_set_data(&dtset, "file-receive-paned-divide", GINT_TO_POINTER(numeric)); g_object_unref(client); }
static void mbox_import(EImport *ei, EImportTarget *target, EImportImporter *im) { MboxImporter *importer; char *filename; /* TODO: do we validate target? */ importer = g_malloc0(sizeof(*importer)); g_datalist_set_data(&target->data, "mbox-data", importer); importer->import = ei; importer->target = target; importer->status_lock = g_mutex_new(); importer->status_timeout_id = g_timeout_add(100, mbox_status_timeout, importer); importer->cancel = camel_operation_new(mbox_status, importer); filename = g_filename_from_uri(((EImportTargetURI *)target)->uri_src, NULL, NULL); mail_importer_import_mbox(filename, ((EImportTargetURI *)target)->uri_dest, importer->cancel, mbox_import_done, importer); g_free(filename); }
static void ldif_import (EImport *ei, EImportTarget *target, EImportImporter *im) { LDIFImporter *gci; ESource *source; FILE *file = NULL; EImportTargetURI *s = (EImportTargetURI *) target; gchar *filename; filename = g_filename_from_uri (s->uri_src, NULL, NULL); if (filename != NULL) { file = g_fopen(filename, "r"); g_free (filename); } if (file == NULL) { g_message(G_STRLOC ":Can't open .ldif file"); e_import_complete (ei, target); return; } gci = g_malloc0 (sizeof (*gci)); g_datalist_set_data(&target->data, "ldif-data", gci); gci->import = g_object_ref (ei); gci->target = target; gci->file = file; fseek (file, 0, SEEK_END); gci->size = ftell (file); fseek (file, 0, SEEK_SET); gci->dn_contact_hash = g_hash_table_new_full ( g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) NULL); source = g_datalist_get_data (&target->data, "ldif-source"); e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, e_client_utils_authenticate_handler, NULL, book_loaded_cb, gci); }
static int mail_importer_elm_import(EImport *ei, EImportTarget *target) { struct _elm_import_msg *m; int id; m = mail_msg_new(&elm_import_info); g_datalist_set_data(&target->data, "elm-msg", m); m->import = ei; g_object_ref(m->import); m->target = (EImportTargetHome *)target; m->status_timeout_id = g_timeout_add(100, elm_status_timeout, m); m->status_lock = g_mutex_new(); m->status = camel_operation_new(elm_status, m); id = m->base.seq; mail_msg_fast_ordered_push (m); return id; }
/** * 创建文件接收和发送区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateFileArea() { GtkWidget *frame, *vpaned; gint position; frame = gtk_frame_new(_("Enclosure.")); g_datalist_set_data(&widset, "file-enclosure-frame-widget", frame); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); vpaned = gtk_vpaned_new(); g_object_set_data(G_OBJECT(vpaned), "position-name", (gpointer)"enclosure-paned-divide"); position = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "enclosure-paned-divide")); gtk_paned_set_position(GTK_PANED(vpaned), position); g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_container_add(GTK_CONTAINER(frame), vpaned); gtk_paned_pack1(GTK_PANED(vpaned),CreateFileReceiveArea(),TRUE,TRUE); gtk_paned_pack2(GTK_PANED(vpaned),CreateFileSendArea(),FALSE,TRUE); return frame; }
static void csv_import (EImport *ei, EImportTarget *target, EImportImporter *im) { CSVImporter *gci; ESource *source; gchar *filename; FILE *file; EImportTargetURI *s = (EImportTargetURI *) target; filename = g_filename_from_uri (s->uri_src, NULL, NULL); if (filename == NULL) { g_message (G_STRLOC ": Couldn't get filename from URI '%s'", s->uri_src); return; } file = g_fopen (filename, "r"); g_free (filename); if (file == NULL) { g_message ("Can't open .csv file"); e_import_complete (ei, target); return; } gci = g_malloc0 (sizeof (*gci)); g_datalist_set_data (&target->data, "csv-data", gci); gci->import = g_object_ref (ei); gci->target = target; gci->file = file; gci->fields_map = NULL; gci->count = 0; fseek (file, 0, SEEK_END); gci->size = ftell (file); fseek (file, 0, SEEK_SET); source = g_datalist_get_data (&target->data, "csv-source"); e_book_client_connect (source, 30, NULL, book_client_connect_cb, gci); }
static void mbox_import (EImport *ei, EImportTarget *target, EImportImporter *im) { EShell *shell; EShellBackend *shell_backend; EMailSession *session; MboxImporter *importer; gchar *filename; /* XXX Dig up the EMailSession from the default EShell. * Since the EImport framework doesn't allow for user * data, I don't see how else to get to it. */ shell = e_shell_get_default (); shell_backend = e_shell_get_backend_by_name (shell, "mail"); session = e_mail_backend_get_session (E_MAIL_BACKEND (shell_backend)); /* TODO: do we validate target? */ importer = g_malloc0 (sizeof (*importer)); g_datalist_set_data (&target->data, "mbox-data", importer); importer->import = ei; importer->target = target; g_mutex_init (&importer->status_lock); importer->status_timeout_id = e_named_timeout_add (100, mbox_status_timeout, importer); importer->cancellable = camel_operation_new (); g_signal_connect ( importer->cancellable, "status", G_CALLBACK (mbox_status), importer); filename = g_filename_from_uri ( ((EImportTargetURI *) target)->uri_src, NULL, NULL); mail_importer_import_mbox ( session, filename, ((EImportTargetURI *) target)->uri_dest, importer->cancellable, mbox_import_done, importer); g_free (filename); }
static void button_toggled_cb (GtkWidget *widget, struct _selector_data *sd) { ESourceSelector *selector; ESource *source; GtkNotebook *notebook; selector = E_SOURCE_SELECTOR (sd->selector); source = e_source_selector_ref_primary_selection (selector); g_return_if_fail (source != NULL); g_datalist_set_data_full ( &sd->target->data, "primary-source", source, (GDestroyNotify) g_object_unref); g_datalist_set_data ( &sd->target->data, "primary-type", GINT_TO_POINTER (import_type_map[sd->page])); notebook = GTK_NOTEBOOK (sd->notebook); gtk_notebook_set_current_page (notebook, sd->page); }
/** * 创建已接收文件区域. * @return 主窗体 */ GtkWidget *DialogPeer::CreateFileReceivedArea() { GtkWidget *frame, *sw, *treeview; GtkTreeModel *model; frame = gtk_frame_new(_("File received.")); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN); model = CreateFileReceivedModel(); g_datalist_set_data_full(&mdlset, "file-received-model", model, GDestroyNotify(g_object_unref)); treeview = CreateFileReceivedTree(model); g_datalist_set_data(&widset, "file-received-treeview-widget", treeview); g_object_set_data(G_OBJECT(treeview), "dialog", this); gtk_container_add(GTK_CONTAINER(sw), treeview); gtk_container_add(GTK_CONTAINER(frame), sw); return frame; }
static bool server_bind(Server* server, DsmeDbusMethod method, const char* service, const char* interface, const char* name, const char* rules) { bool bound = false; Service* s; if (!(s = g_datalist_get_data(&server->services, service))) { if ((s = service_new(service))) { g_datalist_set_data(&server->services, service, s); } } if (s) { service_bind(s, method, interface, name, rules); bound = true; } return bound; }
void row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model(treeview); if (gtk_tree_model_get_iter(model, &iter, path)) { gboolean haschild; if (!(haschild = gtk_tree_model_iter_has_child(model, &iter))) { gchar *item_text, *item_id; gtk_tree_model_get(model, &iter, NAME, &item_text, ID, &item_id, -1); if (strlen(item_id) > 2) { // printf("open chat window\n"); // 不重复建立聊天对话窗口, 已经建立的通过 g_datalist_get_data 获得窗口 ChatWindow *chatWindow = (ChatWindow *) g_datalist_get_data( &chatWindows, item_id); if (chatWindow == NULL) { // g_print( // "UI::friendList::row_activated:create new chat window\n"); chatWindow = showChatBox(item_text, item_id); g_datalist_set_data(&chatWindows, item_id, chatWindow); } else { // g_print( // "UI::friendList::row_activated:show exist chat window\n"); gtk_widget_show_all(chatWindow->chatWindow); } } } else { if (!gtk_tree_view_collapse_row(GTK_TREE_VIEW (treeview), path)) { // printf("expand path\n"); gtk_tree_view_expand_to_path(GTK_TREE_VIEW (treeview), path); } } } }
static GtkWidget * elm_getwidget(EImport *ei, EImportTarget *target, EImportImporter *im) { GtkWidget *box, *w; GConfClient *gconf; gboolean done_mail; gconf = gconf_client_get_default (); done_mail = gconf_client_get_bool (gconf, "/apps/evolution/importer/elm/mail", NULL); g_object_unref(gconf); g_datalist_set_data(&target->data, "elm-do-mail", GINT_TO_POINTER(!done_mail)); box = gtk_vbox_new(FALSE, 2); w = gtk_check_button_new_with_label(_("Mail")); gtk_toggle_button_set_active((GtkToggleButton *)w, !done_mail); g_signal_connect(w, "toggled", G_CALLBACK(checkbox_toggle_cb), target); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, 0); gtk_widget_show_all(box); return box; }