hsudoku 0.1.0.0 → 0.1.0.1
raw patch · 5 files changed
+3156/−2 lines, 5 filesdep ~hspecbinary-addedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hspec
API changes (from Hackage documentation)
Files
- gui/hsudoku.ui +2968/−0
- gui/icon.png binary
- gui/theme.css +131/−0
- hsudoku.cabal +37/−2
- test/Travis.hs +20/−0
+ gui/hsudoku.ui view
@@ -0,0 +1,2968 @@+<?xml version="1.0" encoding="UTF-8"?>+<!-- Generated with glade 3.20.0 -->+<interface>+ <requires lib="gtk+" version="3.20"/>+ <!-- interface-css-provider-path theme.css -->+ <object class="GtkPopover" id="inputPopover">+ <property name="name">inputPopover</property>+ <property name="can_focus">False</property>+ <property name="relative_to">box1</property>+ <property name="modal">False</property>+ <child>+ <object class="GtkBox" id="box1">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <child>+ <object class="GtkButton" id="input1">+ <property name="label" translatable="yes">1</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input4">+ <property name="label" translatable="yes">4</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input7">+ <property name="label" translatable="yes">7</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input2">+ <property name="label" translatable="yes">2</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input5">+ <property name="label" translatable="yes">5</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input8">+ <property name="label" translatable="yes">8</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input3">+ <property name="label" translatable="yes">3</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input6">+ <property name="label" translatable="yes">6</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="input9">+ <property name="label" translatable="yes">9</property>+ <property name="name">inputPopover</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="inputClear">+ <property name="label" translatable="yes">Clear</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="inputSolve">+ <property name="label" translatable="yes">Cheat</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">2</property>+ </packing>+ </child>+ </object>+ </child>+ </object>+ <object class="GtkWindow" id="mainWindow">+ <property name="can_focus">False</property>+ <property name="title" translatable="yes">Hsudoku</property>+ <property name="window_position">center</property>+ <property name="icon">icon.png</property>+ <child>+ <object class="GtkOverlay">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox" id="mainBox">+ <property name="name">container</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkGrid">+ <property name="name">mainGrid</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell1">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell1</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell10">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell10</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell19">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell19</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell2">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell2</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell11">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell11</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell20">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell20</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell3">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell3</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell12">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell12</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell21">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell21</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell28">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell28</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell37">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell37</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell46">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell46</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell29">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell29</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell38">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell38</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell47">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell47</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell30">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell30</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell39">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell39</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell48">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell48</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell55">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell55</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell64">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell64</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell73">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell73</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell56">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell56</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell65">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell65</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell74">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell74</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell57">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell57</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell66">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell66</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell75">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell75</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell4">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell4</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell13">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell13</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell22">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell22</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell5">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell5</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell14">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell14</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell23">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell23</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell6">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell6</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell15">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell15</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell24">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell24</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell31">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell31</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell40">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell40</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell49">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell49</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell32">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell32</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell41">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell41</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell50">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell50</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell33">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell33</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell42">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell42</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell51">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell51</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell58">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell58</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell67">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell67</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell76">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell76</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell59">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell59</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell68">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell68</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell77">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell77</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell60">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell60</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="name">cell69</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell69">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell69</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell78">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell78</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell7">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell7</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell16">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell16</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell25">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell25</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell8">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell8</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell17">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell17</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell26">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell26</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell9">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell9</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell18">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell18</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell27">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell27</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell34">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell34</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell43">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell43</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell52">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell52</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell35">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell35</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell44">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell44</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell53">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell53</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell36">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell36</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell45">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell45</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell54">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell54</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell61">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell61</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell70">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell70</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell79">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell79</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell62">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell62</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell71">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell71</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell80">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell80</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell63">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell63</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell72">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell72</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkBox">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkButton" id="cell81">+ <property name="label" translatable="yes"> </property>+ <property name="name">cell81</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="relief">none</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">2</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="expand">True</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="name">statusBar</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="row_spacing">20</property>+ <property name="row_homogeneous">True</property>+ <property name="column_homogeneous">True</property>+ <child>+ <object class="GtkButton" id="menuButton">+ <property name="label" translatable="yes">Abort</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="solveButton">+ <property name="label" translatable="yes">Cheat</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="checkButton">+ <property name="label" translatable="yes">Check</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">1</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="index">-1</property>+ </packing>+ </child>+ <child type="overlay">+ <object class="GtkOverlay" id="menu">+ <property name="name">menu</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <child>+ <object class="GtkBox">+ <property name="name">backdrop</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <placeholder/>+ </child>+ </object>+ <packing>+ <property name="index">-1</property>+ </packing>+ </child>+ <child type="overlay">+ <object class="GtkBox">+ <property name="name">menu-text</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">True</property>+ <property name="orientation">vertical</property>+ <child>+ <object class="GtkLabel">+ <property name="name">title</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="label" translatable="yes">λsudoku</property>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkLabel">+ <property name="name">copyright</property>+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="label" translatable="yes">© Marcel Moosbrugger, 2017</property>+ <style>+ <class name="light"/>+ </style>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">1</property>+ </packing>+ </child>+ <child>+ <object class="GtkLabel">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="label" translatable="yes">New game:</property>+ <style>+ <class name="light"/>+ </style>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">2</property>+ </packing>+ </child>+ <child>+ <object class="GtkGrid">+ <property name="visible">True</property>+ <property name="can_focus">False</property>+ <property name="hexpand">True</property>+ <property name="vexpand">False</property>+ <property name="row_spacing">10</property>+ <property name="column_spacing">10</property>+ <property name="row_homogeneous">True</property>+ <property name="column_homogeneous">True</property>+ <child>+ <object class="GtkButton" id="gameEasy">+ <property name="label" translatable="yes">Easy</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="has_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">0</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="gameMedium">+ <property name="label" translatable="yes">Medium</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">1</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="gameHard">+ <property name="label" translatable="yes">Hard</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">2</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ <child>+ <object class="GtkButton" id="gameEvil">+ <property name="label" translatable="yes">Evil</property>+ <property name="visible">True</property>+ <property name="can_focus">True</property>+ <property name="receives_default">True</property>+ </object>+ <packing>+ <property name="left_attach">3</property>+ <property name="top_attach">0</property>+ </packing>+ </child>+ </object>+ <packing>+ <property name="expand">False</property>+ <property name="fill">True</property>+ <property name="position">3</property>+ </packing>+ </child>+ <child>+ <placeholder/>+ </child>+ </object>+ </child>+ </object>+ </child>+ </object>+ </child>+ </object>+</interface>
+ gui/icon.png view
binary file changed (absent → 2691 bytes)
+ gui/theme.css view
@@ -0,0 +1,131 @@+#mainWindow {+ background: #ECF0F1;+}++#container {+ padding: 15px;+}++#menu #backdrop {+ background: #2C3E50;+ opacity: 0.8;+}++#menu #title {+ font-size: 58px;+ margin-top: 50px;+ margin-bottom: 5px;+ color: #E74C3C;+ text-shadow: 0px 0px 5px #2C3E50;+}++#menu .light {+ color: #ECF0F1;+ font-size: 10px;+ margin-bottom: 10px;+}++#menu #copyright {+ margin-bottom: 125px;+}++#menu #menu-text {+ padding: 20px;+}++#mainGrid {+ border: 2px solid #999;+}++#mainGrid > grid:nth-child(2n+1) {+ background: #E1E5E5;+}++#mainGrid > grid:nth-child(4),+#mainGrid > grid:nth-child(5),+#mainGrid > grid:nth-child(6) {+ border-style: solid;+ border-color: #999;+ border-left-width: 2px;+ border-right-width: 2px;+}+++#mainGrid > grid:nth-child(2),+#mainGrid > grid:nth-child(5),+#mainGrid > grid:nth-child(8) {+ border-style: solid;+ border-color: #999;+ border-top-width: 2px;+ border-bottom-width: 2px;+}++#mainGrid > grid > *:nth-child(4) ,+#mainGrid > grid > *:nth-child(5) ,+#mainGrid > grid > *:nth-child(6) {+ border-style: solid;+ border-color: #bbb;+ border-left-width: 1px;+ border-right-width: 1px;+}++#mainGrid > grid > *:nth-child(2),+#mainGrid > grid > *:nth-child(5),+#mainGrid > grid > *:nth-child(8) {+ border-style: solid;+ border-color: #bbb;+ border-top-width: 1px;+ border-bottom-width: 1px;+}++#mainGrid box label {+ min-width: 60px;+ min-height: 60px;+ font-size: 18px;+}++#mainGrid button {+ border-radius: 0;+ border: 0;+ background: transparent;+}++#mainGrid button:hover {+ background: #3498DB;+}++#mainGrid button:active {+ background: #2980B9;+}++#mainGrid button:focus {+ background: #E74C3C;+}++#mainGrid button.correct {+ animation: correct 0.75s ease-out;+}++#mainGrid button.incorrect {+ animation: incorrect 0.75s ease-out;+}++#inputPopover grid button {+ min-width: 20px;+ min-height: 20px;+}++#statusBar {+ padding-top: 15px;+}+++@keyframes correct {+ 0% {background-color: #6AE765;}+ 100% {background-color: transparent;}+}++@keyframes incorrect {+ 0% {background-color: #E74C3C;}+ 100% {background-color: transparent;}+}
hsudoku.cabal view
@@ -1,5 +1,5 @@ name: hsudoku-version: 0.1.0.0+version: 0.1.0.1 synopsis: Sudoku game with a GTK3 interface description: This package realizes a graphical GTK3 sudoku game. Moreover it provides modules for loading and solving sudoku grids.@@ -13,7 +13,12 @@ bug-reports: https://github.com/marcelmoosbrugger/hsudoku/issues build-type: Simple cabal-version: >=1.10+Tested-with: GHC == 8.0.2 +extra-source-files: gui/hsudoku.ui+ gui/icon.png,+ gui/theme.css+ source-repository head type: git location: git@github.com:marcelmoosbrugger/hsudoku.git @@ -73,12 +78,42 @@ , hxt>=9.3 && <9.4 , haskell-gi-base>=0.20 && <0.21 , gi-gtk>=3.0 && <3.1- , hspec>=2.4 && <2.5+ , hspec>=2.2 && <2.5 , QuickCheck>=2.9 && <2.10 , hsudoku other-modules: UtilSpec , UserInterfaceSpec+ , Sudoku.TypeSpec+ , Sudoku.SolverSpec+ , Sudoku.LoaderSpec+ , TestData++ default-language: Haskell2010+ default-extensions: OverloadedStrings, OverloadedLabels++-- Travis does not support ubuntu 16.04 yet and therefore+-- GTK+ 3.20 cannot be installed. As the user interface+-- uses new features from GTK+ 3.20, these cannot be tested on travis+test-suite travis+ type: exitcode-stdio-1.0+ ghc-options: -Wall+ main-is: Travis.hs+ hs-source-dirs: test+ build-depends: base >=4.9 && <4.10+ , text >=1.2 && <1.3+ , bytestring>=0.10 && <0.11+ , http-client>=0.5 && <0.6+ , http-client-tls>= 0.3 && <0.4+ , HandsomeSoup>=0.4 && <0.5+ , hxt>=9.3 && <9.4+ , haskell-gi-base>=0.20 && <0.21+ , gi-gtk>=3.0 && <3.1+ , hspec>=2.2 && <2.5+ , QuickCheck>=2.9 && <2.10+ , hsudoku++ other-modules: UtilSpec , Sudoku.TypeSpec , Sudoku.SolverSpec , Sudoku.LoaderSpec
+ test/Travis.hs view
@@ -0,0 +1,20 @@+-- Travis does not support ubuntu 16.04 yet and therefore+-- GTK+ 3.20 cannot be installed. As the user interface+-- uses new features from GTK+ 3.20, these cannot be tested on travis+import Test.Hspec++import qualified Sudoku.LoaderSpec+import qualified Sudoku.SolverSpec+import qualified Sudoku.TypeSpec+import qualified UtilSpec++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "UtilSpec" UtilSpec.spec+ describe "Sudoku.LoaderSpec" Sudoku.LoaderSpec.spec+ describe "Sudoku.SolverSpec" Sudoku.SolverSpec.spec+ describe "Sudoku.TypeSpec" Sudoku.TypeSpec.spec+