diff options
author | Will Thompson <will@willthompson.co.uk> | 2012-01-23 08:55:51 +0000 |
---|---|---|
committer | Will Thompson <will@willthompson.co.uk> | 2012-01-23 08:57:57 +0000 |
commit | e0200367c6134db99d391de0f19ccf321aa68a96 (patch) | |
tree | 5ddb289650a8ced4c71a46d510a9817099dd8fd8 | |
parent | 1d935e6fa85fe9e2adf06cfa8e0db75305646064 (diff) |
Convert main window to GtkBuilder
-rw-r--r-- | Bustle/StatisticsPane.hs | 7 | ||||
-rw-r--r-- | Bustle/UI.hs | 17 | ||||
-rw-r--r-- | Bustle/UI/Canvas.hs | 7 | ||||
-rw-r--r-- | bustle.cabal | 1 | ||||
-rw-r--r-- | data/bustle.glade | 320 | ||||
-rw-r--r-- | data/bustle.ui | 371 |
6 files changed, 387 insertions, 336 deletions
diff --git a/Bustle/StatisticsPane.hs b/Bustle/StatisticsPane.hs index 2d14ab8..90d5bb6 100644 --- a/Bustle/StatisticsPane.hs +++ b/Bustle/StatisticsPane.hs @@ -27,7 +27,6 @@ import Control.Applicative ((<$>)) import Control.Monad (forM_) import Text.Printf import Graphics.UI.Gtk hiding (Markup) -import Graphics.UI.Gtk.Glade import Bustle.Stats import Bustle.Types (Log) import qualified Bustle.Markup as Markup @@ -40,12 +39,12 @@ data StatsPane = , spSizeStore :: ListStore SizeInfo } -statsPaneNew :: GladeXML +statsPaneNew :: Builder -> Maybe Pixbuf -> Maybe Pixbuf -> IO StatsPane -statsPaneNew xml methodIcon signalIcon = do - [frequencySW, durationSW, sizeSW] <- mapM (xmlGetWidget xml castToScrolledWindow) +statsPaneNew builder methodIcon signalIcon = do + [frequencySW, durationSW, sizeSW] <- mapM (builderGetObject builder castToScrolledWindow) ["frequencySW", "durationSW", "sizeSW"] (countStore, countView) <- newCountView methodIcon signalIcon diff --git a/Bustle/UI.hs b/Bustle/UI.hs index 7164105..874151a 100644 --- a/Bustle/UI.hs +++ b/Bustle/UI.hs @@ -54,7 +54,6 @@ import Bustle.Loader import System.Glib.GError (GError(..), catchGError) import Graphics.UI.Gtk -import Graphics.UI.Gtk.Glade import Graphics.Rendering.Cairo (withPDFSurface, renderWith) @@ -83,7 +82,7 @@ data Page = data WindowInfo = WindowInfo { wiWindow :: Window , wiSave :: ImageMenuItem - , wiExport :: ImageMenuItem + , wiExport :: MenuItem , wiViewStatistics :: CheckMenuItem , wiFilterNames :: MenuItem , wiNotebook :: Notebook @@ -317,15 +316,17 @@ maybeQuit = do emptyWindow :: B WindowInfo emptyWindow = do - Just xml <- io $ xmlNew =<< getDataFileName "data/bustle.glade" + builder <- io builderNew + io $ builderAddFromFile builder =<< getDataFileName "data/bustle.ui" -- Grab a bunch of widgets. Surely there must be a better way to do this? - let getW cast name = io $ xmlGetWidget xml cast name + let getW cast name = io $ builderGetObject builder cast name window <- getW castToWindow "diagramWindow" - [newItem, openItem, saveItem, exportItem, closeItem, aboutItem] <- + [newItem, openItem, saveItem, closeItem, aboutItem] <- mapM (getW castToImageMenuItem) - ["new", "open", "save", "export", "close", "about"] + ["new", "open", "save", "close", "about"] + exportItem <- getW castToMenuItem "export" openTwoItem <- getW castToMenuItem "openTwo" viewStatistics <- getW castToCheckMenuItem "statistics" filterNames <- getW castToMenuItem "filter" @@ -356,7 +357,7 @@ emptyWindow = do m <- asks methodIcon s <- asks signalIcon - statsPane <- io $ statsPaneNew xml m s + statsPane <- io $ statsPaneNew builder m s details <- io $ detailsViewNew io $ do @@ -370,7 +371,7 @@ emptyWindow = do io $ widgetHide statsBook showBounds <- asks debugEnabled - canvas <- io $ canvasNew xml showBounds (updateDetailsView details) + canvas <- io $ canvasNew builder showBounds (updateDetailsView details) logDetailsRef <- io $ newIORef Nothing let windowInfo = WindowInfo { wiWindow = window diff --git a/Bustle/UI/Canvas.hs b/Bustle/UI/Canvas.hs index 86c4060..46c1582 100644 --- a/Bustle/UI/Canvas.hs +++ b/Bustle/UI/Canvas.hs @@ -34,7 +34,6 @@ import Data.IORef import Control.Monad (when) import Graphics.UI.Gtk -import Graphics.UI.Gtk.Glade import Bustle.Diagram import Bustle.Regions @@ -54,12 +53,12 @@ data Canvas a = } canvasNew :: Eq a - => GladeXML + => Builder -> Bool -> (Maybe a -> IO ()) -> IO (Canvas a) -canvasNew xml showBounds selectionChangedCb = do - layout <- xmlGetWidget xml castToLayout "diagramLayout" +canvasNew builder showBounds selectionChangedCb = do + layout <- builderGetObject builder castToLayout "diagramLayout" idRef <- newIORef Nothing shapesRef <- newIORef [] widthRef <- newIORef 0 diff --git a/bustle.cabal b/bustle.cabal index 4e00087..988dcbb 100644 --- a/bustle.cabal +++ b/bustle.cabal @@ -12,6 +12,7 @@ Data-files: data/bustle.png, data/dfeet-method.png, data/dfeet-signal.png, data/bustle.glade, + data/bustle.ui, LICENSE Build-type: Simple Extra-source-files: diff --git a/data/bustle.glade b/data/bustle.glade index e6e07d1..d1f6156 100644 --- a/data/bustle.glade +++ b/data/bustle.glade @@ -2,326 +2,6 @@ <glade-interface> <!-- interface-requires gtk+ 2.16 --> <!-- interface-naming-policy project-wide --> - <widget class="GtkWindow" id="diagramWindow"> - <property name="title" translatable="yes">No document — Bustle</property> - <property name="default_width">900</property> - <property name="default_height">700</property> - <child> - <widget class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <widget class="GtkMenuBar" id="menubar1"> - <property name="visible">True</property> - <child> - <widget class="GtkMenuItem" id="menuitem1"> - <property name="visible">True</property> - <property name="label" translatable="yes">_File</property> - <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="menu1"> - <property name="visible">True</property> - <child> - <widget class="GtkImageMenuItem" id="new"> - <property name="label">gtk-new</property> - <property name="visible">True</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="open"> - <property name="label">gtk-open</property> - <property name="visible">True</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - <child> - <widget class="GtkMenuItem" id="openTwo"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Display two logs—one for the session bus, one for the system bus—side by side.</property> - <property name="label" translatable="yes">O_pen a pair of logs…</property> - <property name="use_underline">True</property> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="save"> - <property name="label">gtk-save</property> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="export"> - <property name="label">_Export as PDF…</property> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="use_underline">True</property> - <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK"/> - </widget> - </child> - <child> - <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> - <property name="visible">True</property> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="close"> - <property name="label">gtk-close</property> - <property name="visible">True</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkMenuItem" id="menuitem2"> - <property name="visible">True</property> - <property name="label" translatable="yes">_View</property> - <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="menu2"> - <property name="visible">True</property> - <child> - <widget class="GtkMenuItem" id="filter"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="label" translatable="yes">_Filter visible services…</property> - <property name="use_underline">True</property> - <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </widget> - </child> - <child> - <widget class="GtkCheckMenuItem" id="statistics"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="label" translatable="yes">_Statistics</property> - <property name="use_underline">True</property> - <accelerator key="F9" signal="activate"/> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkMenuItem" id="menuitem4"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Help</property> - <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="menu3"> - <property name="visible">True</property> - <child> - <widget class="GtkImageMenuItem" id="about"> - <property name="label">gtk-about</property> - <property name="visible">True</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <widget class="GtkNotebook" id="diagramOrNot"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_tabs">False</property> - <property name="show_border">False</property> - <child> - <widget class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes"> - <big><b>No log loaded</b></big> - - • Choose <b>File → New</b> to record a new D-Bus traffic log; - • Choose <b>File → Open</b> to load a previously-recorded log. - - You may also use the <i>bustle-pcap</i> command-line tool to record logs. - </property> - <property name="use_markup">True</property> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="label" translatable="yes">Please Hold</property> - </widget> - <packing> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="label" translatable="yes"> - <big><b>Waiting for D-Bus traffic; please hold…</b></big> - </property> - <property name="use_markup">True</property> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="label" translatable="yes">Instructions</property> - </widget> - <packing> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - <child> - <widget class="GtkHPaned" id="hpaned1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="position_set">True</property> - <child> - <widget class="GtkNotebook" id="statsBook"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="show_border">False</property> - <child> - <widget class="GtkScrolledWindow" id="frequencySW"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">automatic</property> - <child> - <placeholder/> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="frequencyTabLabel"> - <property name="visible">True</property> - <property name="label" translatable="yes">Message frequencies</property> - </widget> - <packing> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="durationSW"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">automatic</property> - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="durationTabLabel"> - <property name="visible">True</property> - <property name="label" translatable="yes">Method durations</property> - </widget> - <packing> - <property name="position">1</property> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="sizeSW"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">automatic</property> - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="sizeTabLabel"> - <property name="visible">True</property> - <property name="label" translatable="yes">Message sizes</property> - </widget> - <packing> - <property name="position">2</property> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="resize">True</property> - <property name="shrink">False</property> - </packing> - </child> - <child> - <widget class="GtkVPaned" id="contentVPaned"> - <property name="visible">True</property> - <property name="position">100000</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">automatic</property> - <child> - <widget class="GtkLayout" id="diagramLayout"> - <property name="visible">True</property> - <property name="can_focus">True</property> - </widget> - </child> - </widget> - </child> - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="resize">True</property> - <property name="shrink">False</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="label" translatable="yes">Diagram</property> - </widget> - <packing> - <property name="position">1</property> - <property name="tab_fill">False</property> - <property name="type">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> <widget class="GtkDialog" id="openTwoDialog"> <property name="border_width">5</property> <property name="title" translatable="yes">Open a pair of logs</property> diff --git a/data/bustle.ui b/data/bustle.ui new file mode 100644 index 0000000..fbfb41f --- /dev/null +++ b/data/bustle.ui @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <object class="GtkWindow" id="diagramWindow"> + <property name="can_focus">False</property> + <property name="default_width">900</property> + <property name="default_height">700</property> + <child> + <object class="GtkVBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuItem" id="menuitem1"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_File</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menu1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkImageMenuItem" id="new"> + <property name="label">gtk-new</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="open"> + <property name="label">gtk-open</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="o" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="openTwo"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Display two logs—one for the session bus, one for the system bus—side by side.</property> + <property name="label" translatable="yes">O_pen a pair of logs…</property> + <property name="use_underline">True</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="save"> + <property name="label">gtk-save-as</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="export"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Export as PDF…</property> + <property name="use_underline">True</property> + <accelerator key="s" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="close"> + <property name="label">gtk-close</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="w" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="menuitem3"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_View</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menu2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuItem" id="filter"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Filter visible services…</property> + <property name="use_underline">True</property> + <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkCheckMenuItem" id="statistics"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Statistics</property> + <property name="use_underline">True</property> + <accelerator key="F9" signal="activate"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="menuitem4"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Help</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menu3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkImageMenuItem" id="about"> + <property name="label">gtk-about</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkNotebook" id="diagramOrNot"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><big><b>No log loaded</b></big> + +• Choose <b>File → New</b> to record a new D-Bus traffic log; +• Choose <b>File → Open</b> to load a previously-recorded log. + +You may also use the <i>bustle-pcap</i> command-line tool to record logs.</property> + <property name="use_markup">True</property> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Instructions</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><big><b>Waiting for D-Bus traffic; please hold…</b></big></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Please hold</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHPaned" id="paned1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkNotebook" id="statsBook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkScrolledWindow" id="frequencySW"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Message frequencies</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="durationSW"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Method durations</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="sizeSW"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Message sizes</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="resize">False</property> + <property name="shrink">True</property> + </packing> + </child> + <child> + <object class="GtkVPaned" id="contentVPaned"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="vscrollbar_policy">always</property> + <property name="hscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkLayout" id="diagramLayout"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + </object> + <packing> + <property name="resize">True</property> + <property name="shrink">False</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="resize">True</property> + <property name="shrink">True</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Diagram</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> +</interface> |