✨ Popup userinfo
This commit is contained in:
		
							
								
								
									
										118
									
								
								lib/widgets/account/account_profile_popup.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								lib/widgets/account/account_profile_popup.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:get/get.dart'; | ||||
| import 'package:solian/exts.dart'; | ||||
| import 'package:solian/models/account.dart'; | ||||
| import 'package:solian/services.dart'; | ||||
| import 'package:solian/widgets/account/account_avatar.dart'; | ||||
|  | ||||
| class AccountProfilePopup extends StatefulWidget { | ||||
|   final Account account; | ||||
|  | ||||
|   const AccountProfilePopup({super.key, required this.account}); | ||||
|  | ||||
|   @override | ||||
|   State<AccountProfilePopup> createState() => _AccountProfilePopupState(); | ||||
| } | ||||
|  | ||||
| class _AccountProfilePopupState extends State<AccountProfilePopup> { | ||||
|   bool _isBusy = true; | ||||
|  | ||||
|   Account? _userinfo; | ||||
|  | ||||
|   void getUserinfo() async { | ||||
|     setState(() => _isBusy = true); | ||||
|  | ||||
|     final client = GetConnect(); | ||||
|     client.httpClient.baseUrl = ServiceFinder.services['passport']; | ||||
|  | ||||
|     final resp = await client.get('/api/users/${widget.account.name}'); | ||||
|     if (resp.statusCode == 200) { | ||||
|       _userinfo = Account.fromJson(resp.body); | ||||
|       setState(() => _isBusy = false); | ||||
|     } else { | ||||
|       context.showErrorDialog(resp.bodyString); | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|  | ||||
|     getUserinfo(); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     if (_isBusy) { | ||||
|       return const Center(child: CircularProgressIndicator()); | ||||
|     } | ||||
|  | ||||
|     return SizedBox( | ||||
|       height: MediaQuery.of(context).size.height * 0.75, | ||||
|       child: Column( | ||||
|         crossAxisAlignment: CrossAxisAlignment.start, | ||||
|         children: [ | ||||
|           AspectRatio( | ||||
|             aspectRatio: 16 / 7, | ||||
|             child: Container( | ||||
|               color: Theme.of(context).colorScheme.surfaceContainerHigh, | ||||
|               child: Stack( | ||||
|                 clipBehavior: Clip.none, | ||||
|                 fit: StackFit.expand, | ||||
|                 children: [ | ||||
|                   if (_userinfo!.banner != null) | ||||
|                     Image.network( | ||||
|                       '${ServiceFinder.services['paperclip']}/api/attachments/${_userinfo!.banner}', | ||||
|                       fit: BoxFit.cover, | ||||
|                     ), | ||||
|                   Positioned( | ||||
|                     bottom: -30, | ||||
|                     left: 18, | ||||
|                     child: AccountAvatar( | ||||
|                       content: widget.account.banner, | ||||
|                       radius: 48, | ||||
|                     ), | ||||
|                   ), | ||||
|                 ], | ||||
|               ), | ||||
|             ), | ||||
|           ).paddingOnly(top: 32), | ||||
|           Row( | ||||
|             crossAxisAlignment: CrossAxisAlignment.baseline, | ||||
|             textBaseline: TextBaseline.alphabetic, | ||||
|             children: [ | ||||
|               Text( | ||||
|                 _userinfo!.nick, | ||||
|                 style: const TextStyle( | ||||
|                   fontSize: 17, | ||||
|                   fontWeight: FontWeight.bold, | ||||
|                 ), | ||||
|               ).paddingOnly(right: 4), | ||||
|               Text( | ||||
|                 '@${_userinfo!.name}', | ||||
|                 style: const TextStyle( | ||||
|                   fontSize: 15, | ||||
|                 ), | ||||
|               ), | ||||
|             ], | ||||
|           ).paddingOnly(left: 120, top: 8), | ||||
|           SizedBox( | ||||
|             width: double.infinity, | ||||
|             child: Card( | ||||
|               color: Theme.of(context).colorScheme.surfaceContainerHigh, | ||||
|               child: ListTile( | ||||
|                 title: Text('description'.tr), | ||||
|                 subtitle: Text( | ||||
|                   _userinfo!.description.isNotEmpty | ||||
|                       ? widget.account.description | ||||
|                       : 'No description yet.', | ||||
|                 ), | ||||
|               ), | ||||
|             ), | ||||
|           ).paddingOnly(left: 24, right: 24, top: 8), | ||||
|         ], | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @@ -5,6 +5,7 @@ import 'package:get/get_utils/get_utils.dart'; | ||||
| import 'package:solian/models/post.dart'; | ||||
| import 'package:solian/router.dart'; | ||||
| import 'package:solian/widgets/account/account_avatar.dart'; | ||||
| import 'package:solian/widgets/account/account_profile_popup.dart'; | ||||
| import 'package:solian/widgets/attachments/attachment_list.dart'; | ||||
| import 'package:solian/widgets/posts/post_quick_action.dart'; | ||||
| import 'package:timeago/timeago.dart' show format; | ||||
| @@ -158,7 +159,18 @@ class _PostItemState extends State<PostItem> { | ||||
|         Row( | ||||
|           crossAxisAlignment: CrossAxisAlignment.start, | ||||
|           children: [ | ||||
|             AccountAvatar(content: item.author.avatar.toString()), | ||||
|             GestureDetector( | ||||
|               child: AccountAvatar(content: item.author.avatar.toString()), | ||||
|               onTap: () { | ||||
|                 showModalBottomSheet( | ||||
|                   useRootNavigator: true, | ||||
|                   isScrollControlled: true, | ||||
|                   context: context, | ||||
|                   builder: (context) => | ||||
|                       AccountProfilePopup(account: item.author), | ||||
|                 ); | ||||
|               }, | ||||
|             ), | ||||
|             Expanded( | ||||
|               child: Column( | ||||
|                 children: [ | ||||
|   | ||||
| @@ -22,6 +22,11 @@ PODS: | ||||
|   - path_provider_foundation (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - Sentry/HybridSDK (8.25.2) | ||||
|   - sentry_flutter (8.2.0): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|     - Sentry/HybridSDK (= 8.25.2) | ||||
|   - sqflite (0.0.3): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
| @@ -45,6 +50,7 @@ DEPENDENCIES: | ||||
|   - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) | ||||
|   - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) | ||||
|   - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) | ||||
|   - sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`) | ||||
|   - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) | ||||
|   - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) | ||||
|   - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) | ||||
| @@ -52,6 +58,7 @@ DEPENDENCIES: | ||||
|  | ||||
| SPEC REPOS: | ||||
|   trunk: | ||||
|     - Sentry | ||||
|     - WebRTC-SDK | ||||
|  | ||||
| EXTERNAL SOURCES: | ||||
| @@ -75,6 +82,8 @@ EXTERNAL SOURCES: | ||||
|     :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos | ||||
|   path_provider_foundation: | ||||
|     :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin | ||||
|   sentry_flutter: | ||||
|     :path: Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos | ||||
|   sqflite: | ||||
|     :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin | ||||
|   url_launcher_macos: | ||||
| @@ -95,6 +104,8 @@ SPEC CHECKSUMS: | ||||
|   livekit_client: ca5f0447742014b6e462c27b71d49dcf03ec0446 | ||||
|   package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c | ||||
|   path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 | ||||
|   Sentry: 51b056d96914a741f63eca774d118678b1eb05a1 | ||||
|   sentry_flutter: e8397d13e297a5d4b6be8a752e33140b21c5cc97 | ||||
|   sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec | ||||
|   url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 | ||||
|   video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 | ||||
|   | ||||
| @@ -521,6 +521,7 @@ | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||||
| @@ -576,6 +577,7 @@ | ||||
| 				COMBINE_HIDPI_IMAGES = YES; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/../Frameworks", | ||||
| @@ -600,6 +602,7 @@ | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||||
| @@ -656,6 +659,7 @@ | ||||
| 			buildSettings = { | ||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||
| 				CLANG_ANALYZER_NONNULL = YES; | ||||
| 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||||
| @@ -711,6 +715,7 @@ | ||||
| 				COMBINE_HIDPI_IMAGES = YES; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/../Frameworks", | ||||
| @@ -735,6 +740,7 @@ | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_HARDENED_RUNTIME = NO; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/../Frameworks", | ||||
|   | ||||
| @@ -2,6 +2,8 @@ | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>LSApplicationCategoryType</key> | ||||
| 	<string>public.app-category.social-networking</string> | ||||
| 	<key>CFBundleDevelopmentRegion</key> | ||||
| 	<string>$(DEVELOPMENT_LANGUAGE)</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
| @@ -20,6 +22,8 @@ | ||||
| 	<string>$(FLUTTER_BUILD_NAME)</string> | ||||
| 	<key>CFBundleVersion</key> | ||||
| 	<string>$(FLUTTER_BUILD_NUMBER)</string> | ||||
| 	<key>ITSAppUsesNonExemptEncryption</key> | ||||
| 	<false/> | ||||
| 	<key>LSMinimumSystemVersion</key> | ||||
| 	<string>$(MACOSX_DEPLOYMENT_TARGET)</string> | ||||
| 	<key>NSAppTransportSecurity</key> | ||||
| @@ -31,8 +35,6 @@ | ||||
| 	<string>$(PRODUCT_COPYRIGHT)</string> | ||||
| 	<key>NSMainNibFile</key> | ||||
| 	<string>MainMenu</string> | ||||
| 	<key>ITSAppUsesNonExemptEncryption</key> | ||||
| 	<false/> | ||||
| 	<key>NSPrincipalClass</key> | ||||
| 	<string>NSApplication</string> | ||||
| </dict> | ||||
|   | ||||
							
								
								
									
										195
									
								
								macos/Runner/zh-Hans.lproj/MainMenu.strings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								macos/Runner/zh-Hans.lproj/MainMenu.strings
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,195 @@ | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Solian"; ObjectID = "1Xt-HY-uBw"; */ | ||||
| "1Xt-HY-uBw.title" = "Solian"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ | ||||
| "1b7-l0-nxx.title" = "Find"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ | ||||
| "2oI-Rn-ZJC.title" = "Transformations"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ | ||||
| "3IN-sU-3Bg.title" = "Spelling"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ | ||||
| "3rS-ZA-NoH.title" = "Speech"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ | ||||
| "4EN-yA-p0u.title" = "Find"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ | ||||
| "4J7-dP-txa.title" = "Enter Full Screen"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Quit APP_NAME"; ObjectID = "4sb-4s-VLi"; */ | ||||
| "4sb-4s-VLi.title" = "Quit APP_NAME"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ | ||||
| "5QF-Oa-p0T.title" = "Edit"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "About APP_NAME"; ObjectID = "5kV-Vb-QxS"; */ | ||||
| "5kV-Vb-QxS.title" = "About APP_NAME"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ | ||||
| "6dh-zS-Vam.title" = "Redo"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ | ||||
| "78Y-hA-62v.title" = "Correct Spelling Automatically"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ | ||||
| "9ic-FL-obx.title" = "Substitutions"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ | ||||
| "9yt-4B-nSM.title" = "Smart Copy/Paste"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ | ||||
| "AYu-sK-qS6.title" = "Main Menu"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ | ||||
| "BOF-NM-1cW.title" = "Preferences…"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ | ||||
| "Dv1-io-Yv7.title" = "Spelling and Grammar"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Help"; ObjectID = "EPT-qC-fAb"; */ | ||||
| "EPT-qC-fAb.title" = "Help"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ | ||||
| "FeM-D8-WVr.title" = "Substitutions"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ | ||||
| "H8h-7b-M4v.title" = "View"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ | ||||
| "HFQ-gK-NFA.title" = "Text Replacement"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ | ||||
| "HFo-cy-zxI.title" = "Show Spelling and Grammar"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ | ||||
| "HyV-fh-RgO.title" = "View"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ | ||||
| "Kd2-mp-pUS.title" = "Show All"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ | ||||
| "LE2-aR-0XJ.title" = "Bring All to Front"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ | ||||
| "NMo-om-nkz.title" = "Services"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ | ||||
| "OY7-WF-poV.title" = "Minimize"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Hide APP_NAME"; ObjectID = "Olw-nP-bQN"; */ | ||||
| "Olw-nP-bQN.title" = "Hide APP_NAME"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ | ||||
| "OwM-mh-QMV.title" = "Find Previous"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ | ||||
| "Oyz-dy-DGm.title" = "Stop Speaking"; | ||||
|  | ||||
| /* Class = "NSWindow"; title = "Solian"; ObjectID = "QvC-M9-y7g"; */ | ||||
| "QvC-M9-y7g.title" = "Solian"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ | ||||
| "R4o-n2-Eq4.title" = "Zoom"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ | ||||
| "Ruw-6m-B2m.title" = "Select All"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ | ||||
| "S0p-oC-mLd.title" = "Jump to Selection"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ | ||||
| "Td7-aD-5lo.title" = "Window"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ | ||||
| "UEZ-Bs-lqG.title" = "Capitalize"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ | ||||
| "Vdr-fp-XzO.title" = "Hide Others"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ | ||||
| "W48-6f-4Dl.title" = "Edit"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ | ||||
| "WeT-3V-zwk.title" = "Paste and Match Style"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ | ||||
| "Xz5-n4-O0W.title" = "Find…"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ | ||||
| "YEy-JH-Tfz.title" = "Find and Replace…"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ | ||||
| "Ynk-f8-cLZ.title" = "Start Speaking"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ | ||||
| "aUF-d1-5bR.title" = "Window"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ | ||||
| "buJ-ug-pKt.title" = "Use Selection for Find"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ | ||||
| "c8a-y6-VQd.title" = "Transformations"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ | ||||
| "cwL-P1-jid.title" = "Smart Links"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ | ||||
| "d9M-CD-aMd.title" = "Make Lower Case"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ | ||||
| "dRJ-4n-Yzg.title" = "Undo"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ | ||||
| "gVA-U4-sdL.title" = "Paste"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ | ||||
| "hQb-2v-fYv.title" = "Smart Quotes"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ | ||||
| "hz2-CU-CR7.title" = "Check Document Now"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ | ||||
| "hz9-B4-Xy5.title" = "Services"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ | ||||
| "mK6-2p-4JG.title" = "Check Grammar With Spelling"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ | ||||
| "pa3-QI-u2k.title" = "Delete"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ | ||||
| "q09-fT-Sye.title" = "Find Next"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Help"; ObjectID = "rJ0-wn-3NY"; */ | ||||
| "rJ0-wn-3NY.title" = "Help"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ | ||||
| "rbD-Rh-wIN.title" = "Check Spelling While Typing"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ | ||||
| "rgM-f4-ycn.title" = "Smart Dashes"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ | ||||
| "tRr-pd-1PS.title" = "Data Detectors"; | ||||
|  | ||||
| /* Class = "NSMenu"; title = "Solian"; ObjectID = "uQy-DD-JDr"; */ | ||||
| "uQy-DD-JDr.title" = "Solian"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ | ||||
| "uRl-iY-unG.title" = "Cut"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ | ||||
| "vmV-6d-7jI.title" = "Make Upper Case"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ | ||||
| "x3v-GG-iWU.title" = "Copy"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ | ||||
| "xrE-MZ-jX0.title" = "Speech"; | ||||
|  | ||||
| /* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ | ||||
| "z6F-FW-3nz.title" = "Show Substitutions"; | ||||
		Reference in New Issue
	
	Block a user