mirror of
https://github.com/rozniak/xfce-winxp-tc.git
synced 2026-01-26 11:39:44 +00:00
Enhancement: Fixes #370, sysdm - Fill in SKU details
This commit is contained in:
@@ -16,26 +16,80 @@ set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
|
||||
include(../../packaging/cmake-inc/common/CMakeLists.txt)
|
||||
include(../../packaging/cmake-inc/packaging/CMakeLists.txt)
|
||||
|
||||
# Add target
|
||||
# Set up variables
|
||||
#
|
||||
set(GENTAG_TOOL ${REPO_ROOT}/tools/bldutils/gentag/gentag.sh)
|
||||
set(TAG_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bldtag)
|
||||
set(OUT_PATH_RELEASE ${CMAKE_BINARY_DIR}/release)
|
||||
set(GENTAG_TOOL ${REPO_ROOT}/tools/bldutils/gentag/gentag.sh)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${TAG_OUTPUT_PATH}
|
||||
execute_process(
|
||||
COMMAND bash ${GENTAG_TOOL}
|
||||
WORKING_DIRECTORY ${PROJECT_ROOT}
|
||||
COMMAND bash ${GENTAG_TOOL} > ${TAG_OUTPUT_PATH}
|
||||
VERBATIM
|
||||
OUTPUT_VARIABLE REL_BUILD_TAG
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
gen-buildtag ALL
|
||||
DEPENDS
|
||||
${TAG_OUTPUT_PATH}
|
||||
)
|
||||
if (${WINTC_SKU} MATCHES "^xpclient-(.+)")
|
||||
set(REL_SKU_NAME "Microsoft Windows XP")
|
||||
set(REL_SKU_TAGLINE "Version 2002")
|
||||
|
||||
if (${CMAKE_MATCH_1} STREQUAL "per")
|
||||
set(REL_SKU_EDITION "Home Edition")
|
||||
elseif (${CMAKE_MATCH_1} STREQUAL "pro")
|
||||
if (
|
||||
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64" OR
|
||||
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64"
|
||||
)
|
||||
set(REL_SKU_EDITION "Professional x64 Edition")
|
||||
set(REL_SKU_TAGLINE "Version 2003")
|
||||
elseif (
|
||||
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ia64" OR
|
||||
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" OR
|
||||
${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv8"
|
||||
)
|
||||
set(REL_SKU_EDITION "64-Bit Edition")
|
||||
else()
|
||||
set(REL_SKU_EDITION "Professional")
|
||||
endif()
|
||||
elseif (${CMAKE_MATCH_1} STREQUAL "mce")
|
||||
set(REL_SKU_EDITION "Media Center Edition 2005")
|
||||
elseif (${CMAKE_MATCH_1} STREQUAL "tabletpc")
|
||||
set(REL_SKU_EDITION "Tablet PC Edition 2005")
|
||||
elseif (${CMAKE_MATCH_1} STREQUAL "embedded")
|
||||
set(REL_SKU_EDITION "Embedded")
|
||||
endif()
|
||||
elseif (${WINTC_SKU} MATCHES "^dnsrv(_r2)?-(.+)")
|
||||
set(REL_SKU_NAME "Microsoft Windows Server 2003")
|
||||
|
||||
if ("${CMAKE_MATCH_1}" STREQUAL "_r2")
|
||||
set(REL_SKU_NAME "Microsoft Windows Server 2003 R2")
|
||||
endif()
|
||||
|
||||
if (${CMAKE_MATCH_2} STREQUAL "std")
|
||||
set(REL_SKU_EDITION "Standard Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "ent")
|
||||
set(REL_SKU_EDITION "Enterprise Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "dtc")
|
||||
set(REL_SKU_EDITION "Datacenter Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "app")
|
||||
set(REL_SKU_EDITION "Appliance Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "bla")
|
||||
set(REL_SKU_EDITION "Web Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "sbs")
|
||||
set(REL_SKU_EDITION "Small Business Server")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "ccs")
|
||||
set(REL_SKU_EDITION "Compute Cluster Edition")
|
||||
elseif (${CMAKE_MATCH_2} STREQUAL "ss")
|
||||
set(REL_SKU_EDITION "Storage Server")
|
||||
endif()
|
||||
elseif (${WINTC_SKU} STREQUAL "homesrv")
|
||||
set(REL_SKU_NAME "Microsoft Windows Home Server")
|
||||
endif()
|
||||
|
||||
set(REL_PRETTY_NAME "${REL_SKU_NAME} ${REL_SKU_EDITION}")
|
||||
|
||||
# Installation
|
||||
#
|
||||
wintc_configure_and_install_packaging()
|
||||
|
||||
install(FILES ${TAG_OUTPUT_PATH} DESTINATION ${WINTC_ASSETS_INSTALL_DIR})
|
||||
configure_file(release.in ${OUT_PATH_RELEASE} @ONLY)
|
||||
|
||||
install(FILES ${OUT_PATH_RELEASE} DESTINATION ${WINTC_ASSETS_INSTALL_DIR})
|
||||
|
||||
6
base/bldtag/release.in
Normal file
6
base/bldtag/release.in
Normal file
@@ -0,0 +1,6 @@
|
||||
[Version]
|
||||
PrettyName=@REL_PRETTY_NAME@
|
||||
SkuName=@REL_SKU_NAME@
|
||||
SkuEdition=@REL_SKU_EDITION@
|
||||
SkuTagline=@REL_SKU_TAGLINE@
|
||||
BuildTag=@REL_BUILD_TAG@
|
||||
@@ -16,11 +16,39 @@
|
||||
*/
|
||||
gboolean wintc_build_is_debug(void);
|
||||
|
||||
/**
|
||||
* Retrieves the 'pretty name' of the installed version of WinTC.
|
||||
*
|
||||
* @return The 'pretty name' of the installed version of WinTC.
|
||||
*/
|
||||
const gchar* wintc_build_get_pretty_name(void);
|
||||
|
||||
/**
|
||||
* Retrieves the edition of the installed version of WinTC.
|
||||
*
|
||||
* @return The edition of the installed version of WinTC.
|
||||
*/
|
||||
const gchar* wintc_build_get_sku_edition(void);
|
||||
|
||||
/**
|
||||
* Retrieves the name of the installed version of WinTC.
|
||||
*
|
||||
* @return The name of the installed version of WinTC.
|
||||
*/
|
||||
const gchar* wintc_build_get_sku_name(void);
|
||||
|
||||
/**
|
||||
* Retrieves the build tag identifying the installed version of WinTC.
|
||||
*
|
||||
* @return The WinTC build tag (caller is responsible for freeing).
|
||||
* @return The WinTC build tag.
|
||||
*/
|
||||
gchar* wintc_build_get_tag(void);
|
||||
const gchar* wintc_build_get_tag(void);
|
||||
|
||||
/**
|
||||
* Retrieves the tagline of the installed version of WinTC.
|
||||
*
|
||||
* @return The tagline of the installed version of WinTC.
|
||||
*/
|
||||
const gchar* wintc_build_get_tagline(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,28 @@
|
||||
#include <glib.h>
|
||||
|
||||
#include "../public/errors.h"
|
||||
#include "../public/version.h"
|
||||
|
||||
//
|
||||
// PRIVATE CONSTANTS
|
||||
//
|
||||
static const gchar* S_KEYFILE_GROUP = "Version";
|
||||
|
||||
//
|
||||
// STATIC DATA
|
||||
//
|
||||
static gboolean s_keyfile_loaded;
|
||||
static GKeyFile* s_keyfile_version;
|
||||
|
||||
//
|
||||
// FORWARD DECLARATIONS
|
||||
//
|
||||
gboolean ensure_keyfile(void);
|
||||
gchar* get_keyfile_entry(
|
||||
const gchar* key,
|
||||
const gchar* default_str
|
||||
);
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
@@ -14,21 +35,110 @@ gboolean wintc_build_is_debug(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
gchar* wintc_build_get_tag(void)
|
||||
const gchar* wintc_build_get_pretty_name(void)
|
||||
{
|
||||
gchar* build_tag = NULL;
|
||||
static gchar* pretty_name = NULL;
|
||||
|
||||
if (
|
||||
!g_file_get_contents(
|
||||
"@CMAKE_INSTALL_PREFIX@/@WINTC_ASSETS_INSTALL_DIR@/bldtag",
|
||||
&build_tag,
|
||||
NULL,
|
||||
NULL
|
||||
)
|
||||
)
|
||||
if (!pretty_name)
|
||||
{
|
||||
build_tag = g_strdup_printf("%s", "no tag");
|
||||
pretty_name = get_keyfile_entry("PrettyName", "Unknown System");
|
||||
}
|
||||
|
||||
return pretty_name;
|
||||
}
|
||||
|
||||
const gchar* wintc_build_get_sku_edition(void)
|
||||
{
|
||||
static gchar* skued = NULL;
|
||||
|
||||
if (!skued)
|
||||
{
|
||||
skued = get_keyfile_entry("SkuEdition", "");
|
||||
}
|
||||
|
||||
return skued;
|
||||
}
|
||||
|
||||
const gchar* wintc_build_get_sku_name(void)
|
||||
{
|
||||
static gchar* skuname = NULL;
|
||||
|
||||
if (!skuname)
|
||||
{
|
||||
skuname = get_keyfile_entry("SkuName", "Unknown System");
|
||||
}
|
||||
|
||||
return skuname;
|
||||
}
|
||||
|
||||
const gchar* wintc_build_get_tag(void)
|
||||
{
|
||||
static gchar* build_tag = NULL;
|
||||
|
||||
if (!build_tag)
|
||||
{
|
||||
build_tag = get_keyfile_entry("BuildTag", "no tag");
|
||||
}
|
||||
|
||||
return build_tag;
|
||||
}
|
||||
|
||||
const gchar* wintc_build_get_tagline(void)
|
||||
{
|
||||
static gchar* skuver = NULL;
|
||||
|
||||
if (!skuver)
|
||||
{
|
||||
skuver = get_keyfile_entry("SkuTagline", "");
|
||||
}
|
||||
|
||||
return skuver;
|
||||
}
|
||||
|
||||
//
|
||||
// PRIVATE FUNCTIONS
|
||||
//
|
||||
gboolean ensure_keyfile(void)
|
||||
{
|
||||
GError* error = NULL;
|
||||
|
||||
if (s_keyfile_loaded)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!s_keyfile_version)
|
||||
{
|
||||
s_keyfile_version = g_key_file_new();
|
||||
}
|
||||
|
||||
s_keyfile_loaded =
|
||||
g_key_file_load_from_file(
|
||||
s_keyfile_version,
|
||||
"@CMAKE_INSTALL_PREFIX@/@WINTC_ASSETS_INSTALL_DIR@/release",
|
||||
G_KEY_FILE_NONE,
|
||||
&error
|
||||
);
|
||||
|
||||
wintc_log_error_and_clear(&error);
|
||||
|
||||
return s_keyfile_loaded;
|
||||
}
|
||||
|
||||
gchar* get_keyfile_entry(
|
||||
const gchar* key,
|
||||
const gchar* default_str
|
||||
)
|
||||
{
|
||||
if (ensure_keyfile())
|
||||
{
|
||||
return g_key_file_get_string(
|
||||
s_keyfile_version,
|
||||
S_KEYFILE_GROUP,
|
||||
key,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
return g_strdup_printf("%s", default_str);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="resource">/uk/oddmatics/wintc/cpl-sysdm/comphi.png</property>
|
||||
|
||||
<style>
|
||||
<class name="wintc-mt-lg" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -52,6 +56,10 @@
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">System:</property>
|
||||
<property name="xalign">0.0</property>
|
||||
|
||||
<style>
|
||||
<class name="wintc-mt-lg" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -60,11 +68,15 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<object class="GtkLabel" id="label-skuname">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="no">WINTC_PROJECT_NAME</property>
|
||||
<property name="xalign">0.0</property>
|
||||
|
||||
<style>
|
||||
<class name="wintc-ml-lg" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -73,11 +85,15 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<object class="GtkLabel" id="label-skued">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="no">WINTC_SKU</property>
|
||||
<property name="xalign">0.0</property>
|
||||
|
||||
<style>
|
||||
<class name="wintc-ml-lg" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -86,11 +102,15 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<object class="GtkLabel" id="label-skuver">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="no">Version 2002</property>
|
||||
<property name="xalign">0.0</property>
|
||||
|
||||
<style>
|
||||
<class name="wintc-ml-lg" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
||||
@@ -45,6 +45,10 @@ struct _WinTCCplSysdmWindow
|
||||
// UI
|
||||
//
|
||||
GtkWidget* notebook_main;
|
||||
|
||||
GtkWidget* label_skuname;
|
||||
GtkWidget* label_skued;
|
||||
GtkWidget* label_skuver;
|
||||
};
|
||||
|
||||
//
|
||||
@@ -121,8 +125,24 @@ static void wintc_cpl_sysdm_window_init(
|
||||
wintc_ctl_cpl_notebook_append_page_from_resource(
|
||||
GTK_NOTEBOOK(self->notebook_main),
|
||||
"/uk/oddmatics/wintc/cpl-sysdm/page-gen.ui",
|
||||
"label-skuname", &(self->label_skuname),
|
||||
"label-skued", &(self->label_skued),
|
||||
"label-skuver", &(self->label_skuver),
|
||||
NULL
|
||||
);
|
||||
|
||||
gtk_label_set_text(
|
||||
GTK_LABEL(self->label_skuname),
|
||||
wintc_build_get_sku_name()
|
||||
);
|
||||
gtk_label_set_text(
|
||||
GTK_LABEL(self->label_skued),
|
||||
wintc_build_get_sku_edition()
|
||||
);
|
||||
gtk_label_set_text(
|
||||
GTK_LABEL(self->label_skuver),
|
||||
wintc_build_get_tagline()
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -271,12 +271,11 @@ static gboolean wintc_desktop_window_draw(
|
||||
|
||||
if (!s_tag)
|
||||
{
|
||||
gchar* tag = wintc_build_get_tag();
|
||||
|
||||
s_tag =
|
||||
g_strdup_printf("For testing purposes only. Build %s", tag);
|
||||
|
||||
g_free(tag);
|
||||
g_strdup_printf(
|
||||
"For testing purposes only. Build %s",
|
||||
wintc_build_get_tag()
|
||||
);
|
||||
}
|
||||
|
||||
// Default to white, IDK if Windows changes this...
|
||||
|
||||
@@ -120,7 +120,6 @@ int main(
|
||||
|
||||
// Get kernel info
|
||||
//
|
||||
gchar* build_tag = wintc_build_get_tag();
|
||||
gchar* kernel_version;
|
||||
|
||||
uname(&kernel_info);
|
||||
@@ -129,7 +128,7 @@ int main(
|
||||
g_strdup_printf(
|
||||
"Version %s (%s)%s",
|
||||
kernel_info.release,
|
||||
build_tag,
|
||||
wintc_build_get_tag(),
|
||||
wintc_build_is_debug() ? " (Debug)" : ""
|
||||
);
|
||||
|
||||
@@ -215,7 +214,6 @@ int main(
|
||||
|
||||
// Clear mem
|
||||
//
|
||||
g_free(build_tag);
|
||||
g_free(kernel_version);
|
||||
g_free(system_stats);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user