mirror of
https://github.com/ashaduri/gsmartcontrol.git
synced 2026-09-29 07:05:34 +00:00
Importing 0.8.4-pre-2009-03-21.
This commit is contained in:
@@ -68,7 +68,7 @@ src-rpm: dist
|
||||
|
||||
|
||||
# NSIS installer support.
|
||||
# Requires wine, installed NSIS, gtkmm dlls, pcre dlls, smartctl.exe, smartctl_console.exe.
|
||||
# Requires wine, installed NSIS, gtkmm dlls, pcre dlls, smartctl-nc.exe, smartctl.exe.
|
||||
# dos2unix on build machine.
|
||||
# Execute only with win32 build present.
|
||||
|
||||
@@ -103,8 +103,8 @@ win-dist-prepare: all win-dist-clean
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/libsigc-*.dll nsis-dist/
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/pcre3.dll nsis-dist/
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/mingwm10.dll nsis-dist/
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/smartctl-nc.exe nsis-dist/
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/smartctl.exe nsis-dist/
|
||||
cp "@WINDOWS_DLLS_LOCATION@"/smartctl_console.exe nsis-dist/
|
||||
|
||||
cp src/gsmartcontrol.exe nsis-dist/
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
|
||||
Version 0.8.4, released on ---------
|
||||
Blacklist Linux Software RAID devices (backported from Debian).
|
||||
Win32: Use smartmontools-supplied smartctl-nc.exe by default (if found).
|
||||
|
||||
Version 0.8.3, released on 2008-12-27
|
||||
A random "Smartctl returned an empty output" error on Windows was fixed.
|
||||
Thanks to Zurab Khetsuriani for testing.
|
||||
|
||||
@@ -109,7 +109,7 @@ Most of these packages are probably already provided by your distribution.
|
||||
Here are the packages you need to have to build GSmartControl on some Linux
|
||||
distributions:
|
||||
|
||||
OpenSUSE, SLES, SLED:
|
||||
openSUSE, SLES, SLED:
|
||||
gcc-c++, pcre-devel, gtkmm2-devel, (possibly) libglademm-devel.
|
||||
|
||||
Fedora, CentOS, RHEL:
|
||||
@@ -171,9 +171,9 @@ Long answer: read below.
|
||||
|
||||
First, check if you can find a pre-built package for your distribution or
|
||||
operating system - they usually provide the best integration and the easiest
|
||||
installation procedure. For Linux, one option is to try the OpenSUSE Build
|
||||
installation procedure. For Linux, one option is to try the openSUSE Build
|
||||
Service - it provides ready-to-install packages for various popular Linux
|
||||
distributions (OpenSUSE, Fedora, etc...). See
|
||||
distributions (openSUSE, Fedora, etc...). See
|
||||
http://download.opensuse.org/repositories/home:/alex_sh/ .
|
||||
|
||||
If you want to compile from source, check that you have all the required
|
||||
@@ -335,10 +335,10 @@ If you still think it's a GSmartControl issue, please collect the following
|
||||
information about your system. Without it, it may be very hard or impossible
|
||||
to fix the bug.
|
||||
|
||||
* Which operating system you use (for example, OpenSUSE Linux 11.0).
|
||||
* Which operating system you use (for example, openSUSE Linux 11.0).
|
||||
|
||||
* Which version of GTK and Gtkmm you have installed. Finding this out is very
|
||||
distribution-specific. For example, on OpenSUSE it would be
|
||||
distribution-specific. For example, on openSUSE it would be
|
||||
"rpm -q gtk2 gtkmm2". Some distributions have gtkmm24 instead. You may also
|
||||
search them in your distribution's graphical package manager, if there is one.
|
||||
|
||||
|
||||
@@ -48,7 +48,11 @@ libdebug:
|
||||
bug: if -q is passed, Execution log doesn't contain libdebug log. (requires per-channel status control).
|
||||
|
||||
|
||||
Move attributes as a second tab
|
||||
|
||||
INCLUDE SMARTMONTOOLS LICENSE!!
|
||||
|
||||
Update copyright years.
|
||||
|
||||
|
||||
----------- Feature List ----------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
AC_INIT([GSmartControl], 0.8.3, [], [gsmartcontrol])
|
||||
AC_INIT([GSmartControl], 0.8.4, [], [gsmartcontrol])
|
||||
|
||||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
@@ -23,6 +23,6 @@ binary was compiled for 32-bit Windows, and should work on both 32-bit and
|
||||
|
||||
* PCRE (http://www.pcre.org/) dll.
|
||||
|
||||
* Smartctl binaries - smartctl.exe (compiled without console output),
|
||||
smartctl_console.exe (compiled with console output), version 5.38.
|
||||
* Smartctl binaries - smartctl-nc.exe (compiled without console output),
|
||||
smartctl.exe (compiled with console output), version 5.38.
|
||||
http://smartmontools.sf.net/ .
|
||||
|
||||
@@ -177,7 +177,7 @@ FunctionEnd
|
||||
|
||||
|
||||
|
||||
; ----------------- INSTALLATINO TYPES
|
||||
; ----------------- INSTALLATION TYPES
|
||||
|
||||
; InstType "Recommended"
|
||||
InstType "Full"
|
||||
@@ -200,8 +200,8 @@ SectionIn 1
|
||||
File gsmartcontrol.ico
|
||||
File icon_*.png
|
||||
File *.dll
|
||||
File smartctl-nc.exe
|
||||
File smartctl.exe
|
||||
File smartctl_console.exe
|
||||
|
||||
File /r doc
|
||||
|
||||
@@ -272,8 +272,8 @@ Section Uninstall
|
||||
Delete "$INSTDIR\gsmartcontrol.ico"
|
||||
Delete "$INSTDIR\icon_*.png"
|
||||
Delete "$INSTDIR\*.dll"
|
||||
Delete "$INSTDIR\smartctl-nc.exe"
|
||||
Delete "$INSTDIR\smartctl.exe"
|
||||
Delete "$INSTDIR\smartctl_console.exe"
|
||||
|
||||
RMDir /r "$INSTDIR\doc"
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@ AM_CPPFLAGS = $(all_includes)
|
||||
METASOURCES = AUTO
|
||||
noinst_LIBRARIES = libapplib.a
|
||||
libapplib_a_SOURCES = app_gtkmm_utils.cpp app_pango_utils.cpp cmdex.cpp \
|
||||
cmdex_sync.cpp cmdex_sync_gui.cpp gui_utils.cpp selftest.cpp smartctl_parser.cpp \
|
||||
storage_detector.cpp storage_device.cpp storage_property.cpp storage_property_descr.cpp
|
||||
cmdex_sync.cpp cmdex_sync_gui.cpp gui_utils.cpp selftest.cpp smartctl_executor.cpp \
|
||||
smartctl_parser.cpp storage_detector.cpp storage_device.cpp storage_property.cpp \
|
||||
storage_property_descr.cpp
|
||||
noinst_HEADERS = app_gtkmm_features.h app_gtkmm_utils.h app_pango_utils.h \
|
||||
app_pcrecpp.h app_ui_res_utils.h cmdex.h cmdex_sync.h cmdex_sync_gui.h gui_utils.h \
|
||||
selftest.h smartctl_executor.h smartctl_executor_gui.h smartctl_parser.h \
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/**************************************************************************
|
||||
Copyright:
|
||||
(C) 2008 Alexander Shaduri <ashaduri 'at' gmail.com>
|
||||
License: See LICENSE_gsmartcontrol.txt
|
||||
***************************************************************************/
|
||||
|
||||
#include "smartctl_executor.h"
|
||||
|
||||
#include "hz/fs_path.h"
|
||||
#include "hz/win32_tools.h"
|
||||
#include "rconfig/rconfig_mini.h"
|
||||
|
||||
|
||||
|
||||
// returns an empty string if not found.
|
||||
std::string get_smartctl_binary()
|
||||
{
|
||||
std::string smartctl_binary;
|
||||
rconfig::get_data("system/smartctl_binary", smartctl_binary);
|
||||
|
||||
#ifdef _WIN32
|
||||
// look in smartmontools installation directory.
|
||||
do {
|
||||
bool use_smt = false;
|
||||
rconfig::get_data("system/win32_search_smartctl_in_smartmontools", use_smt);
|
||||
if (!use_smt)
|
||||
break;
|
||||
|
||||
std::string smt_regpath, smt_regkey, smt_smartctl;
|
||||
rconfig::get_data("system/win32_smartmontools_regpath", smt_regpath);
|
||||
rconfig::get_data("system/win32_smartmontools_regkey", smt_regkey);
|
||||
rconfig::get_data("system/win32_smartmontools_smartctl_binary", smt_smartctl);
|
||||
|
||||
if (smt_regpath.empty() || smt_regkey.empty() || smt_smartctl.empty())
|
||||
break;
|
||||
|
||||
std::string smt_inst_dir;
|
||||
hz::win32_get_registry_value_string(smt_inst_dir, HKEY_LOCAL_MACHINE, smt_regpath, smt_regkey);
|
||||
|
||||
if (smt_inst_dir.empty()) {
|
||||
debug_out_info("app", DBG_FUNC_MSG << "Smartmontools installation not found in \"HKLM\\"
|
||||
<< smt_regpath << "\\" << smt_regkey << "\".\n");
|
||||
break;
|
||||
}
|
||||
debug_out_info("app", DBG_FUNC_MSG << "Smartmontools installation found at \"" << smt_inst_dir
|
||||
<< "\", using \"" << smt_smartctl << "\".\n");
|
||||
|
||||
hz::FsPath p(smt_inst_dir);
|
||||
p.append(smt_smartctl);
|
||||
|
||||
if (!p.exists() || !p.is_file())
|
||||
break;
|
||||
|
||||
smartctl_binary = p.str();
|
||||
|
||||
} while (false);
|
||||
|
||||
#endif
|
||||
|
||||
return smartctl_binary;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -152,6 +152,9 @@ typedef SmartctlExecutorGeneric<CmdexSync> SmartctlExecutor;
|
||||
|
||||
|
||||
|
||||
// returns an empty string if not found.
|
||||
std::string get_smartctl_binary();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "hz/hz_config.h" // CONFIG_*
|
||||
|
||||
#include <ios> // std::boolalpha
|
||||
// #include <glibmm/fileutils.h> // Dir
|
||||
#include <algorithm> // std::find
|
||||
#include <cstdio> // std::fgets()
|
||||
#include <cerrno> // ENXIO
|
||||
@@ -201,9 +200,9 @@ namespace {
|
||||
}
|
||||
|
||||
hz::File file(parts_file);
|
||||
// std::string contents;
|
||||
// std::string contents;
|
||||
std::vector<std::string> lines;
|
||||
// if (!f.get_contents(contents)) {
|
||||
// if (!f.get_contents(contents)) {
|
||||
if (!read_proc_partitions_file(file, lines)) { // this outputs to debug too
|
||||
std::string error_msg = file.get_error_utf8(); // save before calling other file functions
|
||||
if (!file.exists()) {
|
||||
@@ -214,9 +213,9 @@ namespace {
|
||||
return error_msg;
|
||||
}
|
||||
|
||||
// debug_out_dump("app", DBG_FUNC_MSG << "Dumping partitions file:\n" << contents << "\n");
|
||||
// debug_out_dump("app", DBG_FUNC_MSG << "Dumping partitions file:\n" << contents << "\n");
|
||||
|
||||
// hz::string_split(contents, '\n', lines, true);
|
||||
// hz::string_split(contents, '\n', lines, true);
|
||||
|
||||
std::vector<std::string> blacklist;
|
||||
// fixme: not sure about how partitions are visible with twa0.
|
||||
@@ -225,6 +224,7 @@ namespace {
|
||||
blacklist.push_back("/loop[0-9]*$/"); // not sure if loop devices go there, but anyway...
|
||||
blacklist.push_back("/part[0-9]+$/"); // devfs had them
|
||||
blacklist.push_back("/p[0-9]+$/"); // partitions are usually marked this way
|
||||
blacklist.push_back("/md[0-9]*$/"); // linux software raid
|
||||
|
||||
|
||||
for (unsigned int i = 0; i < lines.size(); ++i) {
|
||||
@@ -249,7 +249,7 @@ namespace {
|
||||
if (blacked)
|
||||
continue;
|
||||
|
||||
std::string path = "/dev/" + dev;
|
||||
std::string path = "/dev/" + dev; // let's just hope the it's /dev.
|
||||
if (std::find(devices.begin(), devices.end(), path) == devices.end()) // there may be duplicates
|
||||
devices.push_back(path);
|
||||
}
|
||||
@@ -263,7 +263,7 @@ namespace {
|
||||
|
||||
|
||||
// smartctl accepts various variants, the most straight being pdN,
|
||||
// (or /dev/pdN, /dev being optional) where N comes from
|
||||
// (or /dev/pdN, /dev/ being optional) where N comes from
|
||||
// "\\.\PhysicalDriveN" (winnt only).
|
||||
|
||||
inline std::string detect_drives_win32(std::vector<std::string>& devices)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "storage_device.h"
|
||||
#include "smartctl_parser.h"
|
||||
#include "storage_settings.h"
|
||||
#include "smartctl_executor.h"
|
||||
|
||||
|
||||
|
||||
@@ -438,16 +439,16 @@ std::string StorageDevice::execute_smartctl(const std::string& command_options,
|
||||
if (!smartctl_ex) // if it doesn't exist, create a default one
|
||||
smartctl_ex = new SmartctlExecutor(); // will be auto-deleted
|
||||
|
||||
|
||||
std::string smartctl_binary, smartctl_def_options;
|
||||
rconfig::get_data("system/smartctl_binary", smartctl_binary);
|
||||
rconfig::get_data("system/smartctl_options", smartctl_def_options);
|
||||
std::string smartctl_binary = get_smartctl_binary();
|
||||
|
||||
if (smartctl_binary.empty()) {
|
||||
debug_out_error("app", DBG_FUNC_MSG << "Smartctl binary is not set in config.\n");
|
||||
return "Smartctl binary is not specified in configuration.";
|
||||
}
|
||||
|
||||
std::string smartctl_def_options;
|
||||
rconfig::get_data("system/smartctl_options", smartctl_def_options);
|
||||
|
||||
if (!smartctl_def_options.empty())
|
||||
smartctl_def_options += " ";
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "applib/storage_detector.h"
|
||||
#include "applib/smartctl_parser.h"
|
||||
#include "applib/gui_utils.h" // gui_show_error_dialog
|
||||
#include "applib/smartctl_executor.h" // get_smartctl_binary()
|
||||
#include "applib/smartctl_executor_gui.h"
|
||||
#include "applib/app_gtkmm_utils.h" // app_gtkmm_*
|
||||
#include "applib/storage_property_colors.h" // app_property_get_label_hilight_color
|
||||
@@ -61,11 +62,11 @@ GscMainWindow::GscMainWindow(BaseObjectType* gtkcobj, const app_ui_res_ref_t& re
|
||||
bool show_output_button = true;
|
||||
|
||||
do {
|
||||
std::string smartctl_binary, smartctl_def_options;
|
||||
rconfig::get_data("system/smartctl_binary", smartctl_binary);
|
||||
std::string smartctl_binary = get_smartctl_binary();
|
||||
|
||||
// Don't use default options here - they are used when invoked
|
||||
// with a device option.
|
||||
// std::string smartctl_def_options;
|
||||
// rconfig::get_data("system/smartctl_options", smartctl_def_options);
|
||||
|
||||
if (smartctl_binary.empty()) {
|
||||
|
||||
@@ -229,6 +229,13 @@ GscPreferencesWindow::GscPreferencesWindow(BaseObjectType* gtkcobj, const app_ui
|
||||
// we can't do this in treeview's constructor, it doesn't know about this window yet.
|
||||
this->device_widget_set_remove_possible(false); // initial state
|
||||
|
||||
// hide win32-only options for non-win32.
|
||||
#ifndef _WIN32
|
||||
Gtk::CheckButton* smartctl_search_check = this->lookup_widget<Gtk::CheckButton*>("search_in_smartmontools_first_check");
|
||||
if (smartctl_search_check)
|
||||
smartctl_search_check->hide();
|
||||
#endif
|
||||
|
||||
|
||||
// ---------------
|
||||
|
||||
@@ -318,6 +325,11 @@ void GscPreferencesWindow::import_config()
|
||||
&& (check = this->lookup_widget<Gtk::CheckButton*>("show_smart_capable_only_check")) )
|
||||
check->set_active(show_smart_capable_only);
|
||||
|
||||
bool win32_search_smartctl_in_smartmontools;
|
||||
if ( prefs_config_get("system/win32_search_smartctl_in_smartmontools", win32_search_smartctl_in_smartmontools)
|
||||
&& (check = this->lookup_widget<Gtk::CheckButton*>("search_in_smartmontools_first_check")) )
|
||||
check->set_active(win32_search_smartctl_in_smartmontools);
|
||||
|
||||
std::string smartctl_binary;
|
||||
if ( prefs_config_get("system/smartctl_binary", smartctl_binary)
|
||||
&& (entry = this->lookup_widget<Gtk::Entry*>("smartctl_binary_entry")) )
|
||||
@@ -363,6 +375,9 @@ void GscPreferencesWindow::export_config()
|
||||
if ((check = this->lookup_widget<Gtk::CheckButton*>("show_smart_capable_only_check")))
|
||||
prefs_config_set("gui/show_smart_capable_only", bool(check->get_active()));
|
||||
|
||||
if ((check = this->lookup_widget<Gtk::CheckButton*>("search_in_smartmontools_first_check")))
|
||||
prefs_config_set("system/win32_search_smartctl_in_smartmontools", bool(check->get_active()));
|
||||
|
||||
if ((entry = this->lookup_widget<Gtk::Entry*>("smartctl_binary_entry")))
|
||||
prefs_config_set("system/smartctl_binary", std::string(entry->get_text()));
|
||||
|
||||
|
||||
@@ -30,7 +30,18 @@ inline void init_default_settings()
|
||||
rconfig::set_default_data("system/config_autosave_timeout", uint32_t(3*60)); // 3 minutes. 0 to disable.
|
||||
rconfig::set_default_data("system/first_boot", true); // used to show the first-start warning.
|
||||
|
||||
|
||||
#ifndef _WIN32
|
||||
rconfig::set_default_data("system/smartctl_binary", "smartctl"); // must be in PATH or use absolute path.
|
||||
#else
|
||||
rconfig::set_default_data("system/smartctl_binary", "smartctl-nc.exe"); // use no-console version by default.
|
||||
#endif
|
||||
// search for "smartctl-nc.exe" in smartmontools installation first.
|
||||
rconfig::set_default_data("system/win32_search_smartctl_in_smartmontools", true);
|
||||
rconfig::set_default_data("system/win32_smartmontools_regpath", "SOFTWARE\\smartmontools"); // in HKLM
|
||||
rconfig::set_default_data("system/win32_smartmontools_regkey", "Install_Dir");
|
||||
rconfig::set_default_data("system/win32_smartmontools_smartctl_binary", "bin\\smartctl-nc.exe"); // relative to smt install path
|
||||
|
||||
rconfig::set_default_data("system/smartctl_options", ""); // default options on ALL commands
|
||||
rconfig::set_default_data("system/smartctl_device_options", ""); // dev1:val1;dev2:val2;... format, each bin2ascii-encoded.
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ BEGIN
|
||||
VALUE "FileDescription", "GSmartControl - Hard disk drive health inspection tool"
|
||||
VALUE "FileVersion", "@VERSION@"
|
||||
VALUE "InternalName", "gsmartcontrol.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2008 Alexander Shaduri"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2008 - 2009 Alexander Shaduri"
|
||||
VALUE "OriginalFilename", "gsmartcontrol.exe"
|
||||
VALUE "ProductName", "GSmartControl"
|
||||
VALUE "ProductVersion", "@VERSION@"
|
||||
|
||||
@@ -543,6 +543,7 @@ inline bool File::move(const std::string& to)
|
||||
|
||||
// win32 rename() doesn't replace contents if newpath exists and says "file exists".
|
||||
#ifdef _WIN32
|
||||
/// FIXME: Try to rename first, unlink/rename again later. This way we have at least some atomicity.
|
||||
// try remove it if it's a file. no error checks here - rename() will report the needed messages.
|
||||
File dest_file(to);
|
||||
if (dest_file.is_file())
|
||||
|
||||
@@ -167,7 +167,13 @@ class ptr_container : public Container {
|
||||
// for std::list: remove() and remove_if()
|
||||
void remove(const value_type& v)
|
||||
{
|
||||
clean( std::find(begin(), end(), v) );
|
||||
for (iterator i = begin(); i != end(); ++i) {
|
||||
if ((*i) == v) {
|
||||
clean(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// clean( std::find(begin(), end(), v) );
|
||||
Container::remove(v);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.4.5 on Mon Nov 10 21:09:06 2008 -->
|
||||
<!--Generated with glade3 3.4.5 on Sun Mar 22 00:42:11 2009 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkWindow" id="gsc_preferences_window">
|
||||
<child>
|
||||
@@ -102,95 +102,116 @@
|
||||
<widget class="GtkVBox" id="vbox7">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<widget class="GtkVBox" id="vbox12">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="row_spacing">7</property>
|
||||
<property name="spacing">7</property>
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="alignment5">
|
||||
<widget class="GtkCheckButton" id="search_in_smartmontools_first_check">
|
||||
<property name="visible">True</property>
|
||||
<property name="left_padding">5</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Show SMART-capable drives only</property>
|
||||
<property name="tooltip" translatable="yes">Show SMART-capable drives only</property>
|
||||
<property name="label" translatable="yes">Loo_k for smartctl in smartmontools installation directory first</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="row_spacing">7</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="smartctl_binary_browse_button">
|
||||
<widget class="GtkAlignment" id="alignment5">
|
||||
<property name="visible">True</property>
|
||||
<property name="left_padding">5</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="smartctl_binary_browse_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">_Browse...</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="response_id">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label13">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="smartctl_options_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">_Browse...</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="tooltip_text">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl. Must be shell-escaped.</property>
|
||||
<property name="tooltip" translatable="yes">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl. Must be shell-escaped.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label8">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl.</property>
|
||||
<property name="tooltip" translatable="yes">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl.</property>
|
||||
<property name="label" translatable="yes">Smartctl _parameters: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's $PATH.</property>
|
||||
<property name="tooltip" translatable="yes">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's $PATH.</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">S_martctl binary: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="smartctl_binary_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's PATH.</property>
|
||||
<property name="tooltip" translatable="yes">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's PATH.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label13">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="smartctl_options_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl. Must be shell-escaped.</property>
|
||||
<property name="tooltip" translatable="yes">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl. Must be shell-escaped.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label8">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl.</property>
|
||||
<property name="tooltip" translatable="yes">Global parameters for smartctl. These parameters will be used every time the progam invokes smartctl.</property>
|
||||
<property name="label" translatable="yes">Smartctl _parameters: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's $PATH.</property>
|
||||
<property name="tooltip" translatable="yes">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's $PATH.</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">S_martctl binary: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="smartctl_binary_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's PATH.</property>
|
||||
<property name="tooltip" translatable="yes">A path to smartctl binary. If the path is not absolute, the binary will be looked for in user's PATH.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
@@ -255,18 +276,6 @@
|
||||
<property name="n_rows">1</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="row_spacing">7</property>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="device_blacklist_patterns_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Semicolon-separated blacklist PCRE patterns for device search. For example, to blacklist all "/dev/sd*" devices, use "sd.$". Simply listing them as "sda;sdb" or "sd[ab]" will also work.</property>
|
||||
<property name="tooltip" translatable="yes">Semicolon-separated blacklist PCRE patterns for device search. For example, to blacklist all "/dev/sd*" devices, use "sd.$". Simply listing them as "sda;sdb" or "sd[ab]" will also work.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label6">
|
||||
<property name="visible">True</property>
|
||||
@@ -280,6 +289,18 @@
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="device_blacklist_patterns_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Semicolon-separated blacklist PCRE patterns for device search. For example, to blacklist all "/dev/sd*" devices, use "sd.$". Simply listing them as "sda;sdb" or "sd[ab]" will also work.</property>
|
||||
<property name="tooltip" translatable="yes">Semicolon-separated blacklist PCRE patterns for device search. For example, to blacklist all "/dev/sd*" devices, use "sd.$". Simply listing them as "sda;sdb" or "sd[ab]" will also work.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">10</property>
|
||||
@@ -392,40 +413,15 @@
|
||||
<property name="n_columns">2</property>
|
||||
<property name="row_spacing">10</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label9">
|
||||
<widget class="GtkEntry" id="device_options_parameter_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes"><b>Drive Properties:</b></property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata". Must be shell-escaped.</property>
|
||||
<property name="tooltip" translatable="yes">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata". Must be shell-escaped.</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label12">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">Device name (for example, "/dev/sda")</property>
|
||||
<property name="tooltip" translatable="yes">Device name (for example, "/dev/sda")</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">De_vice: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="device_options_parameters_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata".</property>
|
||||
<property name="tooltip" translatable="yes">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata".</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Parameters: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
@@ -445,19 +441,44 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="device_options_parameter_entry">
|
||||
<widget class="GtkLabel" id="device_options_parameters_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata". Must be shell-escaped.</property>
|
||||
<property name="tooltip" translatable="yes">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata". Must be shell-escaped.</property>
|
||||
<property name="tooltip_text">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata".</property>
|
||||
<property name="tooltip" translatable="yes">Smartctl parameters for this device. For example, to use older smartctl versions with libata devices, use "-d ata".</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Parameters: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label12">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip_text">Device name (for example, "/dev/sda")</property>
|
||||
<property name="tooltip" translatable="yes">Device name (for example, "/dev/sda")</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">De_vice: </property>
|
||||
<property name="use_underline">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label9">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes"><b>Drive Properties:</b></property>
|
||||
<property name="use_markup">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
||||
Reference in New Issue
Block a user