Esempio n. 1
0
void libpowermanx_init()
{
	static bool initialized = false;

	if (initialized)
		return;
	initialized = true;

	g_type_init();
	dbus_provider_t::init();
	slot_exe_t::init();
	foreach_file(PLUGINSODIR, load_lib);

	profile_t::load();
}
Esempio n. 2
0
//文件拖拽
void CDlgFileConv::OnDropFiles(HDROP hDropInfo)
{
	TCHAR cFileName[MAX_PATH]; 
	UINT uFileCount, i = 0; 
	CString strPath;
	
	uFileCount = ::DragQueryFile(hDropInfo, -1, cFileName, sizeof(cFileName));   //拖拉的文件个数 
	::DragQueryFile(hDropInfo, i, cFileName, sizeof(cFileName));				//取得每个文件的文件名 
	
	strPath = cFileName;
	if (PathIsDirectory(strPath))
	{
		m_rdSrcDir.SetCheck(TRUE);
		m_rdSrcFile.SetCheck(FALSE);
		SwitchSrcType();

		m_strSrcDir = strPath;

		std::string charset;
		foreach_file(CStringToUTF8string(strPath).c_str(), find_file_charset_of_src_dir, m_bRecurDir, 1, &charset);
		if (!charset.empty())
			m_strSrcCharset = UTF8stringToCString(charset);
		else
			m_strSrcCharset = _T("");
	}
	else
	{
		m_rdSrcFile.SetCheck(TRUE);
		m_rdSrcDir.SetCheck(FALSE);
		SwitchSrcType();

		m_strSrcFile = strPath;

		double prob;
		std::string charset = utils::GetFileCharset(CStringToUTF8string(strPath), prob, 1000);
		if (!charset.empty() && prob > 0.95)
			m_strSrcCharset = UTF8stringToCString(charset);
		else
			m_strSrcCharset = _T("");
	}

	UpdateData(FALSE);

	::DragFinish(hDropInfo);
	
	CDialog::OnDropFiles(hDropInfo);
}
Esempio n. 3
0
//转换源目录
void CDlgFileConv::OnSelectSrcDir()
{
	UpdateData(TRUE);

	CStringW strDir = SelectDirectory(_T("请选择一个要转换的目录:"));
	if (!strDir.IsEmpty())
		m_strSrcDir = strDir;
	else
		return;

	std::string charset;
	foreach_file(CStringToUTF8string(strDir).c_str(), find_file_charset_of_src_dir, m_bRecurDir, 1, &charset);
	if (!charset.empty())
		m_strSrcCharset = UTF8stringToCString(charset);
	else
		m_strSrcCharset = _T("");

	UpdateData(FALSE);
}
Esempio n. 4
0
static GList *find_in_musictree(const gchar *song_file_path, const gchar *regex, gint up_to, GlyrQuery *query)
{
    GList *retv_list = NULL;

    gchar *song_dir_path = NULL;
    if(g_file_test(song_file_path, G_FILE_TEST_IS_DIR)) {
        song_dir_path = g_strdup(song_file_path);
    } else {
        song_dir_path = g_path_get_dirname(song_file_path);
    }

    if(song_dir_path != NULL) {
        gchar *tmp = song_dir_path;
        song_dir_path = g_filename_from_utf8(song_dir_path, -1, NULL, NULL, NULL);
        g_free(tmp);
    }

    if(song_dir_path != NULL) {
        /* Compile the regex just once */
        GRegex *compiled_regex = g_regex_new(regex, G_REGEX_CASELESS, 0, NULL);
        if(compiled_regex != NULL) {
            for(gint i = 0; i < up_to; ++i) {
                /* Check every single file */
                foreach_file(song_dir_path, compiled_regex, query, &retv_list);

                /* Cannot go up anymore */
                if((song_dir_path = path_go_up(song_dir_path)) == NULL) {
                    break;
                }
            }

            /* Forgot the regex */
            g_regex_unref(compiled_regex);
        }
        g_free(song_dir_path);
    }
    return retv_list;
}
Esempio n. 5
0
void CDlgFileConv::OnOK()
{
	UpdateData(TRUE);

	//中止转换
	if (m_bConverting)
	{
		m_bTerminate = TRUE;
		return;
	}

	ConvFileInfo& cfi = m_convFileInfo;
	cfi.src_files.clear();
	cfi.dst_files.clear();
	cfi.src_charset = "";
	cfi.dst_charset = "";
	cfi.total = cfi.success = cfi.failed = 0;

	//转换源信息
	std::string src;
	if (m_rdSrcFile.GetCheck())
	{
		src = CStringToUTF8string(m_strSrcFile);
		if (src.empty())
		{
			AfxMessageBox(_T("请选择一个待转换的文件!"));
			return;
		}

		cfi.src_files.push_back(src);
	}
	else
	{
		src = CStringToUTF8string(m_strSrcDir);
		if (src.empty())
		{
			AfxMessageBox(_T("请选择一个待转换的目录!"));
			return;
		}
		
		if (src.length() == 3)
		{
			AfxMessageBox(_T("无法转换整个驱动器!"));
			return;
		}

		foreach_file(src.c_str(), handle_src_file, m_bRecurDir, 1, &cfi.src_files);

		if (cfi.src_files.size() == 0)
		{
			AfxMessageBox(_T("选择的目录下没有需要转换的文件!"));
			return;
		}
	}

	if (m_strSrcCharset.IsEmpty())
	{
		AfxMessageBox(_T("请选择源文件编码格式!"));
		return;
	}
	cfi.src_charset = CStringToUTF8string(m_strSrcCharset);

	//目标信息
	std::string save_dir;
	if (m_bSaveSameDir)
		save_dir = utils::PathFindDirectory(src);
	else
	{
		save_dir = CStringToUTF8string(m_strDstDir);
		if (save_dir.empty())
		{
			AfxMessageBox(_T("请选择保存目录!"));
			return;
		}
	}
	utils::EndWith(save_dir, PATH_SEP_CHAR);

	if (m_strDstCharset.IsEmpty())
	{
		AfxMessageBox(_T("请选择目标文件编码格式!"));
		return;
	}
	cfi.dst_charset = CStringToUTF8string(m_strDstCharset);

	//生成保存文件路径
	if (m_rdSrcFile.GetCheck())
	{
		std::string dstf;
		if (save_dir == utils::PathFindDirectory(src))
		{
			dstf = src.insert(src.length() - utils::PathFindExtension(src).length(), \
								CStringToUTF8string(m_strDstCharset).insert(0, "_"));
		}
		else
			dstf = save_dir + utils::PathFindFileName(src);

		if (utils::PathFileExists(dstf))
		{
			std::string msg = "文件 ";
			msg += utils::UTF8stringTostring(dstf);
			msg += "已经存在,是否覆盖?";
			
			if (AfxMessageBox(stringToCString(msg), MB_OKCANCEL) != IDOK)
				return;
		}

		cfi.dst_files.push_back(dstf);
	}
	else
	{
		utils::string_list::iterator it;
		std::string srcf, dstf;

		if (save_dir == utils::PathFindDirectory(src))
		{
			save_dir += utils::PathFindFileName(src);
			save_dir += "_";
			save_dir += CStringToUTF8string(m_strDstCharset);
		}
		else
			save_dir += utils::PathFindFileName(src);

		if (utils::PathFileExists(save_dir))
		{
			std::string msg = "目录 ";
			msg += utils::UTF8stringTostring(save_dir);
			msg += "已经存在,是否覆盖?";

			if (AfxMessageBox(stringToCString(msg), MB_OKCANCEL) != IDOK)
				return;
		}

		for (it = cfi.src_files.begin(); it != cfi.src_files.end(); it++)
		{
			srcf = *it;
			dstf = srcf.replace(0, src.length(), save_dir);
			cfi.dst_files.push_back(dstf);
		}
	}

	//开启转换线程
	m_bConverting = TRUE;
	uthread_create(&m_thread, conv_thread_proc, this, 0);

	m_bTerminate = FALSE;
	SetDlgItemText(IDOK, _T("停止转换"));
}