[Debian-live-changes] r2206 - in dists/trunk/live-magic/src: . controllers model views
lamby-guest at alioth.debian.org
lamby-guest at alioth.debian.org
Tue Jun 19 13:57:01 UTC 2007
Author: lamby-guest
Date: 2007-06-19 13:57:01 +0000 (Tue, 19 Jun 2007)
New Revision: 2206
Modified:
dists/trunk/live-magic/src/controllers/hooks.py
dists/trunk/live-magic/src/controllers/main.py
dists/trunk/live-magic/src/main.py
dists/trunk/live-magic/src/model/folder_of_files.py
dists/trunk/live-magic/src/views/build.py
dists/trunk/live-magic/src/views/hooks.py
dists/trunk/live-magic/src/views/main.py
Log:
Modified: dists/trunk/live-magic/src/controllers/hooks.py
===================================================================
--- dists/trunk/live-magic/src/controllers/hooks.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/controllers/hooks.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -2,25 +2,51 @@
class HooksController(object):
def __init__(self):
self.model.attach_load_observer(self.notify_load_hooks)
+ self.hook_select_triggers_change = True
+ def on_hook_select(self, *_):
+ self.hook_select_triggers_change = False
+ hook_name = self.view.get_selected_hook()
+ contents = self.model.hooks[hook_name]
+ self.view.do_set_selected_hook_contents(contents)
+ self.hook_select_triggers_change = True
+
+ def _show_hook(self, hook_name):
+ print 1
+
def notify_load_hooks(self):
self.view.do_hooks_clear()
- for filename, contents in self.model.hooks.files.itervalues():
- self.view.do_hook_add(filename, contents)
+ for filename in self.model.hooks.files.iterkeys():
+ self.view.do_hook_add(filename)
def on_button_hook_new_clicked(self, *_):
- filename = self.view.do_show_new_hook_window()
- if filename is not None:
- if len(filename) > 0:
- self.model.hooks['filename'] = ''
+ hook_name = self.view.do_show_new_hook_window()
+ if hook_name is not None:
+ if len(hook_name) > 0:
+ self.model.hooks[hook_name] = ""
+ self.view.set_save_enabled(True)
+ self.notify_load_hooks()
+ self.view.do_set_selected_hook(hook_name)
+ self.view.do_set_selected_hook_contents(self.model.hooks)
else:
self.view.do_show_new_hook_invalid_name()
def on_button_hook_import_clicked(self, *_):
- print "import"
+ filename = self.view.do_show_hook_import_dialog()
+ if filename is not None:
+ hook_name = self.model.hooks.import_file(filename)
+ self.notify_load_hooks()
+ self.view.do_set_selected_hook(hook_name)
+ self.view.set_save_enabled(True)
def on_button_hook_rename_clicked(self, *_):
- print "rename"
+ print "rename called for", self.view.get_selected_hook()
def on_button_hook_delete_clicked(self, *_):
- print "delete"
+ print "delete called for", self.view.get_selected_hook()
+
+ def on_hook_editor_changed(self, *_):
+ if self.hook_select_triggers_change:
+ self.view.set_save_enabled(True)
+ hook = self.view.get_selected_hook()
+ self.model.hooks[hook] = self.view.get_hook_editor_contents()
Modified: dists/trunk/live-magic/src/controllers/main.py
===================================================================
--- dists/trunk/live-magic/src/controllers/main.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/controllers/main.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -13,9 +13,9 @@
# Set the value in the view
self.view.do_set_key_var(child.shortname, key, getattr(child, key))
- def init_view(self):
+ def ready(self):
"""
- Called by the view when it is ready for setup.
+ Called when the view is ready for setup.
"""
sections = ['common', 'chroot', 'binary', 'bootstrap', 'source', 'hooks']
self.view.setup_sections(sections)
Modified: dists/trunk/live-magic/src/main.py
===================================================================
--- dists/trunk/live-magic/src/main.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/main.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -3,6 +3,7 @@
import pygtk
pygtk.require('2.0')
import gtk
+import gtk.glade
import model
from views import *
@@ -18,10 +19,12 @@
class View(MainView, BuildView, HooksView):
def __init__(self, controller):
+ self.xml = gtk.glade.XML('../glade/main.glade')
self.controller = controller
MainView.__init__(self)
BuildView.__init__(self)
HooksView.__init__(self)
+ self.xml.signal_autoconnect(self.controller)
class Controller(MainController, BuildController, HooksController):
def __init__(self, model):
@@ -34,4 +37,5 @@
m = Model()
c = Controller(m)
v = View(c)
+ c.ready()
gtk.main()
Modified: dists/trunk/live-magic/src/model/folder_of_files.py
===================================================================
--- dists/trunk/live-magic/src/model/folder_of_files.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/model/folder_of_files.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -104,19 +104,21 @@
target_name = self._gen_import_name(source)
self[target_name] = source_contents
+ return target_name
+
def _gen_import_name(self, filename):
"""
- Generates a unique name of the imported file, based on the existing file.
+ Generates a unique name of the imported file.
"""
# Use existing filename as the root
root = filename.split(os.sep)[-1]
- if self._config_exists(root):
+ if root in self:
# Keep adding a number to the end until it doesn't exist.
i = 1
while True:
tmpnam = "%s-%d" % (root, i)
- if not self._config_exists(tmpnam):
+ if not tmpnam in self:
return tmpnam
i += 1
else:
Modified: dists/trunk/live-magic/src/views/build.py
===================================================================
--- dists/trunk/live-magic/src/views/build.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/views/build.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -1,32 +1,10 @@
import vte
-import pango
class BuildView(object):
def __init__(self):
# Init custom widgets
self.vte_terminal = None
- try:
- from gtksourceview import SourceBuffer, SourceView, SourceLanguagesManager
-
- buffer = SourceBuffer()
- editor = SourceView(buffer)
- editor.set_show_line_numbers(True)
-
- buffer.set_highlight(True)
- lang = SourceLanguagesManager().get_language_from_mime_type("application/x-shellscript")
- buffer.set_language(lang)
-
- except ImportError:
- editor = gtk.TextView()
-
- font_desc = pango.FontDescription('Monospace 8')
- if font_desc:
- editor.modify_font(font_desc)
-
- self['scroll_hook_edit'].add_with_viewport(editor)
- editor.show()
-
def do_show_window_build(self):
self['window_main'].set_sensitive(False)
Modified: dists/trunk/live-magic/src/views/hooks.py
===================================================================
--- dists/trunk/live-magic/src/views/hooks.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/views/hooks.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -1,11 +1,40 @@
import gtk
import gobject
+import pango
class HooksView(object):
+ def __init__(self):
+ # Configure the hook combo box
+ hbox = self['hbox_hooks']
+ self.cb = gtk.combo_box_new_text()
+ self.cb.show()
+ self.cb.connect("changed", self.controller.on_hook_select)
+ hbox.pack_start(self.cb)
+ hbox.reorder_child(self.cb, 0)
- def do_hooks_clear(self):
- self.hook_liststore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ # Configure editor
+ try:
+ from gtksourceview import SourceBuffer, SourceView, SourceLanguagesManager
+ buffer = SourceBuffer()
+ self.hook_editor = SourceView(buffer)
+ self.hook_editor.set_show_line_numbers(True)
+ buffer.set_highlight(True)
+ lang = SourceLanguagesManager().get_language_from_mime_type("application/x-shellscript")
+ buffer.set_language(lang)
+ except ImportError:
+ self.hook_editor = gtk.TextView()
+
+ font_desc = pango.FontDescription('Monospace 8')
+ if font_desc:
+ self.hook_editor.modify_font(font_desc)
+
+ self.hook_editor.get_buffer().connect("changed", self.controller.on_hook_editor_changed)
+
+ self['scroll_hook_edit'].add_with_viewport(self.hook_editor)
+ self.do_enable_edit_hook(False)
+ self.hook_editor.show()
+
def do_show_new_hook_window(self):
dialog = gtk.Dialog(
"Choose filename",
@@ -25,6 +54,26 @@
else:
return None
+ def do_show_hook_import_dialog(self):
+ dialog = gtk.FileChooserDialog(
+ "Choose hook to import",
+ self['window_main'],
+ gtk.FILE_CHOOSER_ACTION_OPEN,
+ (
+ gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
+ gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+
+ dialog.set_current_folder("/usr/share/live-helper/examples/hooks")
+
+ res = dialog.run()
+ filename = dialog.get_filename()
+ dialog.destroy()
+
+ if res == gtk.RESPONSE_ACCEPT:
+ return filename
+ else:
+ return None
+
def do_show_new_hook_invalid_name(self):
dialog = gtk.MessageDialog(
self['window_main'],
@@ -36,5 +85,40 @@
dialog.run()
dialog.destroy()
- def do_hook_add(self, file, contents):
- self.hook_liststore.append((file, contents))
+ def do_hook_add(self, filename):
+ self.cb.append_text(filename)
+
+ def get_selected_hook(self):
+ filename = self.cb.get_active_text()
+ return filename
+
+ def do_hooks_clear(self):
+ self.hook_editor.set_sensitive(False)
+ for _ in xrange(len(self.cb.get_model())):
+ self.cb.remove_text(0)
+
+ def get_hook_editor_contents(self):
+ buf = self.hook_editor.get_buffer()
+ return buf.get_text(buf.get_start_iter(), buf.get_end_iter())
+
+ def do_enable_edit_hook(self, enabled=True):
+ self.cb.set_sensitive(enabled)
+ self.hook_editor.set_sensitive(enabled)
+ self['button_hook_rename'].set_sensitive(enabled)
+ self['button_hook_delete'].set_sensitive(enabled)
+
+ def do_set_selected_hook(self, hookname):
+ # Update combo box to reflect selection
+ m = self.cb.get_model()
+ iter = m.get_iter_first()
+ while iter is not None:
+ if hookname == m.get_value(iter, 0):
+ self.cb.set_active_iter(iter)
+ return
+ iter = m.iter_next(iter)
+
+ def do_set_selected_hook_contents(self, contents):
+ # Set hook editor contents and allow editing
+ self.hook_editor.get_buffer().set_text(contents)
+ self.do_enable_edit_hook(True)
+
Modified: dists/trunk/live-magic/src/views/main.py
===================================================================
--- dists/trunk/live-magic/src/views/main.py 2007-06-19 10:39:30 UTC (rev 2205)
+++ dists/trunk/live-magic/src/views/main.py 2007-06-19 13:57:01 UTC (rev 2206)
@@ -1,17 +1,11 @@
import gtk
-import gtk.glade
import gobject
class MainView(object):
def __init__(self):
self.controller.view = self
- self.xml = gtk.glade.XML('../glade/main.glade')
- self.xml.signal_autoconnect(self.controller)
-
- self.controller.init_view()
-
- # Hide tabs
+ # Hide tabs
self['notebook'].set_show_tabs(False)
def __getitem__(self, key):
More information about the Debian-live-changes
mailing list