Walks the v2 polish punch list against MainWindow. - Theme button tooltip is now "Theme (System / Dark / Light)" per the v2 shape brief, replacing the previous "Toggle theme (Ctrl+T)". - Participants table column widths match spec: Output 130px (was 150), ISO pill 100px (was 110). The 24px state LED, 110px audio meter, and 52px row height already matched. The 106px Preview thumbnail column and 32px gear-button column are intentional deviations (live thumbs were restored at 4944de5; per-ISO override gear added at the same time) and are now called out in the column-spec comment so a future reader doesn't try to "fix" them. - Empty-state placeholder finally renders when ParticipantCount == 0: mono sentence "no ndi sources yet — open teams and start a meeting" + a tertiary Refresh discovery button — exactly the copy specified by the shape brief's empty-states section. CountToVisibilityConverter is now declared in MainWindow.Resources (it shipped as a class but was never registered). - OnClosing wraps WindowStateStore.Save in a try/catch so a serialization or filesystem fault on shutdown can never block the window from closing. Save itself already swallows its own IO errors; this is defense-in-depth for anything that escapes. - MessageBox copy in MainWindow.xaml.cs (Hide/show Teams, Launch Teams, Stop Teams) moves to Properties/Strings.resx + a hand-written Properties/Strings.Designer.cs accessor. ResourceManager reads it by basename "TeamsISO.App.Properties.Strings"; LogicalName is set on the EmbeddedResource so the manifest name is predictable regardless of how MSBuild would otherwise compute it. Future-localization seam. OnLaunchTeamsRightClick's confirmation dialog is intentional — it guards a destructive mid-show action — and the code-behind comment now says so; the palette also offers Stop Teams as the keyboard surface, so the right-click affordance isn't the only one. Build clean (0 warnings, 0 errors); 160 tests still pass (56 App + 104 Engine, Category!=ndi&requires!=ndi filter). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
75 lines
3.4 KiB
XML
75 lines
3.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<root>
|
|
<!--
|
|
User-facing English strings shown by MainWindow's MessageBox prompts.
|
|
Pulled out of code-behind so a future localizer has a single seam to
|
|
translate. Strings.Designer.cs is a hand-rolled accessor backed by
|
|
ResourceManager — no Visual-Studio auto-regeneration needed.
|
|
-->
|
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
<xsd:element name="root" msdata:IsDataSet="true">
|
|
<xsd:complexType>
|
|
<xsd:choice maxOccurs="unbounded">
|
|
<xsd:element name="data">
|
|
<xsd:complexType>
|
|
<xsd:sequence>
|
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
</xsd:sequence>
|
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
<xsd:attribute ref="xml:space" />
|
|
</xsd:complexType>
|
|
</xsd:element>
|
|
<xsd:element name="resheader">
|
|
<xsd:complexType>
|
|
<xsd:sequence>
|
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
</xsd:sequence>
|
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
</xsd:complexType>
|
|
</xsd:element>
|
|
</xsd:choice>
|
|
</xsd:complexType>
|
|
</xsd:element>
|
|
</xsd:schema>
|
|
<resheader name="resmimetype"><value>text/microsoft-resx</value></resheader>
|
|
<resheader name="version"><value>2.0</value></resheader>
|
|
<resheader name="reader"><value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader>
|
|
<resheader name="writer"><value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader>
|
|
|
|
<data name="HideShowTeams_Title" xml:space="preserve">
|
|
<value>TeamsISO — Hide / show Teams</value>
|
|
</data>
|
|
<data name="HideShowTeams_NotRunning_Message" xml:space="preserve">
|
|
<value>Microsoft Teams isn't running. Click the camera icon above to launch it first.</value>
|
|
</data>
|
|
|
|
<data name="LaunchTeams_Title" xml:space="preserve">
|
|
<value>TeamsISO — Launch Teams</value>
|
|
</data>
|
|
<data name="LaunchTeams_Failed_MessageFormat" xml:space="preserve">
|
|
<value>Could not launch Microsoft Teams.
|
|
|
|
{0}</value>
|
|
<comment>{0} = error string from TeamsLauncher.TryLaunch.</comment>
|
|
</data>
|
|
|
|
<data name="StopTeams_Title" xml:space="preserve">
|
|
<value>TeamsISO — Stop Teams</value>
|
|
</data>
|
|
<data name="StopTeams_Confirm_Message" xml:space="preserve">
|
|
<value>Microsoft Teams is currently running.
|
|
|
|
Close all Teams windows now?</value>
|
|
</data>
|
|
<data name="StopTeams_NoneResponded" xml:space="preserve">
|
|
<value>No Teams windows responded to close.</value>
|
|
</data>
|
|
<data name="StopTeams_AskedFormat" xml:space="preserve">
|
|
<value>Sent close to {0} Teams window(s); some may still be exiting.</value>
|
|
<comment>{0} = number of windows the launcher asked to close.</comment>
|
|
</data>
|
|
</root>
|