⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mimetypes.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    store = gtk_tree_store_new(NUM_COLUMNS,                               G_TYPE_STRING,                               G_TYPE_STRING,                               G_TYPE_BOOLEAN,                               G_TYPE_POINTER,                               G_TYPE_STRING);        ff_iter = info->file_formats_list;    while(ff_iter)    {        const char** pszMimeTypes;        const char** pszExtensions;        const char** pszOpenNames;        pFileFormat = (IHXFileFormatObject*)ff_iter->data;                pFileFormat->GetFileFormatInfo( pszMimeTypes,                                        pszExtensions,                                        pszOpenNames);        while(*pszMimeTypes)        {            /* Properties that show up at the top treeview level */            gboolean bToplevelHandlerIsHxplay = TRUE;            const char* szToplevelApp = APP_NAME_SHORT;                        gtk_tree_store_append (store, &iter, NULL);                        mime_iter = info->mime_association_managers_list;            while(mime_iter)            {                gboolean bHandlerIsHxplay = FALSE;                const char* szMimeType = *pszMimeTypes;                const char* szAppId = NULL;                const char* szDatabaseName;                const char* szDatabaseDescription;                UINT32 uDatabaseVersion;                HX_RESULT retVal;                                pMimeAssocMgr = (IHXMimeAssocManager*)mime_iter->data;                pMimeAssocMgr->GetMimeSystemInfo(szDatabaseName,                                                 szDatabaseDescription,                                                 uDatabaseVersion);		// setup unknown mime types		if (!pMimeAssocMgr->MimeExists(szMimeType))		{		    IHXMimeInfo* pMimeInfo = NULL;		    if (SUCCEEDED(pMimeAssocMgr->GetMime(szMimeType,							 pMimeInfo)))		    {                        gchar* icon_filename;                        icon_filename = hxcommon_locate_file("icon.png");			pMimeInfo->SetName(szMimeType);			pMimeInfo->SetIcon(icon_filename);                        g_free(icon_filename);                        			const char** pExt = pszExtensions;			while (*pExt)			{			    pMimeInfo->AddExt(*pExt);			    ++pExt;			}			HX_RELEASE(pMimeInfo);		    }		}                retVal = pMimeAssocMgr->GetAssoc(szMimeType, szAppId);                if(SUCCEEDED(retVal))                {                    if(!szAppId)                    {                        szAppId = _("unknown");                    }                }                else                {		                        szAppId = _("none");                                    }                if(strstr(szAppId, APP_NAME_SHORT))                {                    bHandlerIsHxplay = TRUE;                }                else                {                    bToplevelHandlerIsHxplay = FALSE;                    szToplevelApp = szAppId;                }                                            gtk_tree_store_append (store, &child_iter, &iter);                gtk_tree_store_set(store, &child_iter,                                   COLUMN_MIME_TYPE_ASSOCIATION, szDatabaseName,                                   COLUMN_CURRENT_APPLICATION, szAppId,                                   COLUMN_ASSIGN, bHandlerIsHxplay,                                   COLUMN_MIME_ASSOCIATION_MANAGER, pMimeAssocMgr,                                   COLUMN_MIME_TYPE, *pszMimeTypes,                                   -1);                mime_iter = g_list_next(mime_iter);            }                        gtk_tree_store_set(store, &iter,                               COLUMN_MIME_TYPE_ASSOCIATION, *pszMimeTypes,                               COLUMN_CURRENT_APPLICATION, szToplevelApp,                               COLUMN_ASSIGN, bToplevelHandlerIsHxplay,                               COLUMN_MIME_ASSOCIATION_MANAGER, NULL,                               COLUMN_MIME_TYPE, *pszMimeTypes,                               -1);            pszMimeTypes++;        }        ff_iter = g_list_next(ff_iter);    }            /* Add the model to the view */    gtk_tree_view_set_model(info->tree_view,			    GTK_TREE_MODEL(store));    /* Create columns */    text_renderer = gtk_cell_renderer_text_new();    toggle_renderer = gtk_cell_renderer_toggle_new();    g_signal_connect (G_OBJECT (toggle_renderer),                      "toggled",                      G_CALLBACK (mime_type_assign_toggled),                      store);    column = gtk_tree_view_column_new_with_attributes(_("MIME Info"),                                                      text_renderer,                                                      "text", COLUMN_MIME_TYPE_ASSOCIATION,                                                      NULL);    gtk_tree_view_append_column(info->tree_view, column);    gtk_tree_view_column_set_sort_column_id(column, COLUMN_MIME_TYPE_ASSOCIATION);    column = gtk_tree_view_column_new_with_attributes(_("Application"),                                                      text_renderer,                                                      "text", COLUMN_CURRENT_APPLICATION,                                                      NULL);    gtk_tree_view_append_column(info->tree_view, column);    gtk_tree_view_column_set_sort_column_id(column, COLUMN_CURRENT_APPLICATION);        column = gtk_tree_view_column_new_with_attributes(_("Assign to hxplay"),                                                      toggle_renderer,                                                      "active", COLUMN_ASSIGN,                                                      NULL);    gtk_tree_view_append_column(info->tree_view, column);    gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);    }voidhxplay_mime_types_pane_destroy(HXMimeTypesDialogInfo* info){    IHXMimeAssocManager* pMimeAssocMgr;    IHXFileFormatObject* pFileFormat;    GList* ff_iter;    GList* mime_iter;        ff_iter = info->file_formats_list;    while(ff_iter)    {        pFileFormat = (IHXFileFormatObject*)ff_iter->data;        HX_RELEASE(pFileFormat);        ff_iter = g_list_next(ff_iter);    }    g_list_free(info->file_formats_list);    mime_iter = info->mime_association_managers_list;       while(mime_iter)    {        pMimeAssocMgr = (IHXMimeAssocManager*)mime_iter->data;        HX_RELEASE(pMimeAssocMgr);        mime_iter = g_list_next(mime_iter);    }    g_list_free(info->mime_association_managers_list);}HXMimeTypesDialogInfo*hxplay_mime_types_pane_new(GladeXML* xml,                           HXPlayer* player){    HXMimeTypesDialogInfo *info;    GtkWidget* tree_view;        GtkWidget* notebook;       tree_view = glade_xml_get_widget (xml, "hpd_mime_types_tree_view");    if(tree_view == NULL)    {        /* No mime types pane available to hook onto */        return NULL;    }    notebook = glade_xml_get_widget (xml, "hpd_mime_types_notebook");    g_return_val_if_fail(notebook != NULL, NULL);        info = g_new0(HXMimeTypesDialogInfo, 1);    info->tree_view = GTK_TREE_VIEW(tree_view);        /* Get the plugin manager */    HX_RESULT retVal;    gboolean result;    IUnknown* pUnk;    IHXPlugin2Handler* pPlugin2Handler;    IHXPluginEnumerator* pPluginEnumerator;    IHXMimeAssocManager* pMimeAssocMgr;    IHXFileFormatObject* pFileFormat;    result = hx_player_get_unknown(player,                                   (void**)&pUnk);    g_return_val_if_fail(result != FALSE, NULL);    retVal = pUnk->QueryInterface(IID_IHXPlugin2Handler,                                  (void**)&pPlugin2Handler);    g_return_val_if_fail(pPlugin2Handler && SUCCEEDED(retVal), NULL);    retVal = pUnk->QueryInterface(IID_IHXPluginEnumerator,                                  (void**)&pPluginEnumerator);    g_return_val_if_fail(pPluginEnumerator && SUCCEEDED(retVal), NULL);    /* Build a list of datatypes */    UINT32 nFileFormatPlugins = 0;    UINT32 nMimeMgrPlugins = 0;    UINT32 nPlugins;    UINT32 i;        /* Get supported mime types */    nPlugins = pPluginEnumerator->GetNumOfPlugins();    for(i = 0; i < nPlugins; i++)    {                pMimeAssocMgr = NULL;        pFileFormat = NULL;        retVal = pPluginEnumerator->GetPlugin(i, pUnk);        if(SUCCEEDED(retVal))        {            retVal = pUnk->QueryInterface(IID_IHXMimeAssocManager,                                          (void**)&pMimeAssocMgr);        }        if(SUCCEEDED(retVal))        {            retVal = pUnk->QueryInterface(IID_IHXFileFormatObject,                                          (void**)&pFileFormat);        }        if(SUCCEEDED(retVal))        {            info->mime_association_managers_list =                g_list_append(info->mime_association_managers_list,                              pMimeAssocMgr);            info->file_formats_list = g_list_append(info->file_formats_list,                                                    pFileFormat);        }    }        /* Get mime type association plugins */    nMimeMgrPlugins = g_list_length(info->mime_association_managers_list);    nFileFormatPlugins = g_list_length(info->file_formats_list);                if(nMimeMgrPlugins == 0)    {        /* Switch tree view to a "no mime plugins found" tab & return. */        gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 1);        hxplay_mime_types_pane_destroy(info);        info = NULL;    }    else    {        gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 0);        populate_mime_types_tree_view(info);            }    HX_RELEASE(pPlugin2Handler);    HX_RELEASE(pPluginEnumerator);    return info;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -