Skip to content

Commit 4d00b9d

Browse files
committed
Right-click shortcut to view a mod's ships/weapons/hullmods/portraits.
1 parent fee8884 commit 4d00b9d

16 files changed

Lines changed: 305 additions & 691 deletions

File tree

assets/images/icon-hullmod.svg

Lines changed: 1 addition & 1 deletion
Loading

assets/images/icon-onslaught.svg

Lines changed: 1 addition & 1 deletion
Loading

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- Hullmod Viewer.
1212
- Dashboard: added edit button next to game launcher path to show that you can set a custom launch file (e.g. fr.bat).
1313
- Mods page: "Updates" group pinned to the top. May be configured/turned off.
14+
- Mods page: Right-click shortcut to view a mod's ships/weapons/hullmods/portraits.
1415
- Mods page: mod info tooltip on hovering the mod title.
1516
- Ships/Weapons/Portraits Viewers: "# filters active" indicator.
1617
- Fixed

lib/app_shell.dart

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:toastification/toastification.dart';
1212
import 'package:trios/catalog/mod_browser_page.dart';
1313
import 'package:trios/chipper/chipper_home.dart';
1414
import 'package:trios/dashboard/dashboard.dart';
15+
import 'package:trios/hullmodViewer/hullmods_page.dart';
1516
import 'package:trios/mod_manager/mods_grid_page.dart';
1617
import 'package:trios/models/version.dart';
1718
import 'package:trios/portraits/portraits_page.dart';
@@ -29,7 +30,6 @@ import 'package:trios/utils/extensions.dart';
2930
import 'package:trios/utils/logging.dart';
3031
import 'package:trios/utils/platform_specific.dart';
3132
import 'package:trios/vram_estimator/vram_estimator_page.dart';
32-
import 'package:trios/hullmodViewer/hullmods_page.dart';
3333
import 'package:trios/weaponViewer/weapons_page.dart';
3434
import 'package:trios/widgets/blur.dart';
3535
import 'package:trios/widgets/changelog_viewer.dart';
@@ -42,14 +42,14 @@ import 'package:trios/widgets/svg_image_icon.dart';
4242
import 'package:trios/widgets/tab_button.dart';
4343
import 'package:trios/widgets/trios_app_icon.dart';
4444

45-
import 'vmparams/vmparams_manager.dart';
4645
import 'launcher/launcher.dart';
4746
import 'main.dart';
4847
import 'mod_profiles/mod_profiles_page.dart';
4948
import 'tips/tips_page.dart';
5049
import 'trios/app_state.dart';
5150
import 'trios/drag_drop_handler.dart';
5251
import 'utils/dialogs.dart';
52+
import 'vmparams/vmparams_manager.dart';
5353

5454
class AppShell extends ConsumerStatefulWidget {
5555
const AppShell({super.key, required this.child});
@@ -73,8 +73,8 @@ class _AppShellState extends ConsumerState<AppShell>
7373
3: TriOSTools.vramEstimator,
7474
4: TriOSTools.chipper,
7575
5: TriOSTools.portraits,
76-
6: TriOSTools.weapons,
77-
7: TriOSTools.ships,
76+
6: TriOSTools.ships,
77+
7: TriOSTools.weapons,
7878
8: TriOSTools.hullmods,
7979
9: TriOSTools.settings,
8080
10: TriOSTools.catalog,
@@ -240,8 +240,8 @@ class _AppShellState extends ConsumerState<AppShell>
240240
const VramEstimatorPage(),
241241
const ChipperApp(pagePadding: 8),
242242
const PortraitsPage(),
243-
const WeaponsPage(),
244243
const ShipsPage(),
244+
const WeaponsPage(),
245245
const HullmodsPage(),
246246
const SettingsPage(pagePadding: 8.0),
247247
const CatalogPage(pagePadding: 8),
@@ -396,18 +396,6 @@ class _AppShellState extends ConsumerState<AppShell>
396396
),
397397
),
398398
const SizedBox(width: 4),
399-
MovingTooltipWidget.text(
400-
message: "Weapon Viewer",
401-
child: IconButton(
402-
icon: SvgImageIcon("assets/images/icon-target.svg"),
403-
selectedIcon: SvgImageIcon(
404-
"assets/images/icon-target.svg",
405-
color: Theme.of(context).colorScheme.primary,
406-
),
407-
isSelected: _currentPage == TriOSTools.weapons,
408-
onPressed: () => _changeTab(TriOSTools.weapons),
409-
),
410-
),
411399
MovingTooltipWidget.text(
412400
message: "Ship Viewer",
413401
child: IconButton(
@@ -427,8 +415,19 @@ class _AppShellState extends ConsumerState<AppShell>
427415
),
428416
),
429417
MovingTooltipWidget.text(
430-
message:
431-
"Hullmod Viewer",
418+
message: "Weapon Viewer",
419+
child: IconButton(
420+
icon: SvgImageIcon("assets/images/icon-target.svg"),
421+
selectedIcon: SvgImageIcon(
422+
"assets/images/icon-target.svg",
423+
color: Theme.of(context).colorScheme.primary,
424+
),
425+
isSelected: _currentPage == TriOSTools.weapons,
426+
onPressed: () => _changeTab(TriOSTools.weapons),
427+
),
428+
),
429+
MovingTooltipWidget.text(
430+
message: "Hullmod Viewer",
432431
child: IconButton(
433432
icon: SvgImageIcon(
434433
"assets/images/icon-hullmod.svg",
@@ -446,8 +445,7 @@ class _AppShellState extends ConsumerState<AppShell>
446445
),
447446
),
448447
MovingTooltipWidget.text(
449-
message:
450-
"Portrait Viewer & Replacer",
448+
message: "Portrait Viewer & Replacer",
451449
child: IconButton(
452450
icon: SvgImageIcon(
453451
"assets/images/icon-account-box-outline.svg",
@@ -1009,11 +1007,7 @@ class _FilePermissionShieldState extends ConsumerState<FilePermissionShield> {
10091007

10101008
final paths = [
10111009
for (final filePath in _vmParamsFilesThatCannotBeWritten)
1012-
(
1013-
description: 'vmparams file',
1014-
isWritable: false,
1015-
path: filePath,
1016-
),
1010+
(description: 'vmparams file', isWritable: false, path: filePath),
10171011
];
10181012

10191013
// If all paths are writable, return an empty widget

lib/hullmodViewer/hullmods_page.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:io';
22

3+
import 'package:collection/collection.dart';
34
import 'package:flutter/material.dart';
45
import 'package:flutter_riverpod/flutter_riverpod.dart';
56
import 'package:multi_split_view/multi_split_view.dart';
@@ -76,6 +77,21 @@ class _HullmodsPageState extends ConsumerState<HullmodsPage>
7677
final theme = Theme.of(context);
7778
final mods = ref.watch(AppState.mods);
7879

80+
// Apply pending mod filter from context menu navigation.
81+
final filterRequest = ref.watch(AppState.viewerFilterRequest);
82+
if (filterRequest != null && filterRequest.destination == TriOSTools.hullmods) {
83+
WidgetsBinding.instance.addPostFrameCallback((_) {
84+
if (!mounted) return;
85+
final modFilter = ref.read(hullmodsPageControllerProvider).filterCategories
86+
.firstWhereOrNull((f) => f.name == 'Mod');
87+
if (modFilter != null) {
88+
ref.read(hullmodsPageControllerProvider.notifier)
89+
.updateFilterStates(modFilter, {filterRequest.modName: true});
90+
}
91+
ref.read(AppState.viewerFilterRequest.notifier).state = null;
92+
});
93+
}
94+
7995
final columns = _buildCols(theme, controllerState);
8096
final total = controllerState.allHullmods.length;
8197
final visible = controllerState.filteredHullmods.length;

lib/mod_manager/mod_context_menu.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ ContextMenu buildModContextMenu(
5151
ref.watch(AppState.vramEstimatorProvider).value?.isScanning != true)
5252
buildMenuItemCheckVram(mod, ref),
5353
buildMenuItemToggleMuteUpdates(mod, ref),
54-
if (false) // not done
55-
buildMenuItemViewModWeapons(context, mod, ref),
54+
buildMenuItemViewInViewer(mod, ref),
5655
// MenuHeader(text: "Debugging", disableUppercase: true),
5756
buildMenuItemDebugging(context, mod, ref, isGameRunning),
5857
],

0 commit comments

Comments
 (0)