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

📄 config.cc

📁 About: Paco (pacKAGE oRGANIZER) is a simple, yet powerful tool to aid package management when insta
💻 CC
字号:
//=======================================================================// Config.cc//-----------------------------------------------------------------------// This file is part of the package paco// Copyright (C) 2004-2007 David Rosal <david.3r@gmail.com>// For more information visit http://paco.sourceforge.net//=======================================================================#include "config.h"#include "globals.h"#include "util.h"#include "Config.h"#include "MainWindow.h"#include "paco/paco.h"#include <fstream>#include <gtkmm/tooltips.h>using std::string;using std::vector;using namespace Gpaco;namespace Gpaco{	bool Config::sRules			= false;	bool Config::sTips			= false;	bool Config::sHour			= false;	int Config::sSizeUnit		= Paco::HUMAN_READABLE;	int Config::sWidth			= Config::DEFAULT_WIDTH;	int Config::sHeight			= Config::DEFAULT_HEIGHT;	int Config::sXPos			= Config::DEFAULT_XPOS;	int Config::sYPos			= Config::DEFAULT_YPOS;	vector<int> Config::sCols;}Config::Config(string const& logdir):	Paco::BaseConfig(logdir),	mGpacoRC(Glib::get_home_dir() + "/.gpacorc"),	mKeyFile(g_key_file_new()){	if (Paco::inPaths(sLogdir, "/dev:/proc:/sys"))		errorDialog(NULL, sLogdir + ": Invalid log directory", true);	setDefaultCols();	gpTips = new Gtk::Tooltips();		if (!g_key_file_load_from_file(mKeyFile, mGpacoRC.c_str(),		G_KEY_FILE_NONE, NULL))		return;	// Remove .gpacorc if is of an older version (< 2)	gchar* version = g_key_file_get_string		(mKeyFile, "settings", "VERSION", NULL);		if (!version) {		g_key_file_free(mKeyFile);		unlink(mGpacoRC.c_str());		return;	}	g_free(version);	g_return_if_fail(g_key_file_has_key(mKeyFile, "settings", "COLUMNS", NULL));		getValue("SHOW_RULES", &sRules);	getValue("SHOW_TIPS", &sTips);	getValue("SHOW_HOUR", &sHour);	getValue("SIZE_UNIT", &sSizeUnit);	getValue("WINDOW_WIDTH", &sWidth);	getValue("WINDOW_HEIGHT", &sHeight);	getValue("WINDOW_XPOS", &sXPos);	getValue("WINDOW_YPOS", &sYPos);	GError* e = NULL;	gsize n;	int* columns = g_key_file_get_integer_list		(mKeyFile, "settings", "COLUMNS", &n, &e);		if (!e && columns && n) {		sCols.assign(columns, columns + n);		g_free(columns);	}	g_key_file_free(mKeyFile);	if (sTips)		gpTips->enable();	else		gpTips->disable();}Config::~Config(){	mKeyFile = g_key_file_new();	g_key_file_set_string(mKeyFile, "settings", "VERSION", PACKAGE_VERSION);	g_key_file_set_boolean(mKeyFile, "settings", "SHOW_RULES", sRules);	g_key_file_set_boolean(mKeyFile, "settings", "SHOW_TIPS", sTips);	g_key_file_set_boolean(mKeyFile, "settings", "SHOW_HOUR", sHour);	g_key_file_set_integer(mKeyFile, "settings", "SIZE_UNIT", sSizeUnit);	g_key_file_set_integer(mKeyFile, "settings", "WINDOW_WIDTH", sWidth);	g_key_file_set_integer(mKeyFile, "settings", "WINDOW_HEIGHT", sHeight);	g_key_file_set_integer(mKeyFile, "settings", "WINDOW_XPOS", sXPos);	g_key_file_set_integer(mKeyFile, "settings", "WINDOW_YPOS", sYPos);	int n = sCols.size();	int* colList = new int[n];	for (int i = 0; i < n; ++i)		colList[i] = sCols[i];	g_key_file_set_integer_list(mKeyFile, "settings", "COLUMNS", colList, n);	delete [] colList;	std::ofstream f(mGpacoRC.c_str());	if (f)		f << g_key_file_to_data(mKeyFile, 0, 0);	else {		g_warning("Cannot open configuration file %s for writing\n",			mGpacoRC.c_str());	}	g_key_file_free(mKeyFile);}void Config::saveSettings(MainWindow& window){	sRules = window.treeView().get_rules_hint();	window.get_size(sWidth, sHeight);	window.get_position(sXPos, sYPos);	sCols.clear();	for (int i = 0; i < MainTreeView::N_COLS; ++i) {		if ((window.treeView().get_column(i))->get_visible())			sCols.push_back(i);	}}void Config::setDefaultCols(){	sCols.push_back(MainTreeView::COL_ICON);	sCols.push_back(MainTreeView::COL_NAME);	sCols.push_back(MainTreeView::COL_SIZE_INST);	sCols.push_back(MainTreeView::COL_SIZE_PERCENT);	sCols.push_back(MainTreeView::COL_DATE);	sCols.push_back(MainTreeView::COL_SUMMARY);}// [static]void Config::init(string const& logdir){	static Config c(logdir);}void Config::tips(bool set){	g_return_if_fail(gpTips != NULL);	if (set)		gpTips->enable();	else		gpTips->disable();	sTips = set;}void Config::getValue(char const* tag, bool* var){	GError* error = 0;	bool val = g_key_file_get_boolean(mKeyFile, "settings", tag, &error);	if (!error)		*var = val;}void Config::getValue(char const* tag, int* var){	GError* error = 0;	int val = g_key_file_get_integer(mKeyFile, "settings", tag, &error);	if (!error)		*var = val;}

⌨️ 快捷键说明

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