diff options
author | Leandro Pereira <leandro@hardinfo.org> | 2017-08-14 09:52:22 -0700 |
---|---|---|
committer | Leandro Pereira <leandro@hardinfo.org> | 2017-08-14 09:52:22 -0700 |
commit | 790e68cd6a81e4829706965e390afee3df377964 (patch) | |
tree | c43c887f6583271fe349e402a09f561007a2b94d | |
parent | a461a29bd60928e14cc8ff311734ccd1dae5ffd4 (diff) |
Begin conversion of Computer module to use struct Info
-rw-r--r-- | modules/computer.c | 394 |
1 files changed, 176 insertions, 218 deletions
diff --git a/modules/computer.c b/modules/computer.c index b8c5ac3f..22f7fbc0 100644 --- a/modules/computer.c +++ b/modules/computer.c @@ -16,13 +16,14 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <config.h> +#include <gtk/gtk.h> +#include <stdarg.h> #include <stdlib.h> #include <string.h> -#include <gtk/gtk.h> -#include <config.h> -#include <time.h> #include <string.h> #include <sys/stat.h> +#include <time.h> #include <hardinfo.h> #include <iconcache.h> @@ -31,21 +32,22 @@ #include <vendor.h> #include "computer.h" +#include "info.h" /* Callbacks */ -gchar *callback_summary(); -gchar *callback_os(); -gchar *callback_modules(); -gchar *callback_boots(); -gchar *callback_locales(); -gchar *callback_fs(); -gchar *callback_display(); -gchar *callback_network(); -gchar *callback_users(); -gchar *callback_groups(); -gchar *callback_env_var(); +gchar *callback_summary(void); +gchar *callback_os(void); +gchar *callback_modules(void); +gchar *callback_boots(void); +gchar *callback_locales(void); +gchar *callback_fs(void); +gchar *callback_display(void); +gchar *callback_network(void); +gchar *callback_users(void); +gchar *callback_groups(void); +gchar *callback_env_var(void); #if GLIB_CHECK_VERSION(2,14,0) -gchar *callback_dev(); +gchar *callback_dev(void); #endif /* GLIB_CHECK_VERSION(2,14,0) */ /* Scan callbacks */ @@ -81,6 +83,7 @@ static ModuleEntry entries[] = { {NULL}, }; + gchar *module_list = NULL; Computer *computer = NULL; @@ -282,7 +285,7 @@ void scan_dev(gboolean reload) SCAN_END(); } -gchar *callback_dev() +gchar *callback_dev(void) { return g_strdup_printf( "[$ShellParam$]\n" @@ -460,221 +463,176 @@ gchar *computer_get_virtualization(void) return detect_machine_type(); } -gchar *callback_summary() -{ - gchar *processor_name, *alsa_cards; - gchar *input_devices, *printers; - gchar *storage_devices, *summary; - gchar *virt; - - processor_name = module_call_method("devices::getProcessorName"); - alsa_cards = computer_get_alsacards(computer); - input_devices = module_call_method("devices::getInputDevices"); - printers = module_call_method("devices::getPrinters"); - storage_devices = module_call_method("devices::getStorageDevices"); - virt = computer_get_virtualization(); - - summary = g_strdup_printf("[$ShellParam$]\n" - "UpdateInterval$%s=1000\n" - "UpdateInterval$%s=1000\n" - "#ReloadInterval=5000\n" - "[%s]\n" -/*Processor*/ "%s=%s\n" -/*Memory*/ "%s=...\n" -/*Machine Type*/ "%s=%s\n" -/*Operating Sys*/ "%s=%s\n" -/*User Name*/ "%s=%s\n" -/*Date/Time*/ "%s=...\n" - "[%s]\n" -/*Resolution*/ "%s=%dx%d %s\n" -/*OpenGL Rend*/ "%s=%s\n" -/*X11 Vendor*/ "%s=%s\n" - "\n%s\n" -/*Input Devices*/ "[%s]\n%s\n" - "\n%s\n" - "\n%s\n", - - /* Update Intervals */ - _("Memory"), - _("Date/Time"), - - _("Computer"), - _("Processor"), processor_name, - _("Memory"), - _("Machine Type"), virt, - _("Operating System"), computer->os->distro, - _("User Name"), computer->os->username, - _("Date/Time"), - _("Display"), - _("Resolution"), - computer->display->width, computer->display->height, - _(/*/label for resolution */ "pixels"), - _("OpenGL Renderer"), computer->display->ogl_renderer, - _("X11 Vendor"), computer->display->vendor, - alsa_cards, - _("Input Devices"), - input_devices, printers, storage_devices); - - g_free(processor_name); - g_free(alsa_cards); - g_free(input_devices); - g_free(printers); - g_free(storage_devices); - g_free(virt); - - return summary; -} - -gchar *callback_os() -{ - return g_strdup_printf("[$ShellParam$]\n" - "UpdateInterval$%s=10000\n" - "UpdateInterval$%s=1000\n" - "UpdateInterval$%s=1000\n" - - "[%s]\n" -/*Kernel*/ "%s=%s\n" -/*Version*/ "%s=%s\n" -/*C Library*/ "%s=%s\n" -/*Distribution*/ "%s=%s\n" - "[%s]\n" -/*Computer Name*/ "%s=%s\n" -/*User Name*/ "%s=%s\n" -/*#Language*/ "%s=%s\n" -/*Home Dir*/ "%s=%s\n" -/*Desktop Env*/ "%s=%s\n" - "[%s]\n" -/*Uptime*/ "%s=...\n" -/*Load Average*/ "%s=...\n" -/*Entropy*/ "%s=...\n", - - /* Update Intervals */ - _("Uptime"), - _("Available entropy in /dev/random"), - _("Load Average"), - - _("Version"), - _("Kernel"), computer->os->kernel, - _("Version"), computer->os->kernel_version, - _("C Library"), computer->os->libc, - _("Distribution"), computer->os->distro, - _("Current Session"), - _("Computer Name"), computer->os->hostname, - _("User Name"), computer->os->username, - _("Language"), computer->os->language, - _("Home Directory"), computer->os->homedir, - _("Desktop Environment"), computer->os->desktop, - _("Misc"), - _("Uptime"), - _("Load Average"), - _("Available entropy in /dev/random") ); -} - -gchar *callback_modules() +gchar *callback_summary(void) { - return g_strdup_printf("[%s]\n" - "%s" - "[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=%s\n" /* Name */ - "ColumnTitle$Value=%s\n" /* Description */ - "ShowColumnHeaders=true\n", - _("Loaded Modules"), module_list, - _("Name"), _("Description") ); + struct Info *info = info_new(); + + info_add_group(info, _("Computer"), + info_field(_("Processor"), + idle_free(module_call_method("devices::getProcessorName"))), + info_field_update(_("Memory"), 1000), + info_field(_("Machine Type"), + idle_free(computer_get_virtualization())), + info_field(_("Operating System"), computer->os->distro), + info_field(_("User Name"), computer->os->username), + info_field_update(_("Date/Time"), 1000), + info_field_last()); + + info_add_group(info, _("Display"), + info_field(_("Resolution"), + idle_free(g_strdup_printf(_("%dx%d pixels" /* label for resolution */), + computer->display->width, computer->display->height))), + info_field(_("OpenGL Renderer"), computer->display->ogl_renderer), + info_field(_("X11 Vendor"), computer->display->vendor), + info_field_last()); + + info_add_computed_group(info, _("Audio Devices"), + idle_free(computer_get_alsacards(computer))); + info_add_computed_group(info, _("Input Devices"), + idle_free(module_call_method("devices::getInputDevices"))); + info_add_computed_group(info, _("Printers"), + idle_free(module_call_method("devices::getPrinters"))); + info_add_computed_group(info, _("Storage"), + idle_free(module_call_method("devices::getStorageDevices"))); + + return info_flatten(info); } -gchar *callback_boots() +gchar *callback_os(void) { - return g_strdup_printf("[$ShellParam$]\n" - "ColumnTitle$TextValue=%s\n" /* Date & Time */ - "ColumnTitle$Value=%s\n" /* Kernel Version */ - "ShowColumnHeaders=true\n" - "\n%s", - _("Date & Time"), _("Kernel Version"), - computer->os->boots); + struct Info *info = info_new(); + + info_add_group(info, _("Version"), + info_field(_("Kernel"), computer->os->kernel), + info_field(_("Version"), computer->os->kernel_version), + info_field(_("C Library"), computer->os->libc), + info_field(_("Distribution"), computer->os->distro), + info_field_last()); + + info_add_group(info, _("Current Session"), + info_field(_("Computer Name"), computer->os->hostname), + info_field(_("User Name"), computer->os->username), + info_field(_("Language"), computer->os->language), + info_field(_("Home Directory"), computer->os->homedir), + info_field_last()); + + info_add_group(info, _("Misc"), + info_field_update(_("Uptime"), 1000), + info_field_update(_("Load Average"), 10000), + info_field_update(_("Available entropy in /dev/random"), 1000), + info_field_last()); + + return info_flatten(info); } -gchar *callback_locales() +gchar *callback_modules(void) { - return g_strdup_printf("[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=%s\n" /* Language Code */ - "ColumnTitle$Value=%s\n" /* Name */ - "ShowColumnHeaders=true\n" - "[%s]\n%s", - _("Language Code"), _("Name"), - _("Available Languages"), computer->os->languages ); + struct Info *info = info_new(); + + info_add_computed_group(info, _("Loaded Modules"), module_list); + + info_set_column_title(info, "TextValue", _("Name")); + info_set_column_title(info, "Value", _("Description")); + info_set_column_headers_visible(info, TRUE); + info_set_view_type(info, SHELL_VIEW_DUAL); + + return info_flatten(info); } -gchar *callback_fs() +gchar *callback_boots(void) { - return g_strdup_printf("[$ShellParam$]\n" - "ViewType=4\n" - "ReloadInterval=5000\n" - "Zebra=1\n" - "NormalizePercentage=false\n" - "ColumnTitle$Extra1=%s\n" /* Mount Point */ - "ColumnTitle$Progress=%s\n" /* Usage */ - "ColumnTitle$TextValue=%s\n" /* Device */ - "ShowColumnHeaders=true\n" - "[%s]\n%s\n", - _("Mount Point"), _("Usage"), _("Device"), - _("Mounted File Systems"), fs_list ); + struct Info *info = info_new(); + + info_add_computed_group(info, _("Boots"), computer->os->boots); + + info_set_column_title(info, "TextValue", _("Date & Time")); + info_set_column_title(info, "Value", _("Kernel Version")); + info_set_column_headers_visible(info, TRUE); + + return info_flatten(info); } -gchar *callback_display() +gchar *callback_locales(void) { - return g_strdup_printf("[%s]\n" - "%s=%dx%d %s\n" - "%s=%s\n" - "%s=%s\n" - "[%s]\n" - "%s" - "[%s]\n" - "%s" - "[%s]\n" - "%s=%s\n" - "%s=%s\n" - "%s=%s\n" - "%s=%s\n", - _("Display"), - _("Resolution"), - computer->display->width, - computer->display->height, - _(/*/ Resolution WxH unit */ "pixels"), - _("Vendor"), computer->display->vendor, - _("Version"), computer->display->version, - _("Monitors"), - computer->display->monitors, - _("Extensions"), - computer->display->extensions, - _("OpenGL"), - _("Vendor"), computer->display->ogl_vendor, - _("Renderer"), computer->display->ogl_renderer, - _("Version"), computer->display->ogl_version, - _("Direct Rendering"), computer->display->dri ? _("Yes") : _("No") - ); -} - -gchar *callback_users() -{ - return g_strdup_printf("[$ShellParam$]\n" - "ReloadInterval=10000\n" - "ViewType=1\n" - "[%s]\n" - "%s\n", _("Users"), users); -} - -gchar *callback_groups() -{ - return g_strdup_printf("[$ShellParam$]\n" - "ReloadInterval=10000\n" - "ColumnTitle$TextValue=%s\n" /* Name */ - "ColumnTitle$Value=%s\n" /* Group ID */ - "ShowColumnHeaders=true\n" - "[%s]\n%s\n", - _("Name"), _("Group ID"), - _("Groups"), groups); + struct Info *info = info_new(); + + info_add_computed_group(info, _("Available Languages"), computer->os->languages); + + info_set_column_title(info, "TextValue", _("Language Code")); + info_set_column_title(info, "Value", _("Name")); + info_set_view_type(info, SHELL_VIEW_DUAL); + info_set_column_headers_visible(info, TRUE); + + return info_flatten(info); +} + +gchar *callback_fs(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Mounted File Systems"), fs_list); + + info_set_column_title(info, "Extra1", _("Mount Point")); + info_set_column_title(info, "Progress", _("Usage")); + info_set_column_title(info, "TextValue", _("Device")); + info_set_column_headers_visible(info, TRUE); + info_set_view_type(info, SHELL_VIEW_PROGRESS_DUAL); + info_set_zebra_visible(info, TRUE); + info_set_normalize_percentage(info, FALSE); + + return info_flatten(info); +} + +gchar *callback_display(void) +{ + struct Info *info = info_new(); + + info_add_group(info, _("Display"), + info_field(_("Resolution"), + idle_free(g_strdup_printf(_("%dx%d pixels" /* resolution WxH unit */), + computer->display->width, computer->display->height))), + info_field(_("Vendor"), computer->display->vendor), + info_field(_("Version"), computer->display->version), + info_field_last()); + + info_add_computed_group(info, _("Monitors"), computer->display->monitors); + + info_add_group(info, _("OpenGL"), + info_field(_("Vendor"), computer->display->ogl_vendor), + info_field(_("Renderer"), computer->display->ogl_renderer), + info_field(_("Version"), computer->display->ogl_version), + info_field(_("Direct Rendering"), + computer->display->dri ? _("Yes") : _("No")), + info_field_last()); + + info_add_computed_group(info, _("Extensions"), computer->display->extensions); + + return info_flatten(info); +} + +gchar *callback_users(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Users"), users); + info_set_view_type(info, SHELL_VIEW_DUAL); + info_set_reload_interval(info, 10000); + + return info_flatten(info); +} + +gchar *callback_groups(void) +{ + struct Info *info = info_new(); + + info_add_computed_group(info, _("Group"), groups); + + info_set_column_title(info, "TextValue", _("Name")); + info_set_column_title(info, "Value", _("Group ID")); + info_set_column_headers_visible(info, TRUE); + info_set_reload_interval(info, 10000); + + return info_flatten(info); } gchar *get_os_kernel(void) |