This email list is read-only. Emails sent to this list will be discarded
----------------------------------
debian/changelog | 5 +-
gui/gui.py | 227 ++++++++++++-
gui/image-creator.glade | 849 +++++++++++++++++++++++++++++++++++-----------
gui/project_assistant.py | 36 ++-
gui/repo_editor.py | 216 ++++++++++++
5 files changed, 1122 insertions(+), 211 deletions(-)
New commits:
commit 6100e59918d0c8f06b450d87b2a5908e4978e1a2
Author: Prajwal Mohan <[EMAIL PROTECTED]>
Date: Sun Aug 17 10:56:42 2008 -0700
Adding repo editor and changes to gui
Diff in this email is a maximum of 400 lines.
diff --git a/debian/changelog b/debian/changelog
index 478d2bc..d193862 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -102,9 +102,10 @@ moblin-image-creator (0.45) UNRELEASED; urgency=low
* Added some localization.
[ Prajwal Mohan ]
- * Adding nand to command line
+ * Adding nand to command line
+ * Adding repo editor and changes to gui
- -- Prajwal Mohan <[EMAIL PROTECTED]> Sun, 17 Aug 2008 10:42:09 -0700
+ -- Prajwal Mohan <[EMAIL PROTECTED]> Sun, 17 Aug 2008 10:56:19 -0700
moblin-image-creator (0.44) gaston; urgency=low
diff --git a/gui/gui.py b/gui/gui.py
index 9ce23f6..7ef26d9 100644
--- a/gui/gui.py
+++ b/gui/gui.py
@@ -34,6 +34,7 @@ import pdk_utils
import SDK
import mic_cfg
import project_assistant
+import repo_editor
debug = False
if mic_cfg.config.has_option('general', 'debug'):
@@ -98,9 +99,12 @@ class App(object):
"on_Save_activate":self.on_Save_activate,
"on_upgrade_project_clicked":self.on_upgrade_project_clicked,
"on_upgrade_target_clicked":self.on_upgrade_target_clicked,
+ "on_editRepo_clicked":self.on_editRepo_clicked,
"on_MirrorSettings_activate":self.on_MirrorSettings_activate,
"on_Add_Project_Wizard_activate":self.on_Add_Project_Wizard_activate,
- "on_fsetsInfo_activate":self.on_fsetsInfo_activate
+ "on_fsetsInfo_activate":self.on_fsetsInfo_activate,
+ "on_editRepo_activate": self.on_editRepo_activate,
+ "on_cmd_history_clicked": self.on_cmd_history_clicked
}
self.widgets.signal_autoconnect(dic)
# setup projectView widget
@@ -132,7 +136,12 @@ class App(object):
self.projectView_handler =
self.projectView.get_selection().connect("changed", self.project_view_changed)
self.targetView_handler =
self.targetView.get_selection().connect("changed", self.target_view_changed)
+ main_window = self.widgets.get_widget("main")
+ main_window.set_resizable(True)
+ #main_window.set_size_request(900, 600)
+
self.newFeatureDialog()
+
obsolete_projects = self.sdk.return_obsolete_projects()
if obsolete_projects:
error_message = ""
@@ -140,6 +149,8 @@ class App(object):
error_message = error_message + " " + proj
self.show_error_dialog(_("Found unsupported project(s):
%s\nskipping them") % error_message)
+ self.cmd_history=[]
+
def run(self):
gtk.main()
@@ -216,6 +227,7 @@ class App(object):
self.buttons.install_fset.set_sensitive(target_selected_state)
self.buttons.target_term_launch.set_sensitive(target_selected_state)
self.buttons.upgrade_target.set_sensitive(target_selected_state)
+ self.buttons.edit_repo.set_sensitive(target_selected_state)
# Items which should be enabled if our selected target has an fset
self.buttons.create_liveusb.set_sensitive(fset_state)
self.buttons.create_liverwusb.set_sensitive(fset_state)
@@ -352,7 +364,10 @@ class App(object):
gtk.main_iteration(False)
platformName = dialog.platform.split()[0]
try:
- proj = self.sdk.create_project(dialog.path, dialog.name,
dialog.desc, self.sdk.platforms[platformName])
+ if mic_cfg.config.get('general', 'use_rootstraps') == '1':
+ proj = self.sdk.create_project(dialog.path,
dialog.name, dialog.desc, self.sdk.platforms[platformName])
+ else:
+ proj = self.sdk.create_project(dialog.path,
dialog.name, dialog.desc, self.sdk.platforms[platformName], False)
except ValueError:
print _("Project Creation cancelled")
progress_dialog.destroy()
@@ -373,6 +388,8 @@ class App(object):
progress_dialog.destroy()
if target_name != None:
+ mic_cmd = 'image-creator --command=create-target
--project-name=\'' + dialog.name + '\' --target-name=\'' + target_name + '\''
+ self.cmd_history.append(mic_cmd)
self.create_new_target(proj, target_name)
self.refreshProjectList()
@@ -429,6 +446,8 @@ class App(object):
for item in treePathList:
project = self.sdk.projects[model[item][0]]
progress_tree.get_widget('progress_label').set_text(_("Please wait while
deleting %s") % project.name)
+ mic_cmd = 'image-creator --command=delete-project
--project-name=\'' + project.name + '\''
+ self.append_cmd_list(mic_cmd)
self.sdk.delete_project(project.name)
self.remove_current_project()
except pdk_utils.ImageCreatorUmountError, e:
@@ -474,7 +493,10 @@ class App(object):
self.progressbar = progress_tree.get_widget('progressbar')
while gtk.events_pending():
gtk.main_iteration(False)
- project.create_target(target_name)
+ if mic_cfg.config.get('general', 'use_rootstraps') == '1':
+ project.create_target(target_name)
+ else:
+ project.create_target(target_name, False)
self.redraw_target_view()
progress_dialog.destroy()
@@ -491,13 +513,24 @@ class App(object):
self.fsetTouple[i] = (self.fsetTouple[i][0],
self.fsetTouple[i][1], True, self.fsetTouple[i][3])
if active == True:
i = 0
+ for item in self.fsetTouple:
+ if fSetName != item[0]:
+ for conflict in fset['conflicts']:
+ if conflict == item[0]:
+ self.fsetTouple[i][1].set_active(False)
+ self.fsetTouple[i][1].set_sensitive(False)
+ self.fsetTouple[i] = (self.fsetTouple[i][0],
self.fsetTouple[i][1], False, self.fsetTouple[i][3])
+ if
self.fsetTouple[i][1].get_label().find("Conflicts: ") != 0:
+ self.fsetTouple[i][1].set_label("Conflicts: "
+ self.fsetTouple[i][1].get_label())
+ i = i + 1
+ i = 0
for item in self.fsetTouple:
if fSetName != item[0]:
for dep in fset['deps']:
if dep == item[0]:
if self.fsetTouple[i][1].get_active() == False:
self.fsetTouple[i][1].set_active(True)
- #sex_active causes this function to be called
recurssively
+ #set_active causes this function to be called
recurssively
self.fsetTouple[i][1].set_sensitive(False)
self.fsetTouple[i] = (self.fsetTouple[i][0],
self.fsetTouple[i][1], False, self.fsetTouple[i][3] + 1)
i = i + 1
@@ -516,6 +549,18 @@ class App(object):
self.fsetTouple[i] = (self.fsetTouple[i][0],
self.fsetTouple[i][1], False, self.fsetTouple[i][3])
i = i + 1
+ i = 0
+ for item in self.fsetTouple:
+ if fSetName != item[0]:
+ for conflict in fset['conflicts']:
+ if conflict == item[0]:
+ self.fsetTouple[i][1].set_sensitive(True)
+ self.fsetTouple[i] = (self.fsetTouple[i][0],
self.fsetTouple[i][1], False, self.fsetTouple[i][3])
+ if
self.fsetTouple[i][1].get_label().find("Conflicts: ") == 0:
+
self.fsetTouple[i][1].set_label(self.fsetTouple[i][1].get_label().split("Conflicts:
")[1])
+ i = i + 1
+
+
def setup_fsets_dialog(self, widget, platformName, showFsets = ""):
tree = gtk.glade.XML(self.gladefile, 'fsetsDialog')
dialog = tree.get_widget('fsetsDialog')
@@ -553,6 +598,11 @@ class App(object):
toolTipText += " %s " % pkgs
if self.pygtkOldVersion == False:
self.fsetTouple[i][1].set_tooltip_markup(toolTipText)
+ for installedFset in installed_fsets:
+ for conflict in platform.fset[installedFset]['conflicts']:
+ if conflict == fset_name:
+ self.fsetTouple[i][1].set_sensitive(False)
+ self.fsetTouple[i][1].set_label("Conflicts: " +
self.fsetTouple[i][1].get_label())
i += 1
if not iter:
self.show_error_dialog(_("Nothing available to install!"))
@@ -605,6 +655,11 @@ class App(object):
print _("Installing fset %s.................\n") % fsetName
progress_tree.get_widget('progress_label').set_text(_("Please
wait while installing %s") % fset.name)
try:
+ mic_cmd = 'image-creator --command=install-fset
--platform-name=\'' + platformName + '\' --project-name=\'' +
self.current_project().name + '\' --target-name=\'' +
self.current_target().name + '\' --fset=\'' + fsetName + '\''
+ if debug_pkgs:
+ mic_cmd = mic_cmd + ' --enable-debug'
+ self.append_cmd_list(mic_cmd)
+
self.current_target().installFset(fset, fsets =
platform.fset, debug_pkgs = debug_pkgs)
except ValueError, e:
self.show_error_dialog(e.args[0])
@@ -656,6 +711,8 @@ class App(object):
for item in treePathList:
target = self.current_project().targets[model[item][0]]
progress_tree.get_widget('progress_label').set_text(_("Please wait while
deleting %s") % target.name)
+ mic_cmd = 'image-creator --command=delete-target
--project-name=\'' + self.current_project().name + '\' --target-name=\'' +
target.name +'\''
+ self.append_cmd_list(mic_cmd)
self.sdk.projects[project.name].delete_target(target.name,
callback = self.gui_throbber)
self.remove_current_target()
except pdk_utils.ImageCreatorUmountError, e:
@@ -742,7 +799,11 @@ class App(object):
print _("Project path: %s") % project_path
cmd = '/usr/bin/gnome-terminal -x /usr/sbin/chroot %s env -u SHELL
HOME=/root su -p - &' % (project_path)
print cmd
- os.system(cmd)
+ if os.system(cmd) != 0:
+ print _("gnome-terminal may not be present. Trying xterm")
+ cmd = '/usr/bin/xterm -e /usr/sbin/chroot %s env -u SHELL
HOME=/root sh &' % (project_path)
+ os.system(cmd)
+
def on_target_term_launch_clicked(self, widget):
project_path = self.current_project().path
@@ -755,7 +816,10 @@ class App(object):
print _("Target path: %s") % target_path
cmd = '/usr/bin/gnome-terminal -x /usr/sbin/chroot %s env -u SHELL
HOME=/root su -p - &' % (target_path)
print cmd
- os.system(cmd)
+ if os.system(cmd) != 0:
+ print _("gnome-terminal may not be present. Trying xterm")
+ cmd = '/usr/bin/xterm -e /usr/sbin/chroot %s env -u SHELL
HOME=/root sh &' % (project_path)
+ os.system(cmd)
def on_target_kernel_cmdline_clicked(self, widget):
project_path = self.current_project().path
@@ -790,6 +854,8 @@ class App(object):
progress_tree.get_widget('progress_label').set_text(_("Please wait
while while creating %s") % img_name)
self.progressbar = progress_tree.get_widget('progressbar')
try:
+ mic_cmd = 'image-creator --command=create-live-usb
--project-name=\'' + project.name + '\' --target-name=\'' + target.name + '\'
--image-name=\'' + img_name + '\''
+ self.append_cmd_list(mic_cmd)
self.current_project().create_live_usb(target.name, img_name)
except ValueError, e:
self.show_error_dialog(e.args[0])
@@ -810,6 +876,8 @@ class App(object):
progress_tree.get_widget('progress_label').set_text(_("Please wait
while creating %s") % img_name)
self.progressbar = progress_tree.get_widget('progressbar')
try:
+ mic_cmd = 'image-creator --command=create-live-usbrw
--project-name=\'' + project.name + '\' --target-name=\'' + target.name + '\'
--image-name=\'' + img_name + '\''
+ self.append_cmd_list(mic_cmd)
self.current_project().create_live_usb(target.name, img_name,
'EXT3FS')
except ValueError, e:
self.show_error_dialog(e.args[0])
@@ -830,6 +898,8 @@ class App(object):
progress_tree.get_widget('progress_label').set_text(_("Please wait
while creating %s") % img_name)
self.progressbar = progress_tree.get_widget('progressbar')
try:
+ mic_cmd = 'image-creator --command=create-install-usb
--project-name=\'' + project.name + '\' --target-name=\'' + target.name + '\'
--image-name=\'' + img_name + '\''
+ self.append_cmd_list(mic_cmd)
self.current_project().create_install_usb(target.name,
img_name)
except ValueError, e:
traceback.print_exc()
@@ -852,6 +922,8 @@ class App(object):
progress_tree.get_widget('progress_label').set_text(_("Please wait
while creating %s") % img_name)
self.progressbar = progress_tree.get_widget('progressbar')
try:
+ mic_cmd = 'image-creator --command=create-live-iso
--project-name=\'' + project.name + '\' --target-name=\'' + target.name + '\'
--image-name=\'' + img_name + '\''
+ self.append_cmd_list(mic_cmd)
self.current_project().create_live_iso(target.name, img_name)
except ValueError, e:
self.show_error_dialog(e.args[0])
@@ -872,6 +944,8 @@ class App(object):
progress_tree.get_widget('progress_label').set_text(_("Please wait
while creating %s") % img_name)
self.progressbar = progress_tree.get_widget('progressbar')
try:
+ mic_cmd = 'image-creator --command=create-nand
--project-name=\'' + project.name + '\' --target-name=\'' + target.name + '\'
--image-name=\'' + img_name + '\''
+ self.append_cmd_list(mic_cmd)
self.current_project().create_NAND_image(target.name, img_name)
except ValueError, e:
self.show_error_dialog(e.args[0])
@@ -1187,7 +1261,8 @@ class App(object):
progress_dialog.connect('delete_event', self.ignore)
progress_tree.get_widget('progress_label').set_text(_("Please wait
while upgrading Project"))
self.progressbar = progress_tree.get_widget('progressbar')
-
+ mic_cmd='image-creator --command=update-project --project-name=\'' +
self.current_project().name + '\''
+ self.append_cmd_list(mic_cmd)
result = self.current_project().updateAndUpgrade()
if result != 0:
raise OSError(_("Internal error while attempting to run
update/upgrade: %s") % result)
@@ -1200,12 +1275,18 @@ class App(object):
progress_dialog.connect('delete_event', self.ignore)
progress_tree.get_widget('progress_label').set_text(_("Please wait
while upgrading Target"))
self.progressbar = progress_tree.get_widget('progressbar')
-
+ mic_cmd='image-creator --command=update-target --project-name=\'' +
self.current_project().name + '\' --target-name=\'' +
self.current_target().name + '\''
+ self.append_cmd_list(mic_cmd)
result = self.current_target().updateAndUpgrade()
if result != 0:
raise OSError(_("Internal error while attempting to run
update/upgrade: %s") % result)
progress_dialog.destroy()
+ def on_editRepo_clicked(self, widget):
+ editRepo = repo_editor.repoEditor(self.sdk,
os.path.join(self.current_target().path, "etc/yum.repos.d"))
+ editRepo.run()
+
+
def formatMirrorSection(self, sectionName, sectionSearch, sectionReplace):
sectionTextFormatted = "\n%s = [\n" % sectionName
index = 0
@@ -1404,8 +1485,11 @@ class App(object):
self.progressbar = progress_tree.get_widget('progressbar')
self.statuslabel = progress_tree.get_widget('status_label')
while gtk.events_pending():
- gtk.main_iteration(False)
- proj =
self.sdk.create_project(newProjectConfiguration.projectPath,
newProjectConfiguration.projectName, newProjectConfiguration.projectDesc,
self.sdk.platforms[newProjectConfiguration.projectPlatform])
+ gtk.main_iteration(False)
+ if mic_cfg.config.get('general', 'use_rootstraps') == '1':
+ proj =
self.sdk.create_project(newProjectConfiguration.projectPath,
newProjectConfiguration.projectName, newProjectConfiguration.projectDesc,
self.sdk.platforms[newProjectConfiguration.projectPlatform])
+ else:
+ proj =
self.sdk.create_project(newProjectConfiguration.projectPath,
newProjectConfiguration.projectName, newProjectConfiguration.projectDesc,
self.sdk.platforms[newProjectConfiguration.projectPlatform], False)
proj.install()
self.projectList.append((newProjectConfiguration.projectName,
newProjectConfiguration.projectDesc, newProjectConfiguration.projectPath,
newProjectConfiguration.projectPlatform))
@@ -1451,6 +1535,127 @@ class App(object):
fsetInfoDialog = DisplayFsetInfo(self.sdk)
fsetInfoDialog.run()
+ def on_editRepo_activate(self, widget):
+ dialog_tree = gtk.glade.XML(self.gladefile, 'fsetsInfo')
+ dialog = dialog_tree.get_widget('fsetsInfo')
+ dialog.set_title("Choose a Platform")
+
+ platformComboBox = dialog_tree.get_widget('platform')
+ cell = gtk.CellRendererText()
+ platformComboBox.pack_start(cell, True)
+ platformComboBox.add_attribute(cell, 'text', 0)
+
+ platformList = sorted(self.sdk.platforms.iterkeys())
+ platformEntryList = gtk.ListStore(gobject.TYPE_STRING)
+ for pname in platformList:
+ platformEntryList.append([pname])
+ platformComboBox.set_model(platformEntryList)
+
+ infoText = dialog_tree.get_widget('info')
+ infoText.hide()
+ fsetComboBox = dialog_tree.get_widget('fset')
+ fsetComboBox.hide()
+
+ dialog.run()
+ dialog.destroy()
+
+ platformName = platformComboBox.get_active_text()
+ if platformName:
+ if self.sdk.platforms[platformName].config_info['package_manager']
== 'yum':
+ editRepo = repo_editor.repoEditor(self.sdk,
os.path.join(self.sdk.platforms[platformName].path, "yum.repos.d"))
+ editRepo.run()
+ else:
+ self.show_error_dialog(_("This feature is currently available
for Yum based platforms only"))
+
+ def on_cmd_history_clicked(self, widget):
+ cmd_dlg = CommandHistoryDlg(self.sdk, self.cmd_history)
+ is_clean = cmd_dlg.run()
+ if is_clean == True:
+ self.clean_cmd_list()
+
+ def append_cmd_list(self, cmd):
+ if len (self.cmd_history) == 0:
+ self.buttons.extract_cmds.set_sensitive(True)
+ self.cmd_history.append(cmd)
+
+ def clean_cmd_list(self):
+ self.cmd_history[:]=[]
+ self.buttons.extract_cmds.set_sensitive(False)
+
+class CommandHistoryDlg(object):
+ """Class to bring up command history dialogue"""
+ def __init__(self, sdk, cmd_history):
+ self.cmd_history = cmd_history
+ self.cmd_txt=""
+ for item in self.cmd_history:
+ self.cmd_txt = self.cmd_txt + item + '\n'
+ self.sdk = sdk
+ self.gladefile = os.path.join(self.sdk.path, "image-creator.glade")
+ self.widgets = gtk.glade.XML (self.gladefile, 'cmd_history_dlg')
+ dic = { "on_clean_btn_clicked" : self.on_clean_btn_clicked,
+ "on_copy_btn_clicked" : self.on_copy_btn_clicked,
+ "on_save_btn_clicked" : self.on_save_btn_clicked
}
+ self.widgets.signal_autoconnect(dic)
+ self.dialog = self.widgets.get_widget('cmd_history_dlg')
+ self.is_clean = False
+
+ def run(self):
+ cmd_txtview = self.widgets.get_widget('cmd_text')
+ cmd_txtbuff = cmd_txtview.get_buffer()
+ cmd_txtbuff.set_text(self.cmd_txt)
+ while True:
+ if self.dialog.run() == gtk.RESPONSE_CLOSE:
+ break
+ self.dialog.destroy()
+ return self.is_clean
+
+ def on_clean_btn_clicked(self, widget):
+ cmd_txtview = self.widgets.get_widget('cmd_text')
+ cmd_txtbuff = cmd_txtview.get_buffer()
+ cmd_txtbuff.set_text('')
+ self.cmd_history[:] = []
+ self.cmd_txt=''
+ self.is_clean = True
+
+ def on_copy_btn_clicked(self, widget):
+ clipboard = gtk.clipboard_get()
+ clipboard.set_text(self.cmd_txt)
+ clipboard.store()
+
+ def on_save_btn_clicked(self, widget):
+ cmds_path = '/var/lib/moblin-image-creator/cmds'
_______________________________________________
Commits mailing list
[email protected]
https://www.moblin.org/mailman/listinfo/commits