summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/layereditor.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/layereditor.py')
-rw-r--r--bitbake/lib/bb/ui/crumbs/layereditor.py153
1 files changed, 0 insertions, 153 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/layereditor.py b/bitbake/lib/bb/ui/crumbs/layereditor.py
deleted file mode 100644
index f5394a5f52..0000000000
--- a/bitbake/lib/bb/ui/crumbs/layereditor.py
+++ /dev/null
@@ -1,153 +0,0 @@
1#
2# BitBake Graphical GTK User Interface
3#
4# Copyright (C) 2011 Intel Corporation
5#
6# Authored by Joshua Lock <josh@linux.intel.com>
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License version 2 as
10# published by the Free Software Foundation.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License along
18# with this program; if not, write to the Free Software Foundation, Inc.,
19# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
21import gobject
22import gtk
23from bb.ui.crumbs.configurator import Configurator
24from bb.ui.crumbs.hig import CrumbsDialog
25
26class LayerEditor(gtk.Dialog):
27 """
28 Gtk+ Widget for enabling and disabling layers.
29 Layers are added through using an open dialog to find the layer.conf
30 Disabled layers are deleted from conf/bblayers.conf
31 """
32 def __init__(self, configurator, parent=None):
33 gtk.Dialog.__init__(self, "Layers", None,
34 gtk.DIALOG_DESTROY_WITH_PARENT,
35 (gtk.STOCK_CLOSE, gtk.RESPONSE_OK))
36
37 # We want to show a little more of the treeview in the default,
38 # emptier, case
39 self.set_size_request(-1, 300)
40 self.set_border_width(6)
41 self.vbox.set_property("spacing", 0)
42 self.action_area.set_property("border-width", 6)
43
44 self.configurator = configurator
45 self.newly_added = {}
46
47 # Label to inform users that meta is enabled but that you can't
48 # disable it as it'd be a *bad* idea
49 msg = "As the core of the build system the <i>meta</i> layer must always be included and therefore can't be viewed or edited here."
50 lbl = gtk.Label()
51 lbl.show()
52 lbl.set_use_markup(True)
53 lbl.set_markup(msg)
54 lbl.set_line_wrap(True)
55 lbl.set_justify(gtk.JUSTIFY_FILL)
56 self.vbox.pack_start(lbl, expand=False, fill=False, padding=6)
57
58 # Create a treeview in which to list layers
59 # ListStore of Name, Path, Enabled
60 self.layer_store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
61 self.tv = gtk.TreeView(self.layer_store)
62 self.tv.set_headers_visible(True)
63
64 col0 = gtk.TreeViewColumn('Name')
65 self.tv.append_column(col0)
66 col1 = gtk.TreeViewColumn('Path')
67 self.tv.append_column(col1)
68 col2 = gtk.TreeViewColumn('Enabled')
69 self.tv.append_column(col2)
70
71 cell0 = gtk.CellRendererText()
72 col0.pack_start(cell0, True)
73 col0.set_attributes(cell0, text=0)
74 cell1 = gtk.CellRendererText()
75 col1.pack_start(cell1, True)
76 col1.set_attributes(cell1, text=1)
77 cell2 = gtk.CellRendererToggle()
78 cell2.connect("toggled", self._toggle_layer_cb)
79 col2.pack_start(cell2, True)
80 col2.set_attributes(cell2, active=2)
81
82 self.tv.show()
83 self.vbox.pack_start(self.tv, expand=True, fill=True, padding=0)
84
85 tb = gtk.Toolbar()
86 tb.set_icon_size(gtk.ICON_SIZE_SMALL_TOOLBAR)
87 tb.set_style(gtk.TOOLBAR_BOTH)
88 tb.set_tooltips(True)
89 tb.show()
90 icon = gtk.Image()
91 icon.set_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_SMALL_TOOLBAR)
92 icon.show()
93 tb.insert_item("Add Layer", "Add new layer", None, icon,
94 self._find_layer_cb, None, -1)
95 self.vbox.pack_start(tb, expand=False, fill=False, padding=0)
96
97 def set_parent_window(self, parent):
98 self.set_transient_for(parent)
99
100 def load_current_layers(self, data):
101 for layer, path in self.configurator.enabled_layers.items():
102 if layer != 'meta':
103 self.layer_store.append([layer, path, True])
104
105 def save_current_layers(self):
106 self.configurator.writeLayerConf()
107
108 def _toggle_layer_cb(self, cell, path):
109 name = self.layer_store[path][0]
110 toggle = not self.layer_store[path][2]
111 if toggle:
112 self.configurator.addLayer(name, path)
113 else:
114 self.configurator.disableLayer(name)
115 self.layer_store[path][2] = toggle
116
117 def _find_layer_cb(self, button):
118 self.find_layer(self)
119
120 def find_layer(self, parent):
121 def conf_error(parent, lbl):
122 dialog = CrumbsDialog(parent, lbl)
123 dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
124 response = dialog.run()
125 dialog.destroy()
126
127 dialog = gtk.FileChooserDialog("Add new layer", parent,
128 gtk.FILE_CHOOSER_ACTION_OPEN,
129 (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
130 gtk.STOCK_OPEN, gtk.RESPONSE_YES))
131 label = gtk.Label("Select the layer.conf of the layer you wish to add")
132 label.show()
133 dialog.set_extra_widget(label)
134 response = dialog.run()
135 path = dialog.get_filename()
136 dialog.destroy()
137
138 lbl = "<b>Error</b>\nUnable to load layer <i>%s</i> because " % path
139 if response == gtk.RESPONSE_YES:
140 # FIXME: verify we've actually got a layer conf?
141 if path.endswith("layer.conf"):
142 name, layerpath = self.configurator.addLayerConf(path)
143 if name and layerpath:
144 self.newly_added[name] = layerpath
145 self.layer_store.append([name, layerpath, True])
146 return
147 elif name:
148 return
149 else:
150 lbl += "there was a problem parsing the layer.conf."
151 else:
152 lbl += "it is not a layer.conf file."
153 conf_error(parent, lbl)