Ubuntu 12.10 - defina cores de linhas alternadas em gtk3 TreeView

2

O Ubuntu costumava ter cores de linhas alternadas para os widgets do TreeView do gtk. Algumas aplicações ainda fazem, como o Banshee. Cores de linhas alternadas realmente ajudariam meu aplicativo (escrito em python 2.7 e usando gi.repository e não pygtk) que estou desenvolvendo.

Eu sei que posso definir uma dica com

treeview.set_rules_hint(True)

Isso não está funcionando, no entanto. Alguém sabe como ativar as cores de linhas alternadas?

    
por Valakyr 28.02.2013 / 22:56

1 resposta

0

O fato de o set_rules_hint(True) exibir ou não cores de linha alternadas é compatível com o tema. Com o padrão do Ubuntu, Ambience, não haverá linhas alternadas. Como a documentação afirma:

  

Não use só porque prefere a aparência dos governados   árvore; essa é uma questão para o tema. Alguns temas desenham linhas de árvores   em cores alternadas, mesmo quando as regras são desativadas, e usuários que   prefira que a aparência o tempo todo pode escolher esses temas. Você   deve chamar essa função apenas como uma dica semântica para o mecanismo de tema   que sua árvore faz cores alternadas útil de um funcional   ponto de vista (uma vez que tem muitas colunas, geralmente).

Dito isto, você pode forçá-lo se você realmente quiser. Por exemplo, isso funcionará no Ambiente:

view.set_rules_hint(True)
style_context = self.get_style_context()
css_provider = Gtk.CssProvider()
css = """
    GtkTreeView row:nth-child(even) {
        background-color: shade(@base_color, 0.9);
    }

    GtkTreeView row:nth-child(odd) {
        background-color: shade(@base_color, 1.0);
    }
    """
css_provider.load_from_data(css.encode('UTF-8'))
screen = Gdk.Screen.get_default()
style_context.add_provider_for_screen(screen, css_provider,
                                  Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

Embora você precise estar ciente de que isso pode interferir em outros temas. Alguns temas usarão @theme_base_color em vez de @base_color Você pode, é claro, codificar a cor, mas quem sabe como vai ficar com o tema do usuário ...

    
por andrewsomething 21.08.2013 / 03:22