📄 config.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 + -