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

📄 mainwindow.cpp

📁 linux 下的 图形化的 SVN 相当于 VSS
💻 CPP
📖 第 1 页 / 共 5 页
字号:
QStringList C_MainWindow::split(QString &str, char sep, bool is_trim){    QStringList result;    size_t separator_pos =0;    while(separator_pos < str.length()) {        int p = str.find(sep, separator_pos);        if (p == -1)            p = str.length();        QString elem = str.mid(separator_pos, p-separator_pos); //exctract element        if(is_trim) {            rtrim(elem);            ltrim(elem);        }        separator_pos = p+1;        result.push_back(elem);        if (p >= (int)str.length()) break;    }    return result;}void C_MainWindow::ltrim(QString& str) {	size_t len = str.length();	for (size_t i=0; i<len;  i++) {		if (str[0] == ' ')			str.remove(0,1);		else			break;	}}void C_MainWindow::rtrim(QString& str) {	int len = static_cast<int>(str.length());	for (int i = len; i>=0; i--) {		if (str[(int)str.length()-1] == ' ')			str.remove(str.length()-1, 1);		else			break;	}}void C_MainWindow::saveSettings(){	QSettings settings_;	settings_.setPath("umputun.com", "esvn", QSettings::User);	settings_.beginGroup("/esvn");	settings_.writeEntry("/working_directory", workspace_.FullPath());	QString str;	QTextOStream out1(&str);	out1 << *spl_dir_list;	settings_.writeEntry("/geometry/spl_dir_list", str);	QTextOStream out2(&str);	out2 << *spl_list_out;	settings_.writeEntry("/geometry/spl_list_out", str);	settings_.writeEntry("/geometry/fields/1", list_files->columnWidth(0));	settings_.writeEntry("/geometry/fields/2", list_files->columnWidth(1));	settings_.writeEntry("/geometry/fields/3", list_files->columnWidth(2));	settings_.writeEntry("/geometry/fields/4", list_files->columnWidth(3));	settings_.writeEntry("/geometry/fields/5", list_files->columnWidth(4));	settings_.writeEntry("/geometry/fields/6", list_files->columnWidth(5));	settings_.writeEntry("/geometry/fields/7", list_files->columnWidth(6));	QRect sz = QWidget::geometry();	settings_.writeEntry("/geometry/main_height", sz.height());	settings_.writeEntry("/geometry/main_width", sz.width());	settings_.writeEntry("/geometry/main_top", sz.top());	settings_.writeEntry("/geometry/main_left", sz.left());	settings_.writeEntry("/progs/svn",  subversion_set_);	settings_.writeEntry("/progs/edit", editor_set_);	settings_.writeEntry("/progs/diff", diff_set_);	settings_.writeEntry("/progs/diff3", dlg_options_->le_diff_3way->text());	settings_.writeEntry("/progs/browser", dlg_options_->le_browser->text());	settings_.writeEntry("/state/ext_diff", dlg_options_->ch_extdiff->isChecked());	settings_.writeEntry("/state/dblclk_cat",  dlg_options_->rb_cat->isChecked());	settings_.writeEntry("/state/dblclk_edit", dlg_options_->rb_extedit->isChecked());	settings_.writeEntry("/state/dblclk_open", dlg_options_->rb_open->isChecked());	settings_.writeEntry("/state/hide_unknown", hide_unknown_);	settings_.writeEntry("/state/show_ch_paths", dlg_options_->ch_showchp->isChecked());	settings_.writeEntry("/state/show_dir", dlg_options_->ch_showdir->isChecked());	settings_.writeEntry("/state/hide_commit", dlg_options_->ch_hide_commit->isChecked());	settings_.writeEntry("/state/disable_symlinks", dlg_options_->ch_disablesl->isChecked());	settings_.writeEntry("/state/disable_svn_prop", dlg_options_->ch_disable_sprop->isChecked());	settings_.writeEntry("/state/disable_commit_tag", dlg_options_->ch_disable_cotag->isChecked());	settings_.writeEntry("/state/hide_log_filters", dlg_options_->ch_hide_filters->isChecked());	settings_.writeEntry("/auth/user",  dlg_options_->le_user->text());	settings_.writeEntry("/auth/passw", dlg_options_->le_passw->text());	settings_.writeEntry("/refresh/online",   dlg_options_->rb_online->isChecked());	settings_.writeEntry("/refresh/manual",   dlg_options_->rb_manual->isChecked());	settings_.writeEntry("/refresh/interval", dlg_options_->sb_refresh->value() );	settings_.writeEntry("/log/regular",   dlg_options_->rb_log_reg->isChecked());	settings_.writeEntry("/log/verbouse",  dlg_options_->rb_log_verb->isChecked());	QTextOStream out3(&str);	out3 << *(dlg_repos_->spl_dir_list);	settings_.writeEntry("/repos_geometry/spl_dir_list", str);	settings_.writeEntry("/repos_geometry/fields/1", dlg_repos_->lv_files->columnWidth(0));	settings_.writeEntry("/repos_geometry/fields/2", dlg_repos_->lv_files->columnWidth(1));	settings_.writeEntry("/repos_geometry/fields/3", dlg_repos_->lv_files->columnWidth(2));	settings_.writeEntry("/repos_geometry/fields/4", dlg_repos_->lv_files->columnWidth(3));	settings_.writeEntry("/repos_geometry/fields/5", dlg_repos_->lv_files->columnWidth(4));	QStringList ws_names;	map<QString, QStringList>::iterator iter_ws;	for (iter_ws = ws_.begin(); iter_ws != ws_.end(); iter_ws++)		ws_names.push_back(iter_ws->first);	settings_.writeEntry("/workspace/names", ws_names);	for (size_t d=0; d<ws_names.size(); d++)		if (ws_[ws_names[d]].size())			settings_.writeEntry("/workspace/" + ws_names[d], ws_[ws_names[d]] );	settings_.writeEntry("/openmap/items", open_map_);	settings_.writeEntry("/recently/size", int(recent_files_.size()));	for (size_t r = 0; r < recent_files_.size(); ++r) {		char tmp[128];		sprintf(tmp, "/recently/%d", (int) r);		settings_.writeEntry(tmp, recent_files_[r]);	}	QStringList log_flt_msgs;	for (int m=0; m<dlg_log_->cb_msg->count() && m < 32; m++)		log_flt_msgs.push_back(dlg_log_->cb_msg->text(m));	settings_.writeEntry("/filters/log/msg", log_flt_msgs);	QStringList log_flt_auth;	for (int a=0; a<dlg_log_->cb_author->count() && a < 32; a++)		log_flt_msgs.push_back(dlg_log_->cb_author->text(a));	settings_.writeEntry("/filters/log/auth", log_flt_msgs);	//fonts	settings_.writeEntry("/fonts/default",  dlg_options_->le_default->text());	settings_.writeEntry("/fonts/view",     dlg_options_->le_view->text());	settings_.writeEntry("/fonts/output",   dlg_options_->le_output->text());	settings_.writeEntry("/fonts/list",     dlg_options_->le_list->text());	settings_.writeEntry("/fonts/diff",     dlg_options_->le_diff_font->text());	settings_.writeEntry("/fonts/cmd",      dlg_options_->le_cmd->text());	//toolbars	settings_.writeEntry("/state/tb_file/show",   viewToolbarsFileAction->isOn() );	settings_.writeEntry("/state/tb_view/show",   viewToolbarsViewAction->isOn() );	settings_.writeEntry("/state/tb_modify/show", viewToolbarsModifyAction->isOn() );	settings_.writeEntry("/state/tb_query/show",  viewToolbarsQueryAction->isOn()) ;	settings_.endGroup();}void C_MainWindow::loadSettings(){	QSettings settings_;	settings_.setPath("umputun.com", "esvn", QSettings::User);	settings_.beginGroup("/esvn");	QRect win_size;	win_size.setTop(settings_.readNumEntry("/geometry/main_top", 10));	win_size.setLeft(settings_.readNumEntry("/geometry/main_left", 10));	win_size.setWidth(settings_.readNumEntry("/geometry/main_width", 700));	win_size.setHeight(settings_.readNumEntry("/geometry/main_height", 500));	setGeometry(win_size);	QString str1=settings_.readEntry("/geometry/spl_dir_list");	QTextIStream in1(&str1);	in1 >> *spl_dir_list;	QString str2=settings_.readEntry("/geometry/spl_list_out");	QTextIStream in2(&str2);	in2 >> *spl_list_out;	//updateGeometry();	list_files->setColumnWidth(0, settings_.readNumEntry("/geometry/fields/1",100));	list_files->setColumnWidth(1, settings_.readNumEntry("/geometry/fields/2",100));	list_files->setColumnWidth(2, settings_.readNumEntry("/geometry/fields/3",100));	list_files->setColumnWidth(3, settings_.readNumEntry("/geometry/fields/4",100));	list_files->setColumnWidth(4, settings_.readNumEntry("/geometry/fields/5",100));	list_files->setColumnWidth(5, settings_.readNumEntry("/geometry/fields/6",100));	list_files->setColumnWidth(6, settings_.readNumEntry("/geometry/fields/7",100));	QString str3=settings_.readEntry("/repos_geometry/spl_dir_list");	QTextIStream in3(&str3);	in3 >> *(dlg_repos_->spl_dir_list);	//cout << "fff" << settings_.readNumEntry("/repos_geometry/fields/1", 80) << endl;	dlg_repos_->lv_files->setColumnWidth(0, settings_.readNumEntry("/repos_geometry/fields/1", 80));	dlg_repos_->lv_files->setColumnWidth(1, settings_.readNumEntry("/repos_geometry/fields/2", 40));	dlg_repos_->lv_files->setColumnWidth(2, settings_.readNumEntry("/repos_geometry/fields/3", 40));	dlg_repos_->lv_files->setColumnWidth(3, settings_.readNumEntry("/repos_geometry/fields/4", 40));	dlg_repos_->lv_files->setColumnWidth(4, settings_.readNumEntry("/repos_geometry/fields/5", 40));	QStringList ws_names = settings_.readListEntry("/workspace/names");	for (size_t d=0; d<ws_names.size(); d++) {		QStringList curr_ws = settings_.readListEntry("/workspace/" + ws_names[d]);		if (curr_ws.size())			ws_[ws_names[d]] = curr_ws;	}	QStringList open_map = settings_.readListEntry("/openmap/items");	for (size_t m=0; m<open_map.size(); m++) {		QStringList elems = QStringList::split("|", open_map[m]);		if (elems.size() < 2)			continue;		QListViewItem *item = new QListViewItem(dlg_options_->lv_map, 0);		item->setText(0, elems[0]);		item->setText(1, elems[1]);	}	getOpenMap();	QStringList log_flt_msgs = settings_.readListEntry("/filters/log/msg");	for (size_t m=0; m<log_flt_msgs.size(); m++)		dlg_log_->cb_msg->insertItem(log_flt_msgs[m]);	dlg_log_->cb_msg->setCurrentText("");	QStringList log_flt_auth = settings_.readListEntry("/filters/log/auth");	for (size_t a=0; a<log_flt_msgs.size(); a++)		dlg_log_->cb_author->insertItem(log_flt_auth[a]);	dlg_log_->cb_author->setCurrentText("");	subversion_set_ = settings_.readEntry("/progs/svn", "svn");	svn_commands_->setSvn(subversion_set_);	editor_set_ = settings_.readEntry("/progs/edit","kwrite");	diff_set_ = settings_.readEntry("/progs/diff", "kdiff3" );	dlg_options_->le_diff_3way->setText(settings_.readEntry("/progs/diff3", "kdiff3" ));	dlg_options_->le_browser->setText(settings_.readEntry("/progs/browser", "mozilla" ));	bool is_ext_dif = settings_.readBoolEntry("/state/ext_diff", false);	dlg_options_->ch_extdiff->setChecked(is_ext_dif);	dlg_diff_setup_->ch_extdiff->setChecked(is_ext_dif);	dlg_options_->ch_extdiff->setChecked(settings_.readBoolEntry("/state/ext_diff", false));	dlg_options_->rb_cat->setChecked(settings_.readBoolEntry("/state/dblclk_cat", false));	dlg_options_->rb_extedit->setChecked(settings_.readBoolEntry("/state/dblclk_edit", true));	dlg_options_->rb_open->setChecked(settings_.readBoolEntry("/state/dblclk_open", false));	if (!dlg_options_->rb_cat->isChecked() && !dlg_options_->rb_extedit->isChecked() && !dlg_options_->rb_open->isChecked() )		dlg_options_->rb_extedit->setChecked(true); //compatible with prev version	hide_unknown_ = settings_.readBoolEntry("/state/hide_unknown", false);    viewHide_unknownAction->setOn(hide_unknown_);    //dlg_options_->ch_hide->setChecked(hide_unknown_);	dlg_log_->gr_filters->setHidden(settings_.readBoolEntry("/state/hide_log_filters", false));	dlg_log_->useExtDiff(dlg_options_->ch_extdiff->isChecked() );	dlg_options_->le_user->setText(settings_.readEntry("/auth/user", ""));	dlg_options_->le_passw->setText(settings_.readEntry("/auth/passw",""));	dlg_options_->rb_online->setChecked(settings_.readBoolEntry("/refresh/online", false));	dlg_options_->rb_manual->setChecked(settings_.readBoolEntry("/refresh/manual", true));	dlg_options_->rb_log_reg->setChecked(settings_.readBoolEntry("/log/regular", true));	dlg_options_->rb_log_verb->setChecked(settings_.readBoolEntry("/log/verbouse", false));	dlg_options_->sb_refresh->setValue(settings_.readNumEntry("/refresh/interval", 30));	dlg_options_->le_svn->setText(subversion_set_);	dlg_options_->le_editor->setText(editor_set_);	dlg_options_->le_diff->setText(diff_set_);	dlg_options_->ch_showchp->setChecked(settings_.readBoolEntry("/state/show_ch_paths", false));	dlg_options_->ch_showdir->setChecked(settings_.readBoolEntry("/state/show_dir", false));	dlg_options_->ch_disablesl->setChecked(settings_.readBoolEntry("/state/disable_symlinks", true));	dlg_options_->ch_disable_sprop->setChecked(settings_.readBoolEntry("/state/disable_svn_prop", false));	dlg_options_->ch_disable_cotag->setChecked(settings_.readBoolEntry("/state/disable_commit_tag", false));	dlg_options_->ch_hide_commit->setChecked(settings_.readBoolEntry("/state/hide_commit", false));	int rs_sz = settings_.readNumEntry("/recently/size", 0);	for (int r = 0; r < rs_sz; ++r) {		char tmp[128];		sprintf(tmp, "/recently/%d", rs_sz-r-1);		QString path = settings_.readEntry(tmp, "noname");		recent_files_.remove(path);		recent_files_.push_front(path);		updateRecentFileItems();	}	//fonts	dlg_options_->le_default->setText(settings_.readEntry("/fonts/default",""));	dlg_options_->le_view->setText(settings_.readEntry("/fonts/view",""));	dlg_options_->le_output->setText(settings_.readEntry("/fonts/output",""));	dlg_options_->le_list->setText(settings_.readEntry("/fonts/list",""));	dlg_options_->le_diff_font->setText(settings_.readEntry("/fonts/diff",""));	dlg_options_->le_cmd->setText(settings_.readEntry("/fonts/cmd",""));	//toolbars	viewToolbarsFileAction->setOn(settings_.readBoolEntry("/state/tb_file/show", false));	viewToolbarsViewAction->setOn(settings_.readBoolEntry("/state/tb_view/show", false));	viewToolbarsModifyAction->setOn(settings_.readBoolEntry("/state/tb_modify/show", false));	viewToolbarsQueryAction->setOn(settings_.readBoolEntry("/state/tb_query/show", false));	showHideToolBars();	//dlg_busy busy(this);	//busy.lb_command->setText("Loading workspace " + settings_.readEntry("/working_directory", ""));	//busy.show();	QString ws_name = settings_.readEntry("/state/active_workspace", "");	if (ws_name.isEmpty()) {		QString working_directory = settings_.readEntry("/working_directory", "");		if (!working_directory.isEmpty()) {			C_DirPath wsPath = QDir(working_directory);			loadWorkspace(wsPath);		}	}	else {		dir_refresh_disable_ = false;		loadWS(ws_name);	}	//busy.hide();	user_ = dlg_options_->le_user->text();	passwd_ = dlg_options_->le_passw->text();	dlg_prop_->setParams(svn_commands_, dlg_options_->ch_disable_sprop->isChecked());	dlg_workspace_->wsData(&ws_);	setFonts();	settings_.endGroup();}void C_MainWindow::setFonts() {	QFont font;	if (dlg_options_->le_default->text() != "") {		font.fromString(dlg_options_->le_default->text());		setFont(font);	}	if (dlg_options_->le_view->text() != "") {		font.fromString(dlg_options_->le_view->text());		dlg_view_->tb_view->setFont(font);	}	if (dlg_options_->le_output->text() != "") {		font.fromString(dlg_options_->le_output->text());		textBrowser->setFont(font);	}	if (dlg_options_->le_list->text() != "") {		font.fromString(dlg_options_->le_list->text());		list_files->setFont(font);		list_dirs->setFont(font);	}	if (dlg_options_->le_diff_font->text() != "") {		font.fromString(dlg_options_->le_diff_font->text());		dlg_diff_->tx_diff->setFont(font);	}	if (dlg_options_->le_cmd->text() != "") {		font.fromString(dlg_options_->le_cmd->text());		cmd_LineEdit->setFont(font);	}}QString C_MainWindow::getUrlOnline(const C_Path& localpath) {	QStringList info;    PathSelection selection;    selection.push_back(localpath);	int res = svn_commands_->info(selection, info);	QString url = "";	if (res == 0) {		//find URL QString		for (size_t i=0; i<info.size(); i++) {			QString str = info[i];			if (str.find("URL:") == 0 && str.length() > 4 ) {				url = str.mid(5, 1024);				break;			}		}	}	return url;}bool C_MainWindow::fillSvnStatus(C_SvnStatus* res_svn_status){	if (dir_refresh_disable_) {		sendToOutput("get status - refresh disabled");		return false;	}	sendToOutput("get status");	C_SvnCommands svn_command(textBro

⌨️ 快捷键说明

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