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(); }
//文件拖拽 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); }
//转换源目录 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); }
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; }
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("停止转换")); }