Альтернативная тема для Altium Designer 18. Делаем свою тему.

Описание того, как устроена структура папки тем в AD18 и как можно легко сделать свою тему.

Cover Image

Посмню как увидел в первый раз AD18. Тогда в нём была только одна темная тема, которая оказась очень привлекательной. В следующих версиях появилась и светлая, которую я сразу же испытал, но всё-таки вернулся на тёмную сторону. И появился исследовательский интерес - "Можно ли сделать свою тему целиком или хотябы просто разукрасить по другому?". Можно.

Для изготовления свой темы возьмём за основу темную тему. Папку отвечающие за визуальную красоту AD18 находятся в месте установки в папке /Altium/AD18/System/:

  • Buttons - изображения кнопок и других вещей, которые зависят от основного цвета окна. Для темной темы кнопочки светлые, для светлой - тёмные. Ну вы поняли. Эту папку трогать не будем;
  • Themes - описание тем. Здесь всё, что касается цвета, шрифтов и тому подобного. Вот здесь мы и покапаемся.

Каталог содержит несколько папок и файлов:

  • AltiumDark - папка с некоторыми изображениями и описанием внешнего вида(положение элементов управления и другое - WpfResources.xaml) для темной темы.
  • AltiumLight - аналогичная папка для светлой темы
  • EDP Themes.xml - файл, где перечислены все доступные темы
  • Colors-AltiumLightGray.xml - цвета для светлой темы
  • Elements-AltiumDark.xml - описание элементов для светлой темы
  • Colors-AltiumDarkGray.xml - аналогичное для темной темы
  • Elements-AltiumLight.xml - аналогичное для темной темы

Для нашей темы нужен только файл с именем Color-*.xml, так как кроме цветов я ничего менять не собираюсь. Копирую файл темной темы и переименовываю на свой лад - Colors-DevprodestDarkGreen.xml. Теперь осталось только поменять необходимые цвета. У меня тема будет с зелёным оттенком.

<theme format="1.0">
    <colors>
        <!-- base colors. contrast-dependent -->
        <color name="Background"                    value="#353535"   id="SystemBackground"                  />
        <color name="Border"                        value="#222222"   id="SystemBorder"                      />
        <color name="InnerBorder"                   value="#303030"   id="SystemInnerBorder"                 />
        <color name="OuterBorderInactive"           value="#072600"   id="SystemOuterBorderInactive"         />
        <color name="OuterBorderActive"             value="#167200"   id="SystemOuterBorderActive"           />
        <color name="DefaultFont"                   value="#E5E5E5"   id="SystemDefaultFont"                 />
        <color name="AccentFont"                    value="#FFFFFF"   id="SystemAccentFont"                  />
        <color name="DisabledFont"                  value="#868686"   id="SystemDisabledFont"                />
        <color name="FadedFont"                     value="#BBBBBB"   id="SystemFadedFont"                   />
        <color name="ButtonFont"                    value="#FFFFFF"   id="SystemButtonFont"                  />
        <color name="MenuBackground"                value="#424242"   id="SystemMenuBackground"              />
        <color name="MenuFont"                      value="#E5E5E5"   id="SystemMenuFont"                    />
        <color name="MenuPressed"                   value="#505050"   id="SystemMenuPressed"                 />
        <color name="PanelCaption"                  value="#4E4E4E"   id="SystemPanelCaption"                />
        <color name="PanelFont"                     value="#E5E5E5"   id="SystemPanelFont"                   />
        <color name="PanelBody"                     value="#404040"   id="SystemPanelBody"                   />
        <color name="PanelGroup"                    value="#4E4E4E"   id="SystemPanelGroup"                  />
        <color name="FrameInactive"                 value="#474747"   id="SystemFrameInactive"               />
        <color name="FrameActive"                   value="#4E4E4E"   id="SystemFrameActive"                 />
        <color name="DialogBody"                    value="#404040"   id="SystemDialogBody"                  />
        <color name="PlainArea"                     value="#3B3B3B"   id="SystemPlainArea"                   />
        <color name="Header"                        value="#484848"   id="SystemHeader"                      />
        <color name="GridLine"                      value="#353535"   id="SystemGridLine"                    />
        <color name="GridGlyph"                     value="#222222"   id="SystemGridGlyph"                   />
        <color name="TabActive"                     value="#4E4E4E"   id="SystemTabActive"                   />
        <color name="Tooltip"                       value="#EEEEEE"   id="SystemTooltip"                     />
        <color name="TooltipBorder"                 value="#3B3B3B"   id="SystemTooltipBorder"               />
        <color name="TooltipFont"                   value="#282828"   id="SystemTooltipFont"                 />
        <color name="TooltipError"                  value="#906161"   id="SystemTooltipError"                />
        <color name="TooltipErrorBorder"            value="#7B4343"   id="SystemTooltipErrorBorder"          />
        <color name="TooltipErrorFont"              value="#E5E5E5"   id="SystemTooltipErrorFont"            />
        <color name="Button"                        value="#545454"   id="SystemButton"                      />
        <color name="ButtonTop"                     value="#686868"   id="SystemButtonTop"                   />
        <color name="ButtonActive"                  value="#5C5C5C"   id="SystemButtonActive"                />
        <color name="ButtonActiveTop"               value="#707070"   id="SystemButtonActiveTop"             />
        <color name="ButtonPressed"                 value="#505050"   id="SystemButtonPressed"               />
        <color name="ButtonDisabled"                value="#66484848" id="SystemButtonDisabled"              />
        <color name="ButtonDisabledTop"             value="#665C5C5C" id="SystemButtonDisabledTop"           />
        <color name="ButtonBorderDisabled"          value="#66333333" id="SystemButtonBorderDisabled"        />
        <color name="ButtonGlare"                   value="#5F5F5F"   id="SystemButtonGlare"                 />
        <color name="ButtonGlareActive"             value="#646464"   id="SystemButtonGlareActive"           />
        <color name="ButtonGlarePressed"            value="#484848"   id="SystemButtonGlarePressed"          />
        <color name="ButtonGlareDisabled"           value="#66505050" id="SystemButtonGlareDisabled"         />
        <color name="EditBoxBack"                   value="#2E2E2E"   id="SystemEditBoxBack"                 />
        <color name="EditBoxBackDisabled"           value="#444444"   id="SystemEditBoxBackDisabled"         />
        <color name="EditBoxGlare"                  value="#2A2A2A"   id="SystemEditBoxGlare"                />
        <color name="EditBoxGlareDisabled"          value="#404040"   id="SystemEditBoxGlareDisabled"        />
        <color name="ScrollBarArrow"                value="#808080"   id="SystemScrollBarArrow"              />
        <color name="ScrollBarThumb"                value="#808080"   id="SystemScrollBarThumb"              />
        <color name="ExpanderBack"                  value="#484848"   id="SystemExpanderBack"                />
        <color name="LayerEditorName"               value="#4B4B4B"   id="SystemLayerEditorName"             />
        <color name="LayerEditorNameFont"           value="#CCCCCC"   id="SystemLayerEditorNameFont"         />
        <color name="LayerEditorBorder"             value="#393939"   id="SystemLayerEditorBorder"           />
        <color name="LayerEditor"                   value="#545454"   id="SystemLayerEditor"                 />
        <color name="LayerEditorFont"               value="#999999"   id="SystemLayerEditorFont"             />
        <color name="LayerEditorTopBorder"          value="#565656"   id="SystemLayerEditorTopBorder"        />
        <color name="LayerEditorActiveTopBorder"    value="#727272"   id="SystemLayerEditorActiveTopBorder"  />
        <color name="LayerEditorActiveBorder"       value="#383838"   id="SystemLayerEditorActiveBorder"     />
        <color name="GroupSeparatorBorderTop"       value="#2C2C2C"   id="SystemGroupSeparatorBorderTop"     />
        <color name="GroupSeparatorBorderBottom"    value="#454545"   id="SystemGroupSeparatorBorderBottom"  />
        <color name="SearchSeparatorBorderTop"      value="#404040"   id="SystemSearchSeparatorBorderTop"    />
        <color name="SearchSeparatorBorderBottom"   value="#575757"   id="SystemSearchSeparatorBorderBottom" />
        <color name="ColorPicker"                   value="#4B4B4B"   id="SystemColorPicker"                 />
        <color name="ColorPickerBorder"             value="#474747"   id="SystemColorPickerBorder"           />
        <color name="ColorPickerTileBorder"         value="#1D1D1D"   id="SystemColorPickerTileBorder"       />
        <color name="UIPanelBorder"                 value="#3E3E3E"   id="SystemUIPanelBorder"               />
        <color name="UIPanelInnerBorder"            value="#545454"   id="SystemUIPanelInnerBorder"          />
        <color name="DisabledBorder"                value="#383838"   id="SystemDisabledBorder"              />
        <color name="WizardHeader"                  value="#303030"   id="SystemWizardHeader"                />
        <!-- additional colors. contrast-independent -->
        <color name="ActiveBorder"                  value="#abfda2"   id="SystemActiveBorder"                />
        <color name="SelectedBack"                  value="#00A000"   id="SystemSelectedBack"                />
        <color name="SelectedBorder"                value="#306439"   id="SystemSelectedBorder"              />
        <color name="SelectedGlare"                 value="#6ba775"   id="SystemSelectedGlare"               />
        <color name="SelectedFont"                  value="#FFFFFF"   id="SystemSelectedFont"                />
        <color name="SelectedBackSecondary"         value="#434950"                                          />
        <color name="SelectedFontSecondary"         value="#FFFFFF"                                          />
        <color name="SelectedBackInactive"          value="#828282"                                          />
        <color name="SelectedFontInactive"          value="#FFFFFF"                                          />
        <color name="SelectedBackInactiveSecondary" value="#494949"                                          />
        <color name="SelectedFontInactiveSecondary" value="#FFFFFF"                                          />
        <color name="EditSelectionBack"             value="#868686"   id="SystemEditSelectionBack"           />
        <color name="EditSelectionFont"             value="#CCCCCC"   id="SystemEditSelectionFont"           />
        <color name="PanelActiveCaption"            value="#00A000"   id="SystemPanelActiveCaption"          />
        <color name="ErrorFill"                     value="#A26262"   id="SystemErrorFill"                   />
        <color name="ErrorText"                     value="#E77878"   id="SystemErrorText"                   />
        <color name="WarningText"                   value="#EDAF51"   id="SystemWarningText"                 />
        <color name="ValidText"                     value="#90E778"   id="SystemValidText"                   />
        <color name="ValidationErrorBack"           value="#4F4444"   id="SystemValidationErrorBack"         />
        <color name="ValidationErrorInnerBorder"    value="#4D4242"   id="SystemValidationErrorInnerBorder"  />
        <color name="ValidationErrorIconBack"       value="#906161"   id="SystemValidationErrorIconBack"     />
        <color name="ValidationErrorIconGlyph"      value="#FDFDFD"   id="SystemValidationErrorIconGlyph"    />
        <color name="ValidationErrorIconGlyph"      value="#404040"   id="SystemValidationWarningIconGlyph"  />
        <color name="SysButtonInactiveHot"          value="#6da161"   id="SystemSysButtonInactiveHot"        />
        <color name="SysButtonActiveHot"            value="#00A000"   id="SystemSysButtonActiveHot"          />
        <color name="CloseButtonInactive"           value="#474747"   id="SystemCloseButtonInactive"         />
        <color name="CloseButtonInactiveHot"        value="#A00000"   id="SystemCloseButtonInactiveHot"      />
        <color name="CloseButtonActive"             value="#A00000"   id="SystemCloseButtonActive"           />
        <color name="CloseButtonActiveHot"          value="#C00000"   id="SystemCloseButtonActiveHot"        />
        <color name="CloseButtonPressed"            value="#800000"   id="SystemCloseButtonPressed"          />
        <color name="CloseButtonFontInactive"       value="#E5E5E5"   id="SystemCloseButtonFontInactive"     />
        <color name="CloseButtonFontActive"         value="#FFFFFF"   id="SystemCloseButtonFontActive"       />
        <color name="ClearButton"                   value="#CCCCCC"   id="SystemClearButton"                 />
        <color name="ClearButtonActive"             value="#FFFFFF"   id="SystemClearButtonActive"           />
        <color name="Search"                        value="#A5915F"   id="SystemSearch"                      />
        <color name="SearchCurrent"                 value="#A6842E"   id="SystemSearchCurrent"               />
        <color name="SearchFont"                    value="#3A372F"   id="SystemSearchFont"                  />
        <color name="Link"                          value="#6da161"   id="SystemLink"                        />
        <color name="LinkActiveHot"                 value="#e0f6dd"   id="SystemLinkActiveHot"               />
        <color name="ButtonLink"                    value="#6da161"   id="SystemButtonLink"                  />
        <color name="ButtonLinkActiveHot"           value="#ddf6dd"   id="SystemButtonLinkActiveHot"         />
        <color name="ButtonLinkChecked"             value="#BBBBBB"   id="SystemButtonLinkChecked"           />
        <color name="SelectedButtonLink"            value="#dcf1d7"   id="SystemSelectedButtonLink"          />
        <color name="SelectedButtonLinkActiveHot"   value="#FFFFFF"   id="SystemSelectedButtonLinkActiveHot" />
        <color name="SelectedButtonLinkChecked"     value="#cde2c8"   id="SystemSelectedButtonLinkChecked"   />
        <color name="ControlGlyph"                  value="#FDFDFD"   id="SystemControlGlyph"                />
        <color name="ControlGlyphHot"               value="#CCCCCC"   id="SystemControlGlyphHot"             />
        <color name="ControlGlyphFaded"             value="#7F7F7F"   id="SystemControlGlyphFaded"           />
        <color name="ControlGlyphSoft"              value="#CCCCCC"                                          />
        <color name="PreviewModelTop"               value="#555555"   id="SystemPreviewModelTop"             />
        <color name="PreviewModelBottom"            value="#484848"   id="SystemPreviewModelBottom"          />
        <color name="UndefinedValueFont"            value="#F4E48C"   id="SystemUndefinedValueFont"          />
        <color name="UndefinedValueFontDisabled"    value="#BFC28A"   id="SystemUndefinedValueFontDisabled"  />
        <color name="UndefinedValueFont2"           value="#999999"   id="SystemUndefinedValueFont2"         />
        <color name="UndefinedValueFontDisabled2"   value="#A5A5A5"   id="SystemUndefinedValueFontDisabled2" />

        <color name="PanelShapeHolderBackground"             value="#1D1D1D"   id="SystemPanelShapeHolderBackground"           />
        <color name="PanelShapeTextForeground"               value="#CBCBCB"   id="SystemPanelShapeTextForeground"             />
        <color name="PanelPcbFootprintBackground"            value="#1D1D1D"   id="SystemPanelPcbFootprintBackground"          />
        <color name="PanelPcbFootprintLabelForeground"       value="#E5E5E5"   id="SystemPanelPcbFootprintLabelForeground"     />
        <color name="PanelPcbFootprintTextBlockForeground"   value="#FFFFFF"   id="SystemPanelPcbFootprintTextBlockForeground" />

        <color name="ConnectionManagerPinColor"                    value="#FF8D5447"   id="SystemDesignConnectionManagerPinColor" />
        <color name="ConnectionManagerConnectionChangedColor"      value="#FF436045"   id="SystemDesignConnectionManagerConnectionChangedColor" />
        <color name="ConnectionManagerConnectionChangedNetColor"   value="#FF008F3B"   id="SystemDesignConnectionManagerConnectionChangedNetColor" />
        <color name="ConnectionManagerConnectionConflictColor"     value="#FF684646"   id="SystemDesignConnectionManagerConnectionConflictColor" />
        <color name="ConnectionManagerConnectionConflictNetColor"  value="#FF8D5446"   id="SystemDesignConnectionManagerConnectionConflictNetColor" />

        <color name="VersionControlGridRowSelectedFont"            value="#E5E5E5"     id="SystemVersionControlGridRowSelectedFont" />
    </colors>
</theme>

Теперь необходимо добавить нашу тему в файл EDP Themes.xml:

<themes format="1.0">
    <theme name="Altium Dark Gray" layout="Dark" default="true">
        <colors   file="Colors-AltiumDarkGray.xml" />
        <elements file="Elements-AltiumDark.xml" />
    </theme>
    <theme name="Altium Light Gray" layout="Dark">
        <colors   file="Colors-AltiumLightGray.xml" />
        <elements file="Elements-AltiumLight.xml" />
    </theme>
    <theme name="Devprodest Dark Green" layout="Dark">
        <colors   file="Colors-DevprodestDarkGreen.xml" />
        <elements file="Elements-AltiumDark.xml" />
    </theme>
</themes>

Собственно и всё.