Каковы стандартные цвета рабочего стола?

Каковы стандартные цвета уведомлений в 11.10? Я пишу приложение с AppIndicator, и мне бы хотелось, чтобы оно соответствовало цветовой схеме рабочего стола.

Есть ли где-нибудь этот материал задокументирован? Я проверил developer.ubuntu.com, но безуспешно.

4
задан 22 November 2012 в 02:24

1 ответ

Предположение, что реальный вопрос дан в комментарии (и Python принятия, так как Вы добавили тег py-appindicator): "1.), Как я получаю цвета из глобального меню? 2.) И как я тяну цвета на изображение для моего appindicator?"

Ваш второй вопрос на самом деле состоит из двух вопросов: 2.a), Как я рисую изображение? 2.b), Как определить знаковую тему Appindicator?

У меня нет ответа на 2.b). Appindicator или чрезвычайно плохо документируется, или документация чрезвычайно хорошо скрыта. Некоторые не так полезный материал могут быть найдены здесь и здесь. Вероятно, необходимо работать myindicator.set_icon_theme_path но я не нашел названия различных значков, которые используются.

К 1.): Для получения цветов gtk виджета программно для использования в Каире (для привлечения их позже), можно использовать что-то вроде этого (для меню):

import gtk
def get_menubar_colors_for_cairo():
    w = gtk.Window()
    b = gtk.MenuBar()
    w.add(b)
    w.show_all()
    w.hide()
    style = b.get_style()
    del(w)
    del(b)
    bg = {}
    fg = {}
    for name, state in [("normal", gtk.STATE_NORMAL),
                        ("active", gtk.STATE_ACTIVE),
                        ("prelight", gtk.STATE_PRELIGHT),
                        ("selected", gtk.STATE_SELECTED),
                        ("insensitive", gtk.STATE_INSENSITIVE)]:
        bg[name] = (style.bg[state].red / 65535.0, style.bg[state].green / 65535.0, style.bg[state].blue / 65535.0)
        fg[name] = (style.fg[state].red / 65535.0, style.fg[state].green / 65535.0, style.fg[state].blue / 65535.0)
    return fg, bg

Это дает Вам forground и стиль фона для различных состояний. (Существуют, вероятно, лучшие пути, но это должно все еще работать...),

Обратите внимание, что яркий синий или яркий красный, кажется, не часть цветов стандартного меню. Я не мог узнать, куда они происходят из.

Обратите внимание также, что, если gtk тема изменяется, но Вы оставляете свои значки, как они, они выделятся, так как у них затем могли бы быть неправильные цвета.

К 2.a), можно использовать Каир для рисования изображений на различные поверхности (png, PDF, svg, gtk виджеты...). Вот пример, который тянет некоторые прямоугольники на png, появляется и сохранил файлы в Вашем текущем рабочем каталоге. Каждому прямоугольнику потянули основной цвет на цвет фона данного состояния:

import cairo
def draw_a_rect(fg, bg, state, outfilename):
    surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
    context = cairo.Context(surf)

    context.rectangle(0, 0, 200, 200)
    context.set_source_rgb(*bg[state])
    context.fill()

    context.rectangle(50, 50, 100, 100)
    context.set_source_rgb(*fg[state])
    context.fill()
    surf.write_to_png(outfilename % state)

fg, bg = get_menubar_colors_for_cairo()
for state_name in ["normal", "active", "prelight", "selected", "insensitive"]:
    draw_a_rect(fg, bg, state_name, "test_%s.png")

Последнее примечание: Вы, вероятно, хотите оставить фон своих значков прозрачным, таким образом, у Вас есть один цвет меньше для волнения о.

2
ответ дан 22 November 2012 в 02:24

Другие вопросы по тегам:

Похожие вопросы: