Revision 330fd618 image_creator/dialog_main.py
b/image_creator/dialog_main.py | ||
---|---|---|
78 | 78 |
pass |
79 | 79 |
|
80 | 80 |
|
81 |
class metadata_monitor(object): |
|
82 |
def __init__(self, session, meta): |
|
83 |
self.session = session |
|
84 |
self.meta = meta |
|
85 |
|
|
86 |
def __enter__(self): |
|
87 |
self.old = {} |
|
88 |
for (k, v) in self.meta.items(): |
|
89 |
self.old[k] = v |
|
90 |
|
|
91 |
def __exit__(self, type, value, traceback): |
|
92 |
d = self.session['dialog'] |
|
93 |
|
|
94 |
altered = {} |
|
95 |
added = {} |
|
96 |
|
|
97 |
for (k, v) in self.meta.items(): |
|
98 |
if k not in self.old: |
|
99 |
added[k] = v |
|
100 |
elif self.old[k] != v: |
|
101 |
altered[k] = v |
|
102 |
|
|
103 |
if not (len(added) or len(altered)): |
|
104 |
return |
|
105 |
|
|
106 |
msg = "The last action has changed some image properties:\n\n" |
|
107 |
if len(added): |
|
108 |
msg += "New image properties:\n" |
|
109 |
for (k, v) in added.items(): |
|
110 |
msg += ' %s: "%s"\n' % (k, v) |
|
111 |
msg += "\n" |
|
112 |
if len(altered): |
|
113 |
msg += "Updated image properties:\n" |
|
114 |
for (k, v) in altered.items(): |
|
115 |
msg += ' %s: "%s" -> "%s"\n' % (k, self.old[k], v) |
|
116 |
msg += "\n" |
|
117 |
|
|
118 |
self.session['metadata'].update(added) |
|
119 |
self.session['metadata'].update(altered) |
|
120 |
d.msgbox(msg, title="Image Property Changes", width=MSGBOX_WIDTH) |
|
121 |
|
|
122 |
|
|
81 | 123 |
def confirm_exit(d, msg=''): |
82 | 124 |
return not d.yesno("%s Do you want to exit?" % msg, width=YESNO_WIDTH) |
83 | 125 |
|
... | ... | |
590 | 632 |
if 'checksum' in session: |
591 | 633 |
del session['checksum'] |
592 | 634 |
|
593 |
image_os.out = out
|
|
594 |
image_os.do_sysprep()
|
|
595 |
|
|
596 |
for (k, v) in image_os.meta.items():
|
|
597 |
session['metadata'][str(k)] = str(v)
|
|
635 |
# Monitor the metadata changes during syspreps
|
|
636 |
with metadata_monitor(session, image_os.meta):
|
|
637 |
image_os.out = out |
|
638 |
image_os.do_sysprep()
|
|
639 |
image_os.out.finalize()
|
|
598 | 640 |
|
599 | 641 |
# Disable syspreps that have ran |
600 | 642 |
for sysprep in session['exec_syspreps']: |
601 | 643 |
image_os.disable_sysprep(sysprep) |
602 | 644 |
|
603 |
image_os.out.finalize() |
|
604 | 645 |
finally: |
605 | 646 |
dev.umount() |
606 | 647 |
finally: |
... | ... | |
626 | 667 |
|
627 | 668 |
if not d.yesno("%s\n\nDo you want to continue?" % msg, width=70, |
628 | 669 |
height=12, title="Image Shrinking"): |
629 |
dev.out = InfoBoxOutput(d, "Image Shrinking", height=3) |
|
630 |
session['metadata']['SIZE'] = str(dev.shrink()) |
|
670 |
|
|
671 |
with metadata_monitor(session, dev.meta): |
|
672 |
dev.out = InfoBoxOutput(d, "Image Shrinking", height=3) |
|
673 |
dev.shrink() |
|
674 |
dev.out.finalize() |
|
675 |
|
|
631 | 676 |
session['shrinked'] = True |
632 | 677 |
update_background_title(session) |
633 |
dev.out.finalize() |
|
634 | 678 |
|
635 | 679 |
|
636 | 680 |
def customization_menu(session): |
Also available in: Unified diff