Quais são as cores padrão da área de trabalho?

4

Quais são as cores de notificação padrão no 11,10? Estou escrevendo um aplicativo com um AppIndicator e gostaria que ele correspondesse ao esquema de cores da área de trabalho.

Existe algum lugar onde esse material é documentado? Eu chequei o developer.ubuntu.com, mas sem sorte.

    
por Erigami 14.10.2011 / 03:09

1 resposta

2

Assumindo que sua pergunta real é dada em seu comentário (e assumindo python desde que você tenha adicionado uma tag py-appindicator): " 1.) Como faço para obter as cores do menu global? 2.) E como faço para desenhar as cores na imagem para o meu appindicator? "

Sua segunda pergunta é composta de duas perguntas: 2.a) Como faço para desenhar uma imagem? 2.b) Como definir um tema de ícone do Appindicator?

Não tenho resposta para 2.b). O Appindicator está extremamente mal documentado ou a documentação está extremamente bem oculta. Algumas coisas não tão úteis podem ser encontradas aqui e aqui . Você provavelmente terá que executar myindicator.set_icon_theme_path , mas não encontrei os nomes dos diferentes ícones usados.

Para 1.): Para obter as cores de um widget gtk programaticamente para uso em cairo (para desenhá-las mais tarde) você pode usar algo assim (para um menu ):

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

Isso lhe dá o estilo forground e background para diferentes estados. (Provavelmente há maneiras melhores, mas isso ainda deve funcionar ...)

Observe que o vermelho azul ou vermelho brilhante não parece fazer parte das cores padrão do menu. Eu não consegui descobrir de onde eles vêm.

Note também que, se o tema gtk mudar, mas você deixar seus ícones como estão, eles se destacarão, pois poderão ter as cores erradas.

Para 2.a) Você pode usar o cairo para desenhar imagens em várias superfícies (png, pdf, svg, widgets gtk, ...). Aqui está um exemplo que desenha alguns retângulos em superfícies png e salva os arquivos em seu diretório de trabalho atual. Cada retângulo tem a cor do primeiro plano desenhada na cor de fundo do estado indicado:

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")

Uma última nota: você provavelmente quer deixar o plano de fundo dos seus ícones transparente, então você tem uma cor a menos para se preocupar.

    
por xubuntix 21.10.2011 / 15:19