"""Windows shell resources."""
[docs]
class ControlPanelItemDefinition:
"""Windows control panel item definition.
Attributes:
alternate_module_names (list[str]): alternate module names.
identifier (str): identifier.
module_name (str): module name.
name (str): name.
windows_versions (list[str]): Windows versions.
"""
[docs]
def __init__(self):
"""Initializes a Windows control panel item definition."""
super().__init__()
self.alternate_module_names = []
self.identifier = None
self.module_name = None
self.name = None
self.windows_versions = []
[docs]
class KnownFolderDefinition:
"""Windows known folder definition.
Attributes:
alternate_display_names (list[str]): alternate display names.
csidl (list[str]): CSIDLs that correspond to the known folder.
default_path (str): default path.
display_name (str): display name.
identifier (str): identifier.
legacy_default_path (str): legacy default path.
legacy_display_name (str): legacy display name.
name (str): name.
windows_versions (list[str]): Windows versions.
"""
[docs]
def __init__(self):
"""Initializes a Windows known folder definition."""
super().__init__()
self.alternate_display_names = []
self.csidl = []
self.default_path = None
self.display_name = None
self.identifier = None
self.legacy_display_name = None
self.legacy_default_path = None
self.name = None
self.windows_versions = []
[docs]
def Merge(self, other):
"""Merges the values of another known folder into the current one.
Args:
other (KnownFolderDefinition): known folder definition to merge values
from.
Raises:
ValueError: if the known folders cannot be merged.
"""
if self.identifier != other.identifier:
raise ValueError("Known folder identifier mismatch.")
if not self.default_path:
self.default_path = other.default_path
elif other.default_path and self.default_path != other.default_path:
raise ValueError("Known folder default path mismatch.")
if not self.display_name:
self.display_name = other.display_name
elif (
other.display_name
and other.display_name not in self.alternate_display_names
):
self.alternate_display_names.append(other.display_name)
if not self.legacy_display_name:
self.legacy_display_name = other.legacy_display_name
elif (
other.legacy_display_name
and self.legacy_display_name != other.legacy_display_name
):
raise ValueError("Known folder legacy display name mismatch.")
if not self.legacy_default_path:
self.legacy_default_path = other.legacy_default_path
elif (
other.legacy_default_path
and self.legacy_default_path != other.legacy_default_path
):
raise ValueError("Known folder legacy default path mismatch.")
if not self.name:
self.name = other.name
elif other.name and self.name != other.name:
raise ValueError("Known folder name mismatch.")
alternate_display_names = set(self.alternate_display_names)
alternate_display_names.update(other.alternate_display_names)
self.alternate_display_names = list(alternate_display_names)
csidl = set(self.csidl)
csidl.update(other.csidl)
self.csidl = list(csidl)
windows_versions = set(self.windows_versions)
windows_versions.update(other.windows_versions)
self.windows_versions = list(windows_versions)
[docs]
class ShellFolderDefinition:
"""Windows shell folder definition.
Attributes:
alternate_names (list[str]): alternate names.
class_name (str): class name.
identifier (str): identifier.
name (str): name.
windows_versions (list[str]): Windows versions.
"""
[docs]
def __init__(self):
"""Initializes a Windows shell folder definition."""
super().__init__()
self.alternate_names = []
self.class_name = None
self.identifier = None
self.name = None
self.windows_versions = []