Repository navigation
Add a details pane for the selected package - #493
Merged
Merged
Conversation
This class provides insights into driver packages, including version grouping and device associations.
This file contains the implementation of the DriverDetailsPanel class, which displays details about a selected driver package, including its status, notes, and various attributes.
Show the selected package next to the list: its provider, version and date, tags for old version / no device / boot critical / extension, a few notes on whether it may still be needed (for example "A newer version, 12.19.1.37, is in use by Intel(R) Ethernet Connection"), its main fields, and a link that opens its folder. The old-version check uses the same grouping as Select Old Driver(s), now moved to Utils/DriverInsights.cs so both stay in sync. The button selects exactly what it did before. The panel is built in code after InitializeComponent(), like the unused driver warning option, since its strings have no generated Language properties. It can be hidden from Options > Show Details Panel. The new strings are translated for all 21 languages.
Contributor
Author
indep-arg
marked this pull request as ready for review
November 1, 2026 00:47
Owner
|
Move the "Details" Panel below the "Operations"? |
There was a problem hiding this comment.
🟡 Changes recommended
The newest-package match can prefer a disconnected device over a connected one, causing the note to omit the device actually using the driver depending on enumeration order.
1 open issue
1 file not reviewed
Rapr/Properties/Settings.Designer.cs: Generated file
What changed in this PR
Brings the details-pane concept from #490 into the existing WinForms app without adding dependencies, giving users more context about the selected driver package.
Changes:
- Adds package details, status tags, explanatory notes, and a folder link.
- Shares version grouping with “Select Old Driver(s)” and adds grouping and notes tests.
- Adds a saved visibility option and localized pane strings.
| File | Description |
|---|---|
| RaprTests/Utils/DriverInsightsTests.cs | Tests version grouping and package notes. |
| Rapr/Utils/DriverInsights.cs | Centralizes version grouping and package insights. |
| Rapr/Properties/Settings.settings | Defines the saved pane visibility setting. |
| Rapr/Properties/Settings.Designer.cs | Exposes the pane visibility setting. |
| Rapr/Lang/Language.zh-TW.resx | Adds Traditional Chinese pane strings. |
| Rapr/Lang/Language.zh-CN.resx | Adds Simplified Chinese pane strings. |
| Rapr/Lang/Language.vi-VN.resx | Adds Vietnamese pane strings. |
| Rapr/Lang/Language.uk-UA.resx | Adds Ukrainian pane strings. |
| Rapr/Lang/Language.tt-RU.resx | Adds Tatar pane strings. |
| Rapr/Lang/Language.tr-TR.resx | Adds Turkish pane strings. |
| Rapr/Lang/Language.sk-SK.resx | Adds Slovak pane strings. |
| Rapr/Lang/Language.ru-RU.resx | Adds Russian pane strings. |
| Rapr/Lang/Language.resx | Adds base English pane strings. |
| Rapr/Lang/Language.pt-BR.resx | Adds Brazilian Portuguese pane strings. |
| Rapr/Lang/Language.pl-PL.resx | Adds Polish pane strings. |
| Rapr/Lang/Language.nb-NO.resx | Adds Norwegian Bokmål pane strings. |
| Rapr/Lang/Language.ko-KR.resx | Adds Korean pane strings. |
| Rapr/Lang/Language.ja-JP.resx | Adds Japanese pane strings. |
| Rapr/Lang/Language.it-IT.resx | Adds Italian pane strings. |
| Rapr/Lang/Language.hu-HU.resx | Adds Hungarian pane strings. |
| Rapr/Lang/Language.he-IL.resx | Adds Hebrew pane strings. |
| Rapr/Lang/Language.fr-FR.resx | Adds French pane strings. |
| Rapr/Lang/Language.es-ES.resx | Adds Spanish pane strings. |
| Rapr/Lang/Language.el-GR.resx | Adds Greek pane strings. |
| Rapr/Lang/Language.de-DE.resx | Adds German pane strings. |
| Rapr/Lang/Language.ar-SA.resx | Adds Arabic pane strings. |
| Rapr/DSEForm.cs | Integrates the pane, visibility option, and shared grouping. |
| Rapr/Controls/DriverDetailsPanel.cs | Implements package details, tags, notes, and folder navigation. |
Review effort: Balanced
Contributor
Author
Yep, easy fix. Give me a few mins. |
Put Operations and the details pane in one column, Operations on top,
so the pane no longer takes width from the list. The Operations box
sets the column width. When the pane is turned off, Operations fills
the column again as before.
Also open the folder itself when a package has no INF name, since
Path.Combine throws on null, and decide whether to fill the pane from
the setting rather than Visible, which is false until the window is
shown.
When an older copy has the same version as the newest and only an
earlier date, the note said "A newer version, 1.0, ..." on a 1.0
package. Show the date next to the version in that case.
Use the published name as the title when the INF name is empty, and
skip the subtitle line when there's nothing to show.
One test for a newest version installed for a disconnected and a
connected device, and one for an older copy that only differs by date.
When several packages share the newest version and date, the note
named the first one with a device, even if that device was not
connected and another one was. Prefer a connected device, then any
device, then the first package.
indep-arg
marked this pull request as draft
November 1, 2026 02:27
The designer sizes the Operations box and its button panel to fill the
window's height. Their AutoSizeMode is the default GrowOnly, so in the
new column they kept that height and squeezed the details pane into a
strip at the bottom. Use GrowAndShrink for both.
GrowAndShrink was not enough: in the TableLayoutPanel column the
Operations box still kept the full height the designer gives it and
the details pane stayed squeezed at the bottom.
Use a plain docking panel instead. The box is docked to the top with
its height measured from the button panel, which also follows buttons
shown or hidden by driver store type, and the pane fills the rest.
When the pane is turned off, the box fills the column as before.
indep-arg
marked this pull request as ready for review
November 1, 2026 02:43
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Following up on #490: this brings the details pane from that proposal to the current WinForms app, with no new dependencies.
When one package is selected, the pane shows:
The "old version" tag follows the same rule as Select Old Driver(s). I moved that grouping to
Utils/DriverInsights.csso the button and the pane can't disagree; the button selects exactly what it did before.The pane sits between the list and the Operations box. It can be turned off from Options > Show Details Pane, and the setting is saved. Like the unused driver warning option, it is created in code after
InitializeComponent()because the new strings have no generatedLanguageproperties. The strings are translated for all 21 languages.I left out Export and Delete buttons in the pane for now. Delete in the main window works on the checked packages, so a second Delete for the selected one could be confusing. If you think they'd be useful, I can add them in a follow-up.
Tests for the grouping and the notes are in
RaprTests/Utils/DriverInsightsTests.cs.