A game about forced loneliness, made by TACStudios
1using System.Collections.Generic; 2using System.IO; 3 4using UnityEditor; 5using UnityEngine; 6 7using Codice.LogWrapper; 8using Unity.PlasticSCM.Editor.AssetUtils; 9 10namespace Unity.PlasticSCM.Editor.UI 11{ 12 internal class Images 13 { 14 internal enum Name 15 { 16 None, 17 IconPlastic, 18 IconCloseButton, 19 IconPressedCloseButton, 20 IconAddedLocal, 21 IconAddedOverlay, 22 IconPrivateOverlay, 23 IconCheckedOutLocalOverlay, 24 IconDeleted, 25 IconDeletedLocalOverlay, 26 IconDeletedRemote, 27 IconDeletedRemoteOverlay, 28 IconOutOfSync, 29 IconInfoBellNotification, 30 IconOutOfSyncOverlay, 31 IconMoved, 32 IconMergeLink, 33 Ignored, 34 IgnoredOverlay, 35 IconConflicted, 36 IconConflictedOverlay, 37 IconConflictResolvedOverlay, 38 IconLockedLocalOverlay, 39 IconLockedRemoteOverlay, 40 IconRetainedOverlay, 41 XLink, 42 Ok, 43 SecondaryTabClose, 44 SecondaryTabCloseHover, 45 NotOnDisk, 46 IconRepository, 47 IconPlasticView, 48 IconPlasticNotifyIncoming, 49 IconPlasticNotifyConflict, 50 Loading, 51 IconEmptyGravatar, 52 Step1, 53 Step2, 54 Step3, 55 StepOk, 56 ButtonSsoSignInUnity, 57 ButtonSsoSignInEmail, 58 ButtonSsoSignInGoogle, 59 IconBranch, 60 IconBranches, 61 IconBrEx, 62 IconUndo, 63 Refresh, 64 IconInviteUsers, 65 IconLock, 66 IconShelve, 67 IconClipboard, 68 } 69 70 internal static Texture2D GetImage(Name image) 71 { 72 return LoadImage(image, false); 73 } 74 75 internal static Texture GetFileIcon(string path) 76 { 77 string relativePath = GetRelativePath.ToApplication(path); 78 79 return GetFileIconFromRelativePath(relativePath); 80 } 81 82 internal static Texture GetFileIconFromCmPath(string path) 83 { 84 return GetFileIconFromRelativePath( 85 path.Substring(1).Replace("/", 86 Path.DirectorySeparatorChar.ToString())); 87 } 88 89 internal static Texture GetDropDownIcon() 90 { 91 return GetIconFromEditorGUI("icon dropdown"); 92 } 93 94 internal static Texture GetDirectoryIcon() 95 { 96 return GetIconFromEditorGUI("Folder Icon"); 97 } 98 99 internal static Texture GetPrivatedOverlayIcon() 100 { 101 if (mPrivatedOverlayIcon == null) 102 mPrivatedOverlayIcon = GetOverlay(Name.IconPrivateOverlay); 103 104 return mPrivatedOverlayIcon; 105 } 106 107 internal static Texture GetAddedOverlayIcon() 108 { 109 if (mAddedOverlayIcon == null) 110 mAddedOverlayIcon = GetOverlay(Name.IconAddedOverlay); 111 112 return mAddedOverlayIcon; 113 } 114 115 internal static Texture GetDeletedLocalOverlayIcon() 116 { 117 if (mDeletedLocalOverlayIcon == null) 118 mDeletedLocalOverlayIcon = GetOverlay(Name.IconDeletedLocalOverlay); 119 120 return mDeletedLocalOverlayIcon; 121 } 122 123 internal static Texture GetDeletedRemoteOverlayIcon() 124 { 125 if (mDeletedRemoteOverlayIcon == null) 126 mDeletedRemoteOverlayIcon = GetOverlay(Name.IconDeletedRemoteOverlay); 127 128 return mDeletedRemoteOverlayIcon; 129 } 130 131 internal static Texture GetCheckedOutOverlayIcon() 132 { 133 if (mCheckedOutOverlayIcon == null) 134 mCheckedOutOverlayIcon = GetOverlay(Name.IconCheckedOutLocalOverlay); 135 136 return mCheckedOutOverlayIcon; 137 } 138 139 internal static Texture GetOutOfSyncOverlayIcon() 140 { 141 if (mOutOfSyncOverlayIcon == null) 142 mOutOfSyncOverlayIcon = GetOverlay(Name.IconOutOfSyncOverlay); 143 144 return mOutOfSyncOverlayIcon; 145 } 146 147 internal static Texture GetConflictedOverlayIcon() 148 { 149 if (mConflictedOverlayIcon == null) 150 mConflictedOverlayIcon = GetOverlay(Name.IconConflictedOverlay); 151 152 return mConflictedOverlayIcon; 153 } 154 155 internal static Texture GetConflictResolvedOverlayIcon() 156 { 157 if (mConflictResolvedOverlayIcon == null) 158 mConflictResolvedOverlayIcon = GetOverlay(Name.IconConflictResolvedOverlay); 159 160 return mConflictResolvedOverlayIcon; 161 } 162 163 internal static Texture GetLockedLocalOverlayIcon() 164 { 165 if (mLockedLocalOverlayIcon == null) 166 mLockedLocalOverlayIcon = GetOverlay(Name.IconLockedLocalOverlay); 167 168 return mLockedLocalOverlayIcon; 169 } 170 171 internal static Texture GetLockedRemoteOverlayIcon() 172 { 173 if (mLockedRemoteOverlayIcon == null) 174 mLockedRemoteOverlayIcon = GetOverlay(Name.IconLockedRemoteOverlay); 175 176 return mLockedRemoteOverlayIcon; 177 } 178 179 internal static Texture GetRetainedOverlayIcon() 180 { 181 if (mRetainedOverlayIcon == null) 182 mRetainedOverlayIcon = GetOverlay(Name.IconRetainedOverlay); 183 184 return mRetainedOverlayIcon; 185 } 186 187 internal static Texture GetIgnoredOverlayIcon() 188 { 189 if (mIgnoredverlayIcon == null) 190 mIgnoredverlayIcon = GetOverlay(Name.IgnoredOverlay); 191 192 return mIgnoredverlayIcon; 193 } 194 195 internal static Texture GetWarnIcon() 196 { 197 return GetIconFromEditorGUI("console.warnicon.sml"); 198 } 199 200 internal static Texture GetInfoIcon() 201 { 202 return GetIconFromEditorGUI("console.infoicon.sml"); 203 } 204 205 internal static Texture GetErrorDialogIcon() 206 { 207 return GetIconFromEditorGUI("console.erroricon"); 208 } 209 210 internal static Texture GetWarnDialogIcon() 211 { 212 return GetIconFromEditorGUI("console.warnicon"); 213 } 214 215 internal static Texture GetInfoDialogIcon() 216 { 217 return GetIconFromEditorGUI("console.infoicon"); 218 } 219 220 internal static Texture GetRefreshIcon() 221 { 222 if (mRefreshIcon == null) 223 mRefreshIcon = GetImage(Name.Refresh); 224 225 return mRefreshIcon; 226 } 227 228 internal static Texture GetHideIcon() 229 { 230 return GetIconFromEditorGUI("scenevis_hidden_hover"); 231 } 232 233 internal static Texture GetUnhideIcon() 234 { 235 return GetIconFromEditorGUI("scenevis_visible_hover"); 236 } 237 238 internal static Texture GetSettingsIcon() 239 { 240 return GetIconFromEditorGUI("settings"); 241 } 242 243 internal static Texture GetCloseIcon() 244 { 245 if (mCloseIcon == null) 246 mCloseIcon = GetImage(Name.SecondaryTabClose); 247 248 return mCloseIcon; 249 } 250 251 internal static Texture GetClickedCloseIcon() 252 { 253 if (mClickedCloseIcon == null) 254 mClickedCloseIcon = GetImage(Name.SecondaryTabCloseHover); 255 256 return mClickedCloseIcon; 257 } 258 259 internal static Texture GetHoveredCloseIcon() 260 { 261 if (mHoveredCloseIcon == null) 262 mHoveredCloseIcon = GetImage(Name.SecondaryTabCloseHover); 263 264 return mHoveredCloseIcon; 265 } 266 267 internal static Texture2D GetUndoIcon() 268 { 269 if (mUndoIcon == null) 270 mUndoIcon = GetImage(Name.IconUndo); 271 272 return mUndoIcon; 273 } 274 275 internal static Texture2D GetPlasticIcon() 276 { 277 if (mPlasticIcon == null) 278 mPlasticIcon = GetImage(Name.IconPlastic); 279 280 return mPlasticIcon; 281 } 282 283 internal static Texture2D GetClipboardIcon() 284 { 285 if (mClipboardIcon == null) 286 mClipboardIcon = GetImage(Name.IconClipboard); 287 288 return mClipboardIcon; 289 } 290 291 internal static Texture2D GetBranchIcon() 292 { 293 if (mBranchIcon == null) 294 mBranchIcon = GetImage(Name.IconBranch); 295 296 return mBranchIcon; 297 } 298 299 internal static Texture2D GetBranchesIcon() 300 { 301 if (mBranchesIcon == null) 302 mBranchesIcon = GetImage(Name.IconBranches); 303 304 return mBranchesIcon; 305 } 306 307 internal static Texture2D GetBranchExplorerIcon() 308 { 309 if (mBranchExplorerIcon == null) 310 mBranchExplorerIcon = GetImage(Name.IconBrEx); 311 312 return mBranchExplorerIcon; 313 } 314 315 internal static Texture2D GetConflictedIcon() 316 { 317 if (mConflictedIcon == null) 318 mConflictedIcon = GetImage(Name.IconConflicted); 319 320 return mConflictedIcon; 321 } 322 323 internal static Texture2D GetOutOfSyncIcon() 324 { 325 if (mOutOfSyncIcon == null) 326 mOutOfSyncIcon = GetImage(Name.IconOutOfSync); 327 328 return mOutOfSyncIcon; 329 } 330 331 internal static Texture2D GetInfoBellNotificationIcon() 332 { 333 if (mIncomingNotificationIcon == null) 334 mIncomingNotificationIcon = GetImage(Name.IconInfoBellNotification); 335 336 return mIncomingNotificationIcon; 337 } 338 339 internal static Texture2D GetPlasticViewIcon() 340 { 341 if (mPlasticViewIcon == null) 342 mPlasticViewIcon = GetImage(Name.IconPlasticView); 343 344 return mPlasticViewIcon; 345 } 346 347 internal static Texture2D GetPlasticNotifyIncomingIcon() 348 { 349 if (mPlasticNotifyIncomingIcon == null) 350 mPlasticNotifyIncomingIcon = GetImage(Name.IconPlasticNotifyIncoming); 351 352 return mPlasticNotifyIncomingIcon; 353 } 354 355 internal static Texture2D GetPlasticNotifyConflictIcon() 356 { 357 if (mPlasticNotifyConflictIcon == null) 358 mPlasticNotifyConflictIcon = GetImage(Name.IconPlasticNotifyConflict); 359 360 return mPlasticNotifyConflictIcon; 361 } 362 363 internal static Texture2D GetEmptyGravatar() 364 { 365 if (mEmptyGravatarIcon == null) 366 mEmptyGravatarIcon = Images.GetImage(Images.Name.IconEmptyGravatar); 367 368 return mEmptyGravatarIcon; 369 } 370 371 internal static Texture2D GetStepOkIcon() 372 { 373 if (mStepOkIcon == null) 374 mStepOkIcon = Images.GetImage(Images.Name.StepOk); 375 376 return mStepOkIcon; 377 } 378 379 internal static Texture2D GetStep1Icon() 380 { 381 if (mStep1Icon == null) 382 mStep1Icon = Images.GetImage(Images.Name.Step1); 383 384 return mStep1Icon; 385 } 386 387 internal static Texture2D GetStep2Icon() 388 { 389 if (mStep2Icon == null) 390 mStep2Icon = Images.GetImage(Images.Name.Step2); 391 392 return mStep2Icon; 393 } 394 395 internal static Texture2D GetMergeLinkIcon() 396 { 397 if (mMergeLinkIcon == null) 398 mMergeLinkIcon = Images.GetImage(Images.Name.IconMergeLink); 399 400 return mMergeLinkIcon; 401 } 402 403 internal static Texture2D GetAddedLocalIcon() 404 { 405 if (mAddedLocalIcon == null) 406 mAddedLocalIcon = Images.GetImage(Images.Name.IconAddedLocal); 407 408 return mAddedLocalIcon; 409 } 410 411 internal static Texture2D GetDeletedRemoteIcon() 412 { 413 if (mDeletedRemoteIcon == null) 414 mDeletedRemoteIcon = Images.GetImage(Images.Name.IconDeletedRemote); 415 416 return mDeletedRemoteIcon; 417 } 418 419 internal static Texture2D GetDeletedIcon() 420 { 421 if (mDeletedIcon == null) 422 mDeletedIcon = Images.GetImage(Images.Name.IconDeleted); 423 424 return mDeletedIcon; 425 } 426 427 internal static Texture2D GetMovedIcon() 428 { 429 if (mMovedIcon == null) 430 mMovedIcon = Images.GetImage(Images.Name.IconMoved); 431 432 return mMovedIcon; 433 } 434 435 internal static Texture2D GetRepositoryIcon() 436 { 437 if (mRepositoryIcon == null) 438 mRepositoryIcon = Images.GetImage(Images.Name.IconRepository); 439 440 return mRepositoryIcon; 441 } 442 443 internal static Texture GetFileIcon() 444 { 445 if (mFileIcon == null) 446 mFileIcon = EditorGUIUtility.FindTexture("DefaultAsset Icon"); 447 448 if (mFileIcon == null) 449 mFileIcon = GetIconFromAssetPreview(typeof(DefaultAsset)); 450 451 if (mFileIcon == null) 452 mFileIcon = GetEmptyImage(); 453 454 return mFileIcon; 455 } 456 457 internal static Texture2D GetLinkUnderlineImage() 458 { 459 if (mLinkUnderlineImage == null) 460 { 461 mLinkUnderlineImage = new Texture2D(1, 1); 462 mLinkUnderlineImage.SetPixel(0, 0, UnityStyles.Colors.Link); 463 mLinkUnderlineImage.Apply(); 464 } 465 466 return mLinkUnderlineImage; 467 } 468 469 internal static Texture2D GetInviteUsersIcon() 470 { 471 if (mInviteUsersIcon == null) 472 mInviteUsersIcon = GetImage(Name.IconInviteUsers); 473 474 return mInviteUsersIcon; 475 } 476 477 internal static Texture2D GetShelveIcon() 478 { 479 if (mShelveIcon == null) 480 mShelveIcon = GetImage(Name.IconShelve); 481 482 return mShelveIcon; 483 } 484 485 internal static Texture2D GetLockIcon() 486 { 487 if (mLockIcon == null) 488 mLockIcon = GetImage(Name.IconLock); 489 490 return mLockIcon; 491 } 492 493 internal static Texture2D GetTreeviewBackgroundTexture() 494 { 495 if (mTreeviewBackgroundTexture == null) 496 mTreeviewBackgroundTexture = GetTextureFromColor(UnityStyles.Colors.TreeViewBackground); 497 498 return mTreeviewBackgroundTexture; 499 } 500 501 internal static Texture2D GetCommentBackgroundTexture() 502 { 503 if (mCommentBackground == null) 504 mCommentBackground = GetTextureFromColor(UnityStyles.Colors.CommentsBackground); 505 506 return mCommentBackground; 507 } 508 509 internal static Texture2D GetColumnsBackgroundTexture() 510 { 511 if (mColumnsBackgroundTexture == null) 512 mColumnsBackgroundTexture = GetTextureFromColor(UnityStyles.Colors.ColumnsBackground); 513 514 return mColumnsBackgroundTexture; 515 } 516 517 internal static Texture2D GetNewTextureFromTexture(Texture2D texture) 518 { 519 Texture2D result = new Texture2D(texture.width, texture.height, TextureFormat.BGRA32, false); 520 521 // To keep images consistent throughout the plugin, 522 // manually set the filter mode 523 result.filterMode = FilterMode.Bilinear; 524 525 return result; 526 } 527 528 internal static Texture2D GetNewTextureFromBytes(int width, int height, byte[] bytes) 529 { 530 Texture2D result = new Texture2D(width, height, TextureFormat.RGBA32, false); 531 532 result.LoadImage(bytes); 533 534 // To keep images consistent throughout the plugin, 535 // manually set the filter mode 536 result.filterMode = FilterMode.Bilinear; 537 538 return result; 539 } 540 541 static Texture2D GetNewTextureFromFile(string path) 542 { 543 return GetNewTextureFromBytes(1, 1, File.ReadAllBytes(path)); 544 } 545 546 static Texture2D GetOverlay(Name image) 547 { 548 return LoadImage(image, true); 549 } 550 551 static Texture2D LoadImage(Name image, bool preferFulResImage) 552 { 553 string imageFileName = image.ToString().ToLower() + ".png"; 554 string imageFileName2x = image.ToString().ToLower() + "@2x.png"; 555 556 string darkImageFileName = string.Format("d_{0}", imageFileName); 557 string darkImageFileName2x = string.Format("d_{0}", imageFileName2x); 558 559 string imageFileRelativePath = GetImageFileRelativePath(imageFileName); 560 string imageFileRelativePath2x = GetImageFileRelativePath(imageFileName2x); 561 562 string darkImageFileRelativePath = GetImageFileRelativePath(darkImageFileName); 563 string darkImageFileRelativePath2x = GetImageFileRelativePath(darkImageFileName2x); 564 565 Texture2D result = null; 566 567 if (EditorGUIUtility.isProSkin) 568 result = TryLoadImage(darkImageFileRelativePath, darkImageFileRelativePath2x, preferFulResImage); 569 570 if (result != null) 571 return result; 572 573 result = TryLoadImage(imageFileRelativePath, imageFileRelativePath2x, preferFulResImage); 574 575 if (result != null) 576 return result; 577 578 mLog.WarnFormat("Image not found: {0}", imageFileName); 579 return GetEmptyImage(); 580 } 581 582 static Texture2D GetEmptyImage() 583 { 584 if (mEmptyImage == null) 585 mEmptyImage = GetTextureFromColor(Color.clear); 586 587 return mEmptyImage; 588 } 589 590 static Texture2D GetTextureFromColor(Color color) 591 { 592 Texture2D texture = new Texture2D(1, 1); 593 594 texture.SetPixel(0, 0, color); 595 texture.Apply(); 596 597 return texture; 598 } 599 600 static Texture GetFileIconFromRelativePath(string relativePath) 601 { 602 Texture result = AssetDatabase.GetCachedIcon(relativePath); 603 604 if (result != null) 605 return result; 606 607 result = GetFileIconFromKnownExtension(relativePath); 608 609 if (result != null) 610 return result; 611 612 return GetFileIcon(); 613 } 614 615 static Texture GetFileIconFromKnownExtension(string relativePath) 616 { 617 if (relativePath.EndsWith(UnityConstants.TREEVIEW_META_LABEL)) 618 { 619 relativePath = relativePath.Substring(0, 620 relativePath.Length- UnityConstants.TREEVIEW_META_LABEL.Length); 621 } 622 623 string extension = Path.GetExtension(relativePath).ToLower(); 624 625 if (extension.Equals(".cs")) 626 return GetIconFromEditorGUI("cs Script Icon"); 627 628 if (extension.Equals(".png") || extension.Equals(".jpg") 629 || extension.Equals(".jpeg") || extension.Equals(".gif") 630 || extension.Equals(".tga") || extension.Equals(".bmp") 631 || extension.Equals(".tif") || extension.Equals(".tiff")) 632 return GetIconFromEditorGUI("d_Texture Icon"); 633 634 if (extension.Equals(".mat")) 635 return GetIconFromAssetPreview(typeof(UnityEngine.Material)); 636 637 if (extension.Equals(".fbx") || extension.Equals(".ma") 638 || extension.Equals(".mb") || extension.Equals(".blend") 639 || extension.Equals(".max") ) 640 return GetIconFromAssetPreview(typeof(UnityEngine.GameObject)); 641 642 if (extension.Equals(".wav") || extension.Equals(".mp3")) 643 return GetIconFromAssetPreview(typeof(UnityEngine.AudioClip)); 644 645 if (extension.Equals(".anim")) 646 return GetIconFromAssetPreview(typeof(UnityEngine.Animation)); 647 648 if (extension.Equals(".animator")) 649 return GetIconFromAssetPreview(typeof(UnityEngine.Animator)); 650 651 if (extension.Equals(".shader")) 652 return GetIconFromEditorGUI("d_Shader Icon"); 653 654 if (extension.Equals(".asset") && relativePath.StartsWith("ProjectSettings\\")) 655 return GetIconFromEditorGUI("EditorSettings Icon"); 656 657 return null; 658 } 659 660 static Texture2D GetIconFromEditorGUI(string name) 661 { 662 Texture2D result; 663 664 if (mImagesFromEditorGUICache.TryGetValue(name, out result)) 665 { 666 if (result != null) 667 return result; 668 mImagesFromEditorGUICache.Remove(name); 669 } 670 671 result = EditorGUIUtility.IconContent(name).image as Texture2D; 672 673 mImagesFromEditorGUICache.Add(name, result); 674 675 return result; 676 } 677 678 static Texture2D GetIconFromAssetPreview(System.Type type) 679 { 680 Texture2D result; 681 682 if (mImagesFromAssetPreviewCache.TryGetValue(type.ToString(), out result)) 683 { 684 if (result != null) 685 return result; 686 mImagesFromAssetPreviewCache.Remove(type.ToString()); 687 } 688 689 result = AssetPreview.GetMiniTypeThumbnail(type); 690 691 mImagesFromAssetPreviewCache.Add(type.ToString(), result); 692 693 return result; 694 } 695 696 static string GetImageFileRelativePath(string imageFileName) 697 { 698 return Path.Combine( 699 AssetsPath.GetImagesFolderRelativePath(), 700 imageFileName); 701 } 702 703 static Texture2D TryLoadImage( 704 string imageFileRelativePath, string image2xFilePath, bool preferFulResImage) 705 { 706 bool isImageAvailable = File.Exists(Path.GetFullPath(imageFileRelativePath)); 707 bool isImage2XAvailable = File.Exists(Path.GetFullPath(image2xFilePath)); 708 709 if ((EditorGUIUtility.pixelsPerPoint > 1f || !isImageAvailable || preferFulResImage) && 710 isImage2XAvailable) 711 return LoadTextureFromFile(image2xFilePath); 712 713 if (isImageAvailable) 714 return LoadTextureFromFile(imageFileRelativePath); 715 716 return null; 717 } 718 719 static Texture2D LoadTextureFromFile(string path) 720 { 721 Texture2D result; 722 723 if (mImagesByPathCache.TryGetValue(path, out result)) 724 { 725 if (result != null) 726 return result; 727 mImagesByPathCache.Remove(path); 728 } 729 730 // Don't use AssetDatabase to load as it will 731 // pick filtering mode from the asset itself 732 // which leads to inconsistent filtering between 733 // images. 734 result = GetNewTextureFromFile(path); 735 736 mImagesByPathCache.Add(path, result); 737 738 return result; 739 } 740 741 static Dictionary<string, Texture2D> mImagesByPathCache = 742 new Dictionary<string, Texture2D>(); 743 744 static Dictionary<string, Texture2D> mImagesFromEditorGUICache = 745 new Dictionary<string, Texture2D>(); 746 747 static Dictionary<string, Texture2D> mImagesFromAssetPreviewCache = 748 new Dictionary<string, Texture2D>(); 749 750 static Texture mFileIcon; 751 752 static Texture mPrivatedOverlayIcon; 753 static Texture mAddedOverlayIcon; 754 static Texture mDeletedLocalOverlayIcon; 755 static Texture mDeletedRemoteOverlayIcon; 756 static Texture mCheckedOutOverlayIcon; 757 static Texture mOutOfSyncOverlayIcon; 758 static Texture mConflictedOverlayIcon; 759 static Texture mConflictResolvedOverlayIcon; 760 static Texture mLockedLocalOverlayIcon; 761 static Texture mLockedRemoteOverlayIcon; 762 static Texture mRetainedOverlayIcon; 763 static Texture mIgnoredverlayIcon; 764 765 static Texture mRefreshIcon; 766 767 static Texture mCloseIcon; 768 static Texture mClickedCloseIcon; 769 static Texture mHoveredCloseIcon; 770 771 static Texture2D mLinkUnderlineImage; 772 773 static Texture2D mEmptyImage; 774 775 static Texture2D mTreeviewBackgroundTexture; 776 static Texture2D mColumnsBackgroundTexture; 777 static Texture2D mCommentBackground; 778 779 static Texture2D mUndoIcon; 780 static Texture2D mPlasticIcon; 781 static Texture2D mClipboardIcon; 782 static Texture2D mBranchIcon; 783 static Texture2D mBranchesIcon; 784 static Texture2D mBranchExplorerIcon; 785 static Texture2D mConflictedIcon; 786 static Texture2D mOutOfSyncIcon; 787 static Texture2D mIncomingNotificationIcon; 788 static Texture2D mInviteUsersIcon; 789 static Texture2D mShelveIcon; 790 static Texture2D mLockIcon; 791 792 static Texture2D mPlasticViewIcon; 793 static Texture2D mPlasticNotifyIncomingIcon; 794 static Texture2D mPlasticNotifyConflictIcon; 795 796 static Texture2D mEmptyGravatarIcon; 797 static Texture2D mStepOkIcon; 798 static Texture2D mStep1Icon; 799 static Texture2D mStep2Icon; 800 801 static Texture2D mMergeLinkIcon; 802 static Texture2D mAddedLocalIcon; 803 static Texture2D mDeletedRemoteIcon; 804 static Texture2D mDeletedIcon; 805 static Texture2D mMovedIcon; 806 static Texture2D mRepositoryIcon; 807 808 static readonly ILog mLog = PlasticApp.GetLogger("Images"); 809 } 810}