/** * 插入图片到输入缓冲区. * @param dlgpr 对话框类 */ void DialogPeer::InsertPicture(DialogPeer *dlgpr) { GtkWidget *widget, *window; GtkTextBuffer *buffer; GtkTextIter iter; GdkPixbuf *pixbuf; gchar *filename; gint position; window = GTK_WIDGET(g_datalist_get_data(&dlgpr->widset, "window-widget")); if (!(filename = choose_file_with_preview( _("Please select a picture to insert the buffer"), window))) return; if (!(pixbuf = gdk_pixbuf_new_from_file(filename, NULL))) { g_free(filename); return; } g_free(filename); widget = GTK_WIDGET(g_datalist_get_data(&dlgpr->widset, "input-textview-widget")); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); g_object_get(buffer, "cursor-position", &position, NULL); gtk_text_buffer_get_iter_at_offset(buffer, &iter, position); gtk_text_buffer_insert_pixbuf(buffer, &iter, pixbuf); g_object_unref(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; }
static void pine_import_exec (struct _pine_import_msg *m, GCancellable *cancellable, GError **error) { EShell *shell; EShellBackend *shell_backend; EMailSession *session; /* 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)); if (GPOINTER_TO_INT (g_datalist_get_data (&m->target->data, "pine-do-addr"))) import_contacts (); if (GPOINTER_TO_INT (g_datalist_get_data (&m->target->data, "pine-do-mail"))) { gchar *path; path = g_build_filename (g_get_home_dir (), "mail", NULL); mail_importer_import_folders_sync ( session, path, pine_special_folders, 0, m->cancellable); g_free (path); } }
gboolean pluginInit (gpointer data, gchar** error) { GData* fileConfig = (GData*)data; /* Load configuration parameters */ if (g_datalist_get_data(&fileConfig, "files") != NULL) { /* Returns a NULL terminated array of strings. */ files = g_strsplit(g_datalist_get_data(&fileConfig, "files"), ",", 0); if (g_strv_length(files) > MAXFILES) { *error = g_strdup(MAXFILESERROR); return (FALSE); } } else { /* Needs at least one file to watch for */ *error = g_strdup(NOFILESAVAILABLE); return (FALSE); } if (g_datalist_get_data(&fileConfig, "delete") != NULL) { files = (gboolean)g_datalist_get_data(&fileConfig, "delete"); } g_debug("FILE plugin loaded and initialized"); return (TRUE); }
qq_im_format *qq_im_fmt_new_by_purple(const gchar *msg) { qq_im_format *fmt; const gchar *start, *end, *last; GData *attribs; gchar *tmp; unsigned char *rgb; g_return_val_if_fail(msg != NULL, NULL); fmt = qq_im_fmt_new(); last = msg; while (purple_markup_find_tag("font", last, &start, &end, &attribs)) { tmp = g_datalist_get_data(&attribs, "face"); if (tmp && strlen(tmp) > 0) { if (fmt->font) g_free(fmt->font); fmt->font_len = strlen(tmp); fmt->font = g_strdup(tmp); } tmp = g_datalist_get_data(&attribs, "size"); if (tmp) { fmt->attr = atoi(tmp) * 3 + 1; fmt->attr &= 0x0f; } tmp = g_datalist_get_data(&attribs, "color"); if (tmp && strlen(tmp) > 1) { rgb = purple_base16_decode(tmp + 1, NULL); g_memmove(fmt->rgb, rgb, 3); g_free(rgb); } g_datalist_clear(&attribs); last = end + 1; } if (purple_markup_find_tag("b", msg, &start, &end, &attribs)) { fmt->attr |= 0x20; g_datalist_clear(&attribs); } if (purple_markup_find_tag("i", msg, &start, &end, &attribs)) { fmt->attr |= 0x40; g_datalist_clear(&attribs); } if (purple_markup_find_tag("u", msg, &start, &end, &attribs)) { fmt->attr |= 0x80; g_datalist_clear(&attribs); } return fmt; }
/** * 播放文件结束响应处理函数. */ void SoundSystem::EosMessageOccur(SoundSystem *sndsys) { GstElement *pipeline, *decode, *volume; pipeline = GST_ELEMENT(g_datalist_get_data(&sndsys->eltset, "pipeline-element")); gst_element_set_state(pipeline, GST_STATE_READY); decode = GST_ELEMENT(g_datalist_get_data(&sndsys->eltset, "decode-element")); volume = GST_ELEMENT(g_datalist_get_data(&sndsys->eltset, "volume-element")); gst_element_unlink(decode, volume); sndsys->persist = false; }
static void pine_import (EImport *ei, EImportTarget *target, EImportImporter *im) { if (GPOINTER_TO_INT (g_datalist_get_data (&target->data, "pine-do-mail")) || GPOINTER_TO_INT (g_datalist_get_data (&target->data, "pine-do-addr"))) mail_importer_pine_import (ei, target); else e_import_complete (ei, target, NULL); }
static gchar *gfire_sq_gamespy2_details(gfire_game_server *p_server) { GString *str = g_string_new(NULL); gfire_sq_gamespy2_data *data = (gfire_sq_gamespy2_data*)p_server->data->proto_data; // General server infos g_string_append(str, _("<b><font size=\"5\">General Server Details:</font></b><br>")); // Server Name gchar *escaped = gfire_escape_html(p_server->data->name); g_string_append_printf(str, _("<b>Server Name:</b> %s<br>"), escaped); g_free(escaped); // Players g_string_append_printf(str, _("<b>Players:</b> %u/%u<br>"), p_server->data->players, p_server->data->max_players); // Map escaped = gfire_escape_html(p_server->data->map); g_string_append_printf(str, _("<b>Map:</b> %s<br>"), escaped); g_free(escaped); // Password secured g_string_append_printf(str, _("<b>Password secured:</b> %s<br>"), (g_strcmp0("True", g_datalist_get_data(&data->info, "password")) == 0) || (g_strcmp0("1", g_datalist_get_data(&data->info, "password")) == 0) ? _("Yes") : _("No")); // Game Type g_string_append_printf(str, _("<b>Game Type:</b> %s<br>"), g_datalist_get_data(&data->info, "gametype") ? (gchar*)g_datalist_get_data(&data->info, "gametype") : _("N/A")); // Version g_string_append_printf(str, _("<b>Version:</b> %s"), g_datalist_get_data(&data->info, "gamever") ? (gchar*)g_datalist_get_data(&data->info, "gamever") : _("N/A")); // Players g_string_append(str, _("<br><br><b><font size=\"5\">Players:</font></b><br><font face=\"monospace\"><b>Name Score Ping</b><br>")); GSList *cur = data->players; while(cur) { gfire_sq_gamespy2_player *player = (gfire_sq_gamespy2_player*)cur->data; gchar *unescaped = gfire_sq_gamespy2_fixed_len_string(player->name, 16); gchar *name = gfire_escape_html(unescaped); g_free(unescaped); g_string_append_printf(str, "%s %-10d %d<br>", name, player->score, player->ping); g_free(name); cur = g_slist_next(cur); } // Other server rules g_string_append(str, _("<br></font><b><font size=\"5\">All Server Info:</font></b><br>")); g_datalist_foreach(&data->info, gfire_sq_gamespy2_details_vars, str); return g_string_free(str, FALSE); }
/** * 图片拖拽事件响应函数. * @param dlgpr 对话框类 * @param context the drag context * @param x where the drop happened * @param y where the drop happened * @param data the received data * @param info the info that has been registered with the target in the GtkTargetList * @param time the timestamp at which the data was received */ void DialogPeer::DragPicReceived(DialogPeer *dlgpr, GdkDragContext *context, gint x, gint y, GtkSelectionData *data, guint info, guint time) { GtkWidget *widget; GtkTextBuffer *buffer; GtkTextIter iter; GdkPixbuf *pixbuf; GSList *list, *flist, *tlist; gint position; if (data->length <= 0 || data->format != 8) { gtk_drag_finish(context, FALSE, FALSE, time); return; } /* 获取(text-buffer)的当前插入点 */ widget = GTK_WIDGET(g_datalist_get_data(&dlgpr->widset, "input-textview-widget")); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)); g_object_get(buffer, "cursor-position", &position, NULL); gtk_text_buffer_get_iter_at_offset(buffer, &iter, position); /* 分离图片文件和常规文件,图片立即处理,常规文件稍候再处理 */ flist = NULL; //预置常规文件链表为空 tlist = list = selection_data_get_path(data); //获取所有文件 while (tlist) { if ( (pixbuf = gdk_pixbuf_new_from_file((char *)tlist->data, NULL))) { /* 既然是图片,那就立即处理吧 */ gtk_text_buffer_insert_pixbuf(buffer, &iter, pixbuf); g_object_unref(pixbuf); } else { /* 将文件路径转移至文件链表(flist) */ flist = g_slist_append(flist, tlist->data); tlist->data = NULL; } tlist = g_slist_next(tlist); } /*/* 释放链表数据 */ g_slist_foreach(list, GFunc(g_free), NULL); g_slist_free(list); /* 如果文件链表有文件,那就添加为附件吧 */ if (flist) { dlgpr->AttachEnclosure(flist); g_slist_foreach(flist, GFunc(g_free), NULL); g_slist_free(flist); widget = GTK_WIDGET(g_datalist_get_data(&dlgpr->widset, "enclosure-frame-widget")); gtk_widget_show(widget); } gtk_drag_finish(context, TRUE, FALSE, time); }
static gboolean gfire_sq_gamespy2_parse(gfire_game_server *p_server, guint16 p_ping, gboolean p_full, const unsigned char *p_data, guint p_len) { // Check header if(p_data[0] != 0 || memcmp(p_data + 1, "GFSQ", 4) != 0) return FALSE; p_server->data = g_new0(gfire_game_server_data, 1); p_server->data->driver = &gf_sq_gamespy2_driver; p_server->data->ping = p_ping; gfire_sq_gamespy2_data *gsdata = p_server->data->proto_data = g_new0(gfire_sq_gamespy2_data, 1); // Parse info guint offset = 5; offset += gfire_sq_gamespy2_parseInfo(gsdata, p_data + offset, p_len - offset); if(g_datalist_get_data(&gsdata->info, "hostname")) p_server->data->name = g_strdup(g_datalist_get_data(&gsdata->info, "hostname")); if(g_datalist_get_data(&gsdata->info, "mapname")) p_server->data->map = g_strdup(g_datalist_get_data(&gsdata->info, "mapname")); if(g_datalist_get_data(&gsdata->info, "numplayers")) sscanf(g_datalist_get_data(&gsdata->info, "numplayers"), "%u", &p_server->data->players); if(g_datalist_get_data(&gsdata->info, "maxplayers")) sscanf(g_datalist_get_data(&gsdata->info, "maxplayers"), "%u", &p_server->data->max_players); if(p_full) { // Parse players offset += gfire_sq_gamespy2_parsePlayers(gsdata, p_data + offset, p_len - offset); } return FALSE; }
static void gnome_calendar_import (EImport *ei, EImportTarget *target, EImportImporter *im) { icalcomponent *icalcomp = NULL; gchar *filename; gint do_calendar, do_tasks; ICalIntelligentImporter *ici; /* This is pretty shitty, everything runs in the gui thread and can block * for quite some time */ do_calendar = GPOINTER_TO_INT (g_datalist_get_data (&target->data, "gnomecal-do-cal")); do_tasks = GPOINTER_TO_INT (g_datalist_get_data (&target->data, "gnomecal-do-tasks")); /* If neither is selected, just return. */ if (!do_calendar && !do_tasks) return; /* Load the Gnome Calendar file and convert to iCalendar. */ filename = g_build_filename (g_get_home_dir (), "user-cal.vcf", NULL); icalcomp = load_vcalendar_file (filename); g_free (filename); /* If we couldn't load the file, just return. FIXME: Error message? */ if (icalcomp) { ici = g_malloc0 (sizeof (*ici)); ici->ei = ei; ici->target = target; ici->cancellable = g_cancellable_new (); ici->icalcomp = icalcomp; g_datalist_set_data_full (&target->data, "gnomecal-data", ici, free_ici); prepare_events (ici->icalcomp, &ici->tasks); if (do_calendar) { open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_EVENTS, gc_import_events); return; } prepare_tasks (ici->icalcomp, ici->tasks); if (do_tasks) { open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_TASKS, gc_import_tasks); return; } } e_import_complete (ei, target); }
/** * 创建所有区域. * @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; }
static gboolean gfire_sq_savage_parse(gfire_game_server *p_server, guint16 p_ping, gboolean p_full, const unsigned char *p_data, guint p_len) { static guint8 check[] = { 0x9e, 0x4c, 0x23, 0x00, 0x00, 0xcf }; if(p_len < 12 || memcmp(p_data, check, 6) != 0 || memcmp(p_data + 7, "GFSQ", 4) != 0) return FALSE; p_server->data = g_new0(gfire_game_server_data, 1); p_server->data->driver = &gf_sq_savage_driver; p_server->data->ping = p_ping; gfire_sq_savage_data *gsdata = p_server->data->proto_data = g_new0(gfire_sq_savage_data, 1); g_datalist_init(&gsdata->info); // Parse const gchar *section = (const gchar*)p_data + 12; guint offset = 0; while(offset < p_len) { gchar **chunks = g_strsplit(section, "\xff", -1); gchar **pos = chunks; while(*pos) { char **pieces = g_strsplit(*pos, "\xfe", -1); if(g_strv_length(pieces) != 2) { g_strfreev(pieces); pos++; continue; } if(g_strcmp0(pieces[0], "players") == 0) gsdata->players = g_strsplit(pieces[1], "\n", -1); else g_datalist_set_data_full(&gsdata->info, pieces[0], g_strdup(pieces[1]), g_free); g_strfreev(pieces); pos++; } g_strfreev(chunks); offset += strlen(section) + 1; section = (const gchar*)p_data + offset + 2; // skip 0x00 and 0xff } if(g_datalist_get_data(&gsdata->info, "name")) p_server->data->name = gfire_sq_savage_strip_color_codes(g_datalist_get_data(&gsdata->info, "name")); if(g_datalist_get_data(&gsdata->info, "world")) p_server->data->map = g_strdup(g_datalist_get_data(&gsdata->info, "world")); if(g_datalist_get_data(&gsdata->info, "cnum")) sscanf(g_datalist_get_data(&gsdata->info, "cnum"), "%u", &p_server->data->players); if(g_datalist_get_data(&gsdata->info, "cmax")) sscanf(g_datalist_get_data(&gsdata->info, "cmax"), "%u", &p_server->data->max_players); return FALSE; }
/** * 调整音量. * @param value 音量值 */ void SoundSystem::AdjustVolume(double value) { GstElement *volume; volume = GST_ELEMENT(g_datalist_get_data(&eltset, "volume-element")); g_object_set(volume, "volume", value, NULL); }
/** * @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; }
void c2_html_gtkhtml_url_requested (GtkWidget *widget, const gchar *url, GtkHTMLStream *handle, gpointer data) { C2HTML *html = C2_HTML (data); C2HTMLLinkManager lm_func; gchar *prefix; prefix = c2_str_get_word (0, url, ':'); lm_func = (C2HTMLLinkManager) g_datalist_get_data (&html->link_manager_data, prefix); if (lm_func) lm_func (html, url, handle); else { C2Pthread2 *data; pthread_t thread; data = g_new0 (C2Pthread2, 1); data->v1 = (gpointer) url; data->v2 = handle; /* Try now for built-in supported links */ if (c2_streq (prefix, "http")) pthread_create (&thread, NULL, C2_PTHREAD_FUNC (on_html_http_url_requested), data); else if (c2_streq (prefix, "ftp")) L else if (c2_streq (prefix, "c2dist")) pthread_create (&thread, NULL, C2_PTHREAD_FUNC (on_html_c2dist_url_requested), data); } g_free (prefix); }
/** * 好友对话框入口. * @param grpinf 好友群组信息 */ void DialogPeer::PeerDialogEntry(GroupInfo *grpinf) { DialogPeer *dlgpr; GtkWidget *window, *widget; dlgpr = new DialogPeer(grpinf); window = dlgpr->CreateMainWindow(); gtk_container_add(GTK_CONTAINER(window), dlgpr->CreateAllArea()); gtk_widget_show_all(window); /* 将焦点置于文本输入框 */ widget = GTK_WIDGET(g_datalist_get_data(&dlgpr->widset, "input-textview-widget")); gtk_widget_grab_focus(widget); /* 从消息队列中移除 */ pthread_mutex_lock(cthrd.GetMutex()); if (cthrd.MsglineContainItem(grpinf)) { mwin.MakeItemBlinking(grpinf, FALSE); cthrd.PopItemFromMsgline(grpinf); } pthread_mutex_unlock(cthrd.GetMutex()); /* delete dlgpr;//请不要这样做,此类将会在窗口被摧毁后自动释放 */ }
static void mbox_cancel(EImport *ei, EImportTarget *target, EImportImporter *im) { MboxImporter *importer = g_datalist_get_data(&target->data, "mbox-data"); if (importer) camel_operation_cancel(importer->cancel); }
static void elm_cancel(EImport *ei, EImportTarget *target, EImportImporter *im) { struct _elm_import_msg *m = g_datalist_get_data(&target->data, "elm-msg"); if (m) camel_operation_cancel(m->status); }
static void elm_import(EImport *ei, EImportTarget *target, EImportImporter *im) { if (GPOINTER_TO_INT(g_datalist_get_data(&target->data, "elm-do-mail"))) mail_importer_elm_import(ei, target); else e_import_complete(ei, target); }
/** * 类析构函数. */ SoundSystem::~SoundSystem() { GstElement *pipeline; if ( (pipeline = GST_ELEMENT(g_datalist_get_data(&eltset, "pipeline-element")))) gst_element_set_state(pipeline, GST_STATE_NULL); g_datalist_clear(&eltset); }
/** * camel_url_get_param: * @url: a #CamelURL * @name: name of the param * * Get the value of the specified param on the URL. * * Returns: the value of a param if found or %NULL otherwise **/ const gchar * camel_url_get_param (CamelURL *url, const gchar *name) { g_return_val_if_fail (url != NULL, NULL); return g_datalist_get_data (&url->params, name); }
const char * qipu_get_info (qipu_t *qipu, const char *token) { gpointer data; data = g_datalist_get_data (&qipu->tv_list, token); return data; }
/** * Adds a track into a tree structure * @param itdbtrk Pointer to the track's Itdb_Track structure * @param start Pointer to the root of the tree * @param track If not NULL, pointer to the node of the track * @param ipod Root node of this track */ static void ipoddisk_add_track (Itdb_Track *itdbtrk, struct ipoddisk_node *start, struct ipoddisk_node *albums, struct ipoddisk_node *track, struct ipoddisk_ipod *ipod) { struct ipoddisk_node *artist; struct ipoddisk_node *album; gchar *track_ext; gchar *album_name; gchar *track_name; gchar *artist_name; album_name = itdbtrk->album ? itdbtrk->album : "Unknown Album"; track_name = itdbtrk->title ? itdbtrk->title : "Unknown Track"; artist_name = itdbtrk->artist ? itdbtrk->artist : "Unknown Artist"; artist = g_datalist_get_data(&start->nd_children, artist_name); if (!artist) artist = ipoddisk_new_node(start, artist_name, IPODDISK_NODE_DEFAULT); album = g_datalist_get_data(&artist->nd_children, album_name); if (!album) { album = ipoddisk_new_node(artist, album_name, IPODDISK_NODE_DEFAULT); if (albums != NULL) ipoddisk_add_child(albums, album, album_name); } track_ext = ipod_get_track_extension(itdbtrk->ipod_path); track_name = g_strconcat(track_name, track_ext, NULL); if (track != NULL) { ipoddisk_add_child(album, track, track_name); } else { track = ipoddisk_new_node(album, track_name, IPODDISK_NODE_LEAF); track->nd_children = (GData *) itdbtrk; track->nd_data.track.trk_ipod = ipod; itdbtrk->userdata = track; } g_free(track_name); return; }
/** * 保存对话框的UI布局数据. */ void DialogPeer::WriteUILayout() { GConfClient *client; gint numeric; client = gconf_client_get_default(); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "window-width")); gconf_client_set_int(client, GCONF_PATH "/peer_window_width", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "window-height")); gconf_client_set_int(client, GCONF_PATH "/peer_window_height", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "main-paned-divide")); gconf_client_set_int(client, GCONF_PATH "/peer_main_paned_divide", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "historyinput-paned-divide")); gconf_client_set_int(client, GCONF_PATH "/peer_historyinput_paned_divide", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset, "infoenclosure-paned-divide")); gconf_client_set_int(client, GCONF_PATH "/peer_infoenclosure_paned_divide", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset,"enclosure-paned-divide")); gconf_client_set_int(client, GCONF_PATH "/peer_enclosure_paned_divide", numeric, NULL); numeric = GPOINTER_TO_INT(g_datalist_get_data(&dtset,"file-receive-paned-divide")); gconf_client_set_int(client, GCONF_PATH "/peer_file_recieve_paned_divide", numeric, NULL); g_object_unref(client); }
/** * 播放音频文件. * @param file 音频文件 * @note 如果时间间隔过短,系统将会忽略后一个请求. */ void SoundSystem::Playing(const char *file) { GstElement *pipeline, *filesrc; struct timeval time; gettimeofday(&time, NULL); if (!FLAG_ISSET(progdt.sndfgs, 0) || (difftimeval(time, timestamp) < 0.1)) return; if (persist) EosMessageOccur(this); persist = true; filesrc = GST_ELEMENT(g_datalist_get_data(&eltset, "filesrc-element")); g_object_set(filesrc, "location", file, NULL); pipeline = GST_ELEMENT(g_datalist_get_data(&eltset, "pipeline-element")); gst_element_set_state(pipeline, GST_STATE_PLAYING); timestamp = time; }
static void csv_cancel (EImport *ei, EImportTarget *target, EImportImporter *im) { CSVImporter *gci = g_datalist_get_data (&target->data, "csv-data"); if (gci) gci->state = 1; }
static void pine_cancel (EImport *ei, EImportTarget *target, EImportImporter *im) { struct _pine_import_msg *m = g_datalist_get_data (&target->data, "pine-msg"); if (m) g_cancellable_cancel (m->cancellable); }
static void mbox_cancel (EImport *ei, EImportTarget *target, EImportImporter *im) { MboxImporter *importer = g_datalist_get_data (&target->data, "mbox-data"); if (importer) g_cancellable_cancel (importer->cancellable); }
static void vcard_cancel (EImport *ei, EImportTarget *target, EImportImporter *im) { VCardImporter *gci = g_datalist_get_data(&target->data, "vcard-data"); if (gci) gci->state = 1; }