[pygobject] demo: Add new Gtk.FlowBox example
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] demo: Add new Gtk.FlowBox example
- Date: Wed, 6 Dec 2017 16:30:53 +0000 (UTC)
commit f8ff3b5e0e769e6db1509426af28728129780529
Author: Gian Mario Tagliaretti <gianmt gnome org>
Date: Thu Sep 4 08:51:10 2014 +0100
demo: Add new Gtk.FlowBox example
Added a new example for the Gtk.FlowBox class added in GTK+ 3.12.
This example additionally makes use of Gtk.HeaderBar.
https://bugzilla.gnome.org/show_bug.cgi?id=735918
demo/demos/flowbox.py | 750 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 750 insertions(+), 0 deletions(-)
---
diff --git a/demo/demos/flowbox.py b/demo/demos/flowbox.py
new file mode 100755
index 0000000..f28a733
--- /dev/null
+++ b/demo/demos/flowbox.py
@@ -0,0 +1,750 @@
+#!/usr/bin/env python
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+#
+# Copyright (C) 2014 Gian Mario Tagliaretti <gianmt gnome org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+title = "FlowBox"
+description = """
+A FlowBox allows flexible and responsive grids which reflow as needed and
+support sorting and filtering. The children of a GtkFlowBox are regular widgets.
+"""
+
+from gi.repository import Gtk, Gdk
+
+
+class FlowBoxApp:
+ def __init__(self):
+ window = Gtk.Window()
+ window.connect('destroy', lambda x: Gtk.main_quit())
+ window.set_border_width(10)
+ window.set_default_size(600, 400)
+
+ header = Gtk.HeaderBar(title="Flow Box")
+ header.set_subtitle("Sample FlowBox app")
+ header.props.show_close_button = True
+
+ window.set_titlebar(header)
+
+ scrolled = Gtk.ScrolledWindow()
+ scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
+
+ flowbox = Gtk.FlowBox()
+ flowbox.set_valign(Gtk.Align.START)
+ flowbox.set_max_children_per_line(30)
+ flowbox.set_selection_mode(Gtk.SelectionMode.NONE)
+
+ self.create_flowbox(flowbox)
+
+ scrolled.add(flowbox)
+
+ window.add(scrolled)
+ window.show_all()
+
+ def color_swatch_new(self, str_color):
+ rgba = Gdk.RGBA()
+ rgba.parse(str_color)
+
+ text_rgba = Gdk.RGBA() # default is white
+ if max(rgba.red, rgba.green, rgba.blue) > 0.6:
+ text_rgba.parse('black')
+
+ label = Gtk.Label(label=str_color)
+ label.override_background_color(0, rgba)
+ label.override_color(0, text_rgba)
+ return label
+
+ def create_flowbox(self, flowbox):
+ colors = [
+ 'AliceBlue',
+ 'AntiqueWhite',
+ 'AntiqueWhite1',
+ 'AntiqueWhite2',
+ 'AntiqueWhite3',
+ 'AntiqueWhite4',
+ 'aqua',
+ 'aquamarine',
+ 'aquamarine1',
+ 'aquamarine2',
+ 'aquamarine3',
+ 'aquamarine4',
+ 'azure',
+ 'azure1',
+ 'azure2',
+ 'azure3',
+ 'azure4',
+ 'beige',
+ 'bisque',
+ 'bisque1',
+ 'bisque2',
+ 'bisque3',
+ 'bisque4',
+ 'black',
+ 'BlanchedAlmond',
+ 'blue',
+ 'blue1',
+ 'blue2',
+ 'blue3',
+ 'blue4',
+ 'BlueViolet',
+ 'brown',
+ 'brown1',
+ 'brown2',
+ 'brown3',
+ 'brown4',
+ 'burlywood',
+ 'burlywood1',
+ 'burlywood2',
+ 'burlywood3',
+ 'burlywood4',
+ 'CadetBlue',
+ 'CadetBlue1',
+ 'CadetBlue2',
+ 'CadetBlue3',
+ 'CadetBlue4',
+ 'chartreuse',
+ 'chartreuse1',
+ 'chartreuse2',
+ 'chartreuse3',
+ 'chartreuse4',
+ 'chocolate',
+ 'chocolate1',
+ 'chocolate2',
+ 'chocolate3',
+ 'chocolate4',
+ 'coral',
+ 'coral1',
+ 'coral2',
+ 'coral3',
+ 'coral4',
+ 'CornflowerBlue',
+ 'cornsilk',
+ 'cornsilk1',
+ 'cornsilk2',
+ 'cornsilk3',
+ 'cornsilk4',
+ 'crimson',
+ 'cyan',
+ 'cyan1',
+ 'cyan2',
+ 'cyan3',
+ 'cyan4',
+ 'DarkBlue',
+ 'DarkCyan',
+ 'DarkGoldenrod',
+ 'DarkGoldenrod1',
+ 'DarkGoldenrod2',
+ 'DarkGoldenrod3',
+ 'DarkGoldenrod4',
+ 'DarkGray',
+ 'DarkGreen',
+ 'DarkGrey',
+ 'DarkKhaki',
+ 'DarkMagenta',
+ 'DarkOliveGreen',
+ 'DarkOliveGreen1',
+ 'DarkOliveGreen2',
+ 'DarkOliveGreen3',
+ 'DarkOliveGreen4',
+ 'DarkOrange',
+ 'DarkOrange1',
+ 'DarkOrange2',
+ 'DarkOrange3',
+ 'DarkOrange4',
+ 'DarkOrchid',
+ 'DarkOrchid1',
+ 'DarkOrchid2',
+ 'DarkOrchid3',
+ 'DarkOrchid4',
+ 'DarkRed',
+ 'DarkSalmon',
+ 'DarkSeaGreen',
+ 'DarkSeaGreen1',
+ 'DarkSeaGreen2',
+ 'DarkSeaGreen3',
+ 'DarkSeaGreen4',
+ 'DarkSlateBlue',
+ 'DarkSlateGray',
+ 'DarkSlateGray1',
+ 'DarkSlateGray2',
+ 'DarkSlateGray3',
+ 'DarkSlateGray4',
+ 'DarkSlateGrey',
+ 'DarkTurquoise',
+ 'DarkViolet',
+ 'DeepPink',
+ 'DeepPink1',
+ 'DeepPink2',
+ 'DeepPink3',
+ 'DeepPink4',
+ 'DeepSkyBlue',
+ 'DeepSkyBlue1',
+ 'DeepSkyBlue2',
+ 'DeepSkyBlue3',
+ 'DeepSkyBlue4',
+ 'DimGray',
+ 'DimGrey',
+ 'DodgerBlue',
+ 'DodgerBlue1',
+ 'DodgerBlue2',
+ 'DodgerBlue3',
+ 'DodgerBlue4',
+ 'firebrick',
+ 'firebrick1',
+ 'firebrick2',
+ 'firebrick3',
+ 'firebrick4',
+ 'FloralWhite',
+ 'ForestGreen',
+ 'fuchsia',
+ 'gainsboro',
+ 'GhostWhite',
+ 'gold',
+ 'gold1',
+ 'gold2',
+ 'gold3',
+ 'gold4',
+ 'goldenrod',
+ 'goldenrod1',
+ 'goldenrod2',
+ 'goldenrod3',
+ 'goldenrod4',
+ 'gray',
+ 'gray0',
+ 'gray1',
+ 'gray2',
+ 'gray3',
+ 'gray4',
+ 'gray5',
+ 'gray6',
+ 'gray7',
+ 'gray8',
+ 'gray9',
+ 'gray10',
+ 'gray11',
+ 'gray12',
+ 'gray13',
+ 'gray14',
+ 'gray15',
+ 'gray16',
+ 'gray17',
+ 'gray18',
+ 'gray19',
+ 'gray20',
+ 'gray21',
+ 'gray22',
+ 'gray23',
+ 'gray24',
+ 'gray25',
+ 'gray26',
+ 'gray27',
+ 'gray28',
+ 'gray29',
+ 'gray30',
+ 'gray31',
+ 'gray32',
+ 'gray33',
+ 'gray34',
+ 'gray35',
+ 'gray36',
+ 'gray37',
+ 'gray38',
+ 'gray39',
+ 'gray40',
+ 'gray41',
+ 'gray42',
+ 'gray43',
+ 'gray44',
+ 'gray45',
+ 'gray46',
+ 'gray47',
+ 'gray48',
+ 'gray49',
+ 'gray50',
+ 'gray51',
+ 'gray52',
+ 'gray53',
+ 'gray54',
+ 'gray55',
+ 'gray56',
+ 'gray57',
+ 'gray58',
+ 'gray59',
+ 'gray60',
+ 'gray61',
+ 'gray62',
+ 'gray63',
+ 'gray64',
+ 'gray65',
+ 'gray66',
+ 'gray67',
+ 'gray68',
+ 'gray69',
+ 'gray70',
+ 'gray71',
+ 'gray72',
+ 'gray73',
+ 'gray74',
+ 'gray75',
+ 'gray76',
+ 'gray77',
+ 'gray78',
+ 'gray79',
+ 'gray80',
+ 'gray81',
+ 'gray82',
+ 'gray83',
+ 'gray84',
+ 'gray85',
+ 'gray86',
+ 'gray87',
+ 'gray88',
+ 'gray89',
+ 'gray90',
+ 'gray91',
+ 'gray92',
+ 'gray93',
+ 'gray94',
+ 'gray95',
+ 'gray96',
+ 'gray97',
+ 'gray98',
+ 'gray99',
+ 'gray100',
+ 'green',
+ 'green1',
+ 'green2',
+ 'green3',
+ 'green4',
+ 'GreenYellow',
+ 'grey',
+ 'grey0',
+ 'grey1',
+ 'grey2',
+ 'grey3',
+ 'grey4',
+ 'grey5',
+ 'grey6',
+ 'grey7',
+ 'grey8',
+ 'grey9',
+ 'grey10',
+ 'grey11',
+ 'grey12',
+ 'grey13',
+ 'grey14',
+ 'grey15',
+ 'grey16',
+ 'grey17',
+ 'grey18',
+ 'grey19',
+ 'grey20',
+ 'grey21',
+ 'grey22',
+ 'grey23',
+ 'grey24',
+ 'grey25',
+ 'grey26',
+ 'grey27',
+ 'grey28',
+ 'grey29',
+ 'grey30',
+ 'grey31',
+ 'grey32',
+ 'grey33',
+ 'grey34',
+ 'grey35',
+ 'grey36',
+ 'grey37',
+ 'grey38',
+ 'grey39',
+ 'grey40',
+ 'grey41',
+ 'grey42',
+ 'grey43',
+ 'grey44',
+ 'grey45',
+ 'grey46',
+ 'grey47',
+ 'grey48',
+ 'grey49',
+ 'grey50',
+ 'grey51',
+ 'grey52',
+ 'grey53',
+ 'grey54',
+ 'grey55',
+ 'grey56',
+ 'grey57',
+ 'grey58',
+ 'grey59',
+ 'grey60',
+ 'grey61',
+ 'grey62',
+ 'grey63',
+ 'grey64',
+ 'grey65',
+ 'grey66',
+ 'grey67',
+ 'grey68',
+ 'grey69',
+ 'grey70',
+ 'grey71',
+ 'grey72',
+ 'grey73',
+ 'grey74',
+ 'grey75',
+ 'grey76',
+ 'grey77',
+ 'grey78',
+ 'grey79',
+ 'grey80',
+ 'grey81',
+ 'grey82',
+ 'grey83',
+ 'grey84',
+ 'grey85',
+ 'grey86',
+ 'grey87',
+ 'grey88',
+ 'grey89',
+ 'grey90',
+ 'grey91',
+ 'grey92',
+ 'grey93',
+ 'grey94',
+ 'grey95',
+ 'grey96',
+ 'grey97',
+ 'grey98',
+ 'grey99',
+ 'grey100',
+ 'honeydew',
+ 'honeydew1',
+ 'honeydew2',
+ 'honeydew3',
+ 'honeydew4',
+ 'HotPink',
+ 'HotPink1',
+ 'HotPink2',
+ 'HotPink3',
+ 'HotPink4',
+ 'IndianRed',
+ 'IndianRed1',
+ 'IndianRed2',
+ 'IndianRed3',
+ 'IndianRed4',
+ 'indigo',
+ 'ivory',
+ 'ivory1',
+ 'ivory2',
+ 'ivory3',
+ 'ivory4',
+ 'khaki',
+ 'khaki1',
+ 'khaki2',
+ 'khaki3',
+ 'khaki4',
+ 'lavender',
+ 'LavenderBlush',
+ 'LavenderBlush1',
+ 'LavenderBlush2',
+ 'LavenderBlush3',
+ 'LavenderBlush4',
+ 'LawnGreen',
+ 'LemonChiffon',
+ 'LemonChiffon1',
+ 'LemonChiffon2',
+ 'LemonChiffon3',
+ 'LemonChiffon4',
+ 'LightBlue',
+ 'LightBlue1',
+ 'LightBlue2',
+ 'LightBlue3',
+ 'LightBlue4',
+ 'LightCoral',
+ 'LightCyan',
+ 'LightCyan1',
+ 'LightCyan2',
+ 'LightCyan3',
+ 'LightCyan4',
+ 'LightGoldenrod',
+ 'LightGoldenrod1',
+ 'LightGoldenrod2',
+ 'LightGoldenrod3',
+ 'LightGoldenrod4',
+ 'LightGoldenrodYellow',
+ 'LightGray',
+ 'LightGreen',
+ 'LightGrey',
+ 'LightPink',
+ 'LightPink1',
+ 'LightPink2',
+ 'LightPink3',
+ 'LightPink4',
+ 'LightSalmon',
+ 'LightSalmon1',
+ 'LightSalmon2',
+ 'LightSalmon3',
+ 'LightSalmon4',
+ 'LightSeaGreen',
+ 'LightSkyBlue',
+ 'LightSkyBlue1',
+ 'LightSkyBlue2',
+ 'LightSkyBlue3',
+ 'LightSkyBlue4',
+ 'LightSlateBlue',
+ 'LightSlateGray',
+ 'LightSlateGrey',
+ 'LightSteelBlue',
+ 'LightSteelBlue1',
+ 'LightSteelBlue2',
+ 'LightSteelBlue3',
+ 'LightSteelBlue4',
+ 'LightYellow',
+ 'LightYellow1',
+ 'LightYellow2',
+ 'LightYellow3',
+ 'LightYellow4',
+ 'lime',
+ 'LimeGreen',
+ 'linen',
+ 'magenta',
+ 'magenta1',
+ 'magenta2',
+ 'magenta3',
+ 'magenta4',
+ 'maroon',
+ 'maroon1',
+ 'maroon2',
+ 'maroon3',
+ 'maroon4',
+ 'MediumAquamarine',
+ 'MediumBlue',
+ 'MediumOrchid',
+ 'MediumOrchid1',
+ 'MediumOrchid2',
+ 'MediumOrchid3',
+ 'MediumOrchid4',
+ 'MediumPurple',
+ 'MediumPurple1',
+ 'MediumPurple2',
+ 'MediumPurple3',
+ 'MediumPurple4',
+ 'MediumSeaGreen',
+ 'MediumSlateBlue',
+ 'MediumSpringGreen',
+ 'MediumTurquoise',
+ 'MediumVioletRed',
+ 'MidnightBlue',
+ 'MintCream',
+ 'MistyRose',
+ 'MistyRose1',
+ 'MistyRose2',
+ 'MistyRose3',
+ 'MistyRose4',
+ 'moccasin',
+ 'NavajoWhite',
+ 'NavajoWhite1',
+ 'NavajoWhite2',
+ 'NavajoWhite3',
+ 'NavajoWhite4',
+ 'navy',
+ 'NavyBlue',
+ 'OldLace',
+ 'olive',
+ 'OliveDrab',
+ 'OliveDrab1',
+ 'OliveDrab2',
+ 'OliveDrab3',
+ 'OliveDrab4',
+ 'orange',
+ 'orange1',
+ 'orange2',
+ 'orange3',
+ 'orange4',
+ 'OrangeRed',
+ 'OrangeRed1',
+ 'OrangeRed2',
+ 'OrangeRed3',
+ 'OrangeRed4',
+ 'orchid',
+ 'orchid1',
+ 'orchid2',
+ 'orchid3',
+ 'orchid4',
+ 'PaleGoldenrod',
+ 'PaleGreen',
+ 'PaleGreen1',
+ 'PaleGreen2',
+ 'PaleGreen3',
+ 'PaleGreen4',
+ 'PaleTurquoise',
+ 'PaleTurquoise1',
+ 'PaleTurquoise2',
+ 'PaleTurquoise3',
+ 'PaleTurquoise4',
+ 'PaleVioletRed',
+ 'PaleVioletRed1',
+ 'PaleVioletRed2',
+ 'PaleVioletRed3',
+ 'PaleVioletRed4',
+ 'PapayaWhip',
+ 'PeachPuff',
+ 'PeachPuff1',
+ 'PeachPuff2',
+ 'PeachPuff3',
+ 'PeachPuff4',
+ 'peru',
+ 'pink',
+ 'pink1',
+ 'pink2',
+ 'pink3',
+ 'pink4',
+ 'plum',
+ 'plum1',
+ 'plum2',
+ 'plum3',
+ 'plum4',
+ 'PowderBlue',
+ 'purple',
+ 'purple1',
+ 'purple2',
+ 'purple3',
+ 'purple4',
+ 'red',
+ 'red1',
+ 'red2',
+ 'red3',
+ 'red4',
+ 'RosyBrown',
+ 'RosyBrown1',
+ 'RosyBrown2',
+ 'RosyBrown3',
+ 'RosyBrown4',
+ 'RoyalBlue',
+ 'RoyalBlue1',
+ 'RoyalBlue2',
+ 'RoyalBlue3',
+ 'RoyalBlue4',
+ 'SaddleBrown',
+ 'salmon',
+ 'salmon1',
+ 'salmon2',
+ 'salmon3',
+ 'salmon4',
+ 'SandyBrown',
+ 'SeaGreen',
+ 'SeaGreen1',
+ 'SeaGreen2',
+ 'SeaGreen3',
+ 'SeaGreen4',
+ 'seashell',
+ 'seashell1',
+ 'seashell2',
+ 'seashell3',
+ 'seashell4',
+ 'sienna',
+ 'sienna1',
+ 'sienna2',
+ 'sienna3',
+ 'sienna4',
+ 'silver',
+ 'SkyBlue',
+ 'SkyBlue1',
+ 'SkyBlue2',
+ 'SkyBlue3',
+ 'SkyBlue4',
+ 'SlateBlue',
+ 'SlateBlue1',
+ 'SlateBlue2',
+ 'SlateBlue3',
+ 'SlateBlue4',
+ 'SlateGray',
+ 'SlateGray1',
+ 'SlateGray2',
+ 'SlateGray3',
+ 'SlateGray4',
+ 'SlateGrey',
+ 'snow',
+ 'snow1',
+ 'snow2',
+ 'snow3',
+ 'snow4',
+ 'SpringGreen',
+ 'SpringGreen1',
+ 'SpringGreen2',
+ 'SpringGreen3',
+ 'SpringGreen4',
+ 'SteelBlue',
+ 'SteelBlue1',
+ 'SteelBlue2',
+ 'SteelBlue3',
+ 'SteelBlue4',
+ 'tan',
+ 'tan1',
+ 'tan2',
+ 'tan3',
+ 'tan4',
+ 'teal',
+ 'thistle',
+ 'thistle1',
+ 'thistle2',
+ 'thistle3',
+ 'thistle4',
+ 'tomato',
+ 'tomato1',
+ 'tomato2',
+ 'tomato3',
+ 'tomato4',
+ 'turquoise',
+ 'turquoise1',
+ 'turquoise2',
+ 'turquoise3',
+ 'turquoise4',
+ 'violet',
+ 'VioletRed',
+ 'VioletRed1',
+ 'VioletRed2',
+ 'VioletRed3',
+ 'VioletRed4',
+ 'wheat',
+ 'wheat1',
+ 'wheat2',
+ 'wheat3',
+ 'wheat4',
+ 'white',
+ 'WhiteSmoke',
+ 'yellow',
+ 'yellow1',
+ 'yellow2',
+ 'yellow3',
+ 'yellow4',
+ 'YellowGreen'
+ ]
+
+ for color in colors:
+ button = self.color_swatch_new(color)
+ flowbox.add(button)
+
+def main(demoapp=None):
+ FlowBoxApp()
+ Gtk.main()
+
+if __name__ == '__main__':
+ main()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]