Blog (220)
Komentarze (4k)
Recenzje (1)
@djfoxerWłasna konfiguracja do wtyczki w oknie opcji Visual Studio

Własna konfiguracja do wtyczki w oknie opcji Visual Studio

Jakiś czas temu przedstawiłem sposób na umieszczenie Timera Pomodoro na pasku statusu w Visual Studio. W kolejnym kroku dodamy opcje konfiguracyjne do wtyczki w standardowym oknie opcji IDE.

Do tej pory, aby pokazać timera na pasu statusu trzeba było ręcznie wywołać z menu opcję dodająca element do Visual Studio. Spróbujmy zatem skonfigurować tą poprzez oko opcji w IDE.

619513
619514

Autostart wtyczek w Visual Studio

Nasza wtyczka składa się z paczek (Packaga). W celu automatycznego uruchomienia dodatku przy starcie IDE musimy dodać atrybut do naszej klasy dziedziczącej po Package.


[ProvideAutoLoad(VSConstants.UICONTEXT.ShellInitialized_string)]
public sealed class CommandShowTomatoStatusBarPackage : Package

Atrybut ProvideAutoLoad oznacza uruchomienie paczkę przy starce, zaś parametr określa kiedy ma to zrobić. Mamy kilka opcji:

  • ShellInitialized_string
  • NoSolution_string
  • EmptySolution_string
  • SolutionBuilding_string
  • ...

W moim przypadku będzie to ShellInitialized_string, czyli załadownie solucji, kiedy UI VS zostanie w pełni załadowane.

Okienko opcji w Visual Studio

Własne okienko w oknie konfiguracyjnym można umieścić bardzo prosto. Dodajemy do solucji nowy element Visual Studio Package. Następnie tworzymy nową klasę, która dziedziczyć będzie po DialogPage:


public class OptionPage : DialogPage

W kolejnym kroku dodamy zmienną typu bool, która zostanie przez IDE potraktowana jako opcja w menu i wyrenderowana w postaci grida z wyborem wartości True/False. W tym przypadku będzie ona określać, czy Timer Pomodoro ma załadować się przy starcie Visual Studio lub nie:



[Category(Consts.OptionsCategoryBasicName)]
[DisplayName(Consts.OptionsCategoryBasicStatusBarAutostartText)]
[Description(Consts.OptionsCategoryBasicStatusBarAutostartInfoText)]
public bool AutostartPomodoroStatusBar {get; set;}

Category określa nazwę podwęzła w naszych opcjach, zaś DisplayName i Description są odpowiednio nazwami dla zmiennej i jej opisu w okienku opcji.

Teraz łączymy stworzony przed chwilą Visual Studio Package z okienkiem konfiguracji. Robimy to za pomocą dodania atrybutu do klasy dziedziczącej z Package:


[ProvideOptionPage(typeof(OptionPage),
Consts.PluginName, Consts.OptionsCategoryBasicName, 0, 0, true)]

Stworzona klasa OptionPage (dziedzicząca po DialogPage) będzie podczepiona pod drzewko opcji w konfiguracji IDE (Consts.PluginName to korzeń, a jest nazwą liścia Consts.OptionsCategoryBasicName). Efekt mamy następujący:

619530

Odczyt danych z okienka opcji

Jak odczytywać aktualne dane z okienka konfiguracji IDE? Robimy to w następujący sposób:

((OptionPage)GetDialogPage(typeof(OptionPage))).AutostartPomodoroStatusBar;

GetDialogPage jest metodą w klasie dziedziczącej po Package. W ten sposób z okienka, które powstała poprzez stworzenie klasy OptionPage, odczytujemy zmienną AutostartPomodoroStatusBar.

W tak dość nieskomplikowany sposób otrzymaliśmy proste okienko konfiguracyjne w IDE.

Źródła dostępne są na GitHubie (branch master i POC): https://github.com/djfoxer/healthyWithVS/
619537
Wybrane dla Ciebie
Komentarze (0)