diff options
author | Bogdan Marinescu <bogdan.a.marinescu@intel.com> | 2012-09-27 17:13:45 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-09-27 16:45:27 +0100 |
commit | 5c1345c75d248d7e18cb1c3be1e70f42c3c3f701 (patch) | |
tree | 2764dfc3ba11967038597f66c73a5eaeb5349397 /bitbake/lib/bb | |
parent | 87a1f631ad4d86313784efe83679f45ca66daa39 (diff) | |
download | poky-5c1345c75d248d7e18cb1c3be1e70f42c3c3f701.tar.gz |
bitbake: Multiple user interface fixes in settings
1. Move the "Others" tab from advanced settings to simple settings
2. Organize content of tabs into headings
3. Match various labels in the settings with the design
4. Clean up config_md5 in both simple and advanced settings
This patch implements a part of the changes requested by Belen in the settings dialogs.
The second version of the patch addresses all the UI changes requested by Belen (more
details are in the bug description): alphabetical ordering of the image types and
warnings if no image type is selected.
[YOCTO #2162]
(Bitbake rev: b45438555ecf2e25ebb99324a18d31c812a2738a)
Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/builder.py | 1 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/hig.py | 203 |
2 files changed, 150 insertions, 54 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index 357089d7cb..b847165030 100755 --- a/bitbake/lib/bb/ui/crumbs/builder.py +++ b/bitbake/lib/bb/ui/crumbs/builder.py | |||
@@ -1283,6 +1283,7 @@ class Builder(gtk.Window): | |||
1283 | HobAltButton.style_button(button) | 1283 | HobAltButton.style_button(button) |
1284 | button = dialog.add_button("Save", gtk.RESPONSE_YES) | 1284 | button = dialog.add_button("Save", gtk.RESPONSE_YES) |
1285 | HobButton.style_button(button) | 1285 | HobButton.style_button(button) |
1286 | dialog.set_save_button(button) | ||
1286 | response = dialog.run() | 1287 | response = dialog.run() |
1287 | settings_changed = False | 1288 | settings_changed = False |
1288 | if response == gtk.RESPONSE_YES: | 1289 | if response == gtk.RESPONSE_YES: |
diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py index f52510c552..bdb3702e29 100644 --- a/bitbake/lib/bb/ui/crumbs/hig.py +++ b/bitbake/lib/bb/ui/crumbs/hig.py | |||
@@ -313,14 +313,6 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): | |||
313 | 313 | ||
314 | def config_md5(self): | 314 | def config_md5(self): |
315 | data = "" | 315 | data = "" |
316 | data += ("PACKAGE_CLASSES: " + self.configuration.curr_package_format + '\n') | ||
317 | data += ("DISTRO: " + self._get_sorted_value(self.configuration.curr_distro)) | ||
318 | data += ("IMAGE_ROOTFS_SIZE: " + self._get_sorted_value(self.configuration.image_rootfs_size)) | ||
319 | data += ("IMAGE_EXTRA_SIZE: " + self._get_sorted_value(self.configuration.image_extra_size)) | ||
320 | data += ("INCOMPATIBLE_LICENSE: " + self._get_sorted_value(self.configuration.incompat_license)) | ||
321 | data += ("SDK_MACHINE: " + self._get_sorted_value(self.configuration.curr_sdk_machine)) | ||
322 | data += ("TOOLCHAIN_BUILD: " + self._get_sorted_value(self.configuration.toolchain_build)) | ||
323 | data += ("IMAGE_FSTYPES: " + self._get_sorted_value(self.configuration.image_fstypes)) | ||
324 | data += ("ENABLE_PROXY: " + self._get_sorted_value(self.configuration.enable_proxy)) | 316 | data += ("ENABLE_PROXY: " + self._get_sorted_value(self.configuration.enable_proxy)) |
325 | if self.configuration.enable_proxy: | 317 | if self.configuration.enable_proxy: |
326 | for protocol in self.configuration.proxies.keys(): | 318 | for protocol in self.configuration.proxies.keys(): |
@@ -448,6 +440,14 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): | |||
448 | self.configuration.split_proxy("git", self.git_proxy.get_text() + ":" + self.git_proxy_port.get_text()) | 440 | self.configuration.split_proxy("git", self.git_proxy.get_text() + ":" + self.git_proxy_port.get_text()) |
449 | self.configuration.split_proxy("cvs", self.cvs_proxy.get_text() + ":" + self.cvs_proxy_port.get_text()) | 441 | self.configuration.split_proxy("cvs", self.cvs_proxy.get_text() + ":" + self.cvs_proxy_port.get_text()) |
450 | 442 | ||
443 | self.configuration.extra_setting = {} | ||
444 | it = self.setting_store.get_iter_first() | ||
445 | while it: | ||
446 | key = self.setting_store.get_value(it, 0) | ||
447 | value = self.setting_store.get_value(it, 1) | ||
448 | self.configuration.extra_setting[key] = value | ||
449 | it = self.setting_store.iter_next(it) | ||
450 | |||
451 | md5 = self.config_md5() | 451 | md5 = self.config_md5() |
452 | self.settings_changed = (self.md5 != md5) | 452 | self.settings_changed = (self.md5 != md5) |
453 | 453 | ||
@@ -455,9 +455,10 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): | |||
455 | advanced_vbox = gtk.VBox(False, 6) | 455 | advanced_vbox = gtk.VBox(False, 6) |
456 | advanced_vbox.set_border_width(6) | 456 | advanced_vbox.set_border_width(6) |
457 | 457 | ||
458 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Parallel threads</span>'), expand=False, fill=False) | ||
458 | sub_vbox = gtk.VBox(False, 6) | 459 | sub_vbox = gtk.VBox(False, 6) |
459 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 460 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
460 | label = self.gen_label_widget("<span weight=\"bold\">BB number threads:</span>") | 461 | label = self.gen_label_widget("BitBake parallel threads") |
461 | tooltip = "Sets the number of threads that BitBake tasks can simultaneously run. See the <a href=\"" | 462 | tooltip = "Sets the number of threads that BitBake tasks can simultaneously run. See the <a href=\"" |
462 | tooltip += "http://www.yoctoproject.org/docs/current/poky-ref-manual/" | 463 | tooltip += "http://www.yoctoproject.org/docs/current/poky-ref-manual/" |
463 | tooltip += "poky-ref-manual.html#var-BB_NUMBER_THREADS\">Poky reference manual</a> for information" | 464 | tooltip += "poky-ref-manual.html#var-BB_NUMBER_THREADS\">Poky reference manual</a> for information" |
@@ -467,7 +468,7 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): | |||
467 | 468 | ||
468 | sub_vbox = gtk.VBox(False, 6) | 469 | sub_vbox = gtk.VBox(False, 6) |
469 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 470 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
470 | label = self.gen_label_widget("<span weight=\"bold\">Parallel make:</span>") | 471 | label = self.gen_label_widget("Make parallel threads") |
471 | tooltip = "Sets the maximum number of threads the host can use during the build. See the <a href=\"" | 472 | tooltip = "Sets the maximum number of threads the host can use during the build. See the <a href=\"" |
472 | tooltip += "http://www.yoctoproject.org/docs/current/poky-ref-manual/" | 473 | tooltip += "http://www.yoctoproject.org/docs/current/poky-ref-manual/" |
473 | tooltip += "poky-ref-manual.html#var-PARALLEL_MAKE\">Poky reference manual</a> for information" | 474 | tooltip += "poky-ref-manual.html#var-PARALLEL_MAKE\">Poky reference manual</a> for information" |
@@ -475,9 +476,10 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): | |||
475 | sub_vbox.pack_start(label, expand=False, fill=False) | 476 | sub_vbox.pack_start(label, expand=False, fill=False) |
476 | sub_vbox.pack_start(pmake_widget, expand=False, fill=False) | 477 | sub_vbox.pack_start(pmake_widget, expand=False, fill=False) |
477 | 478 | ||
479 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Cache directories and mirror</span>'), expand=False, fill=False) | ||
478 | sub_vbox = gtk.VBox(False, 6) | 480 | sub_vbox = gtk.VBox(False, 6) |
479 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 481 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
480 | label = self.gen_label_widget("<span weight=\"bold\">Select download directory:</span>") | 482 | label = self.gen_label_widget("Download directory") |
481 | tooltip = "Select a folder that caches the upstream project source code" | 483 | tooltip = "Select a folder that caches the upstream project source code" |
482 | dldir_widget, self.dldir_text = self.gen_entry_widget(self.configuration.dldir, self, tooltip) | 484 | dldir_widget, self.dldir_text = self.gen_entry_widget(self.configuration.dldir, self, tooltip) |
483 | sub_vbox.pack_start(label, expand=False, fill=False) | 485 | sub_vbox.pack_start(label, expand=False, fill=False) |
@@ -723,7 +725,7 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
723 | if iter: | 725 | if iter: |
724 | path = model.get_path(iter)[0] | 726 | path = model.get_path(iter)[0] |
725 | model.remove(iter) | 727 | model.remove(iter) |
726 | 728 | ||
727 | def gen_editable_settings(self, setting, tooltip=""): | 729 | def gen_editable_settings(self, setting, tooltip=""): |
728 | setting_hbox = gtk.HBox(False, 12) | 730 | setting_hbox = gtk.HBox(False, 12) |
729 | 731 | ||
@@ -786,6 +788,102 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
786 | 788 | ||
787 | return setting_hbox, setting_store | 789 | return setting_hbox, setting_store |
788 | 790 | ||
791 | def create_others_page(self): | ||
792 | advanced_vbox = gtk.VBox(False, 6) | ||
793 | advanced_vbox.set_border_width(6) | ||
794 | |||
795 | sub_vbox = gtk.VBox(False, 6) | ||
796 | advanced_vbox.pack_start(sub_vbox, expand=True, fill=True) | ||
797 | label = self.gen_label_widget("<span weight=\"bold\">Add your own variables:</span>") | ||
798 | tooltip = "These are key/value pairs for your extra settings. Click \'Add\' and then directly edit the key and the value" | ||
799 | setting_widget, self.setting_store = self.gen_editable_settings(self.configuration.extra_setting, tooltip) | ||
800 | sub_vbox.pack_start(label, expand=False, fill=False) | ||
801 | sub_vbox.pack_start(setting_widget, expand=True, fill=True) | ||
802 | |||
803 | return advanced_vbox | ||
804 | |||
805 | def create_visual_elements(self): | ||
806 | self.nb = gtk.Notebook() | ||
807 | self.nb.set_show_tabs(True) | ||
808 | self.nb.append_page(self.create_build_environment_page(), gtk.Label("Build environment")) | ||
809 | self.nb.append_page(self.create_proxy_page(), gtk.Label("Proxies")) | ||
810 | self.nb.append_page(self.create_others_page(), gtk.Label("Others")) | ||
811 | self.nb.set_current_page(0) | ||
812 | self.vbox.pack_start(self.nb, expand=True, fill=True) | ||
813 | self.vbox.pack_end(gtk.HSeparator(), expand=True, fill=True) | ||
814 | |||
815 | self.show_all() | ||
816 | |||
817 | |||
818 | # | ||
819 | # AdvancedSettings Dialog | ||
820 | # | ||
821 | class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | ||
822 | |||
823 | def details_cb(self, button, parent, protocol): | ||
824 | dialog = ProxyDetailsDialog(title = protocol.upper() + " Proxy Details", | ||
825 | user = self.configuration.proxies[protocol][1], | ||
826 | passwd = self.configuration.proxies[protocol][2], | ||
827 | parent = parent, | ||
828 | flags = gtk.DIALOG_MODAL | ||
829 | | gtk.DIALOG_DESTROY_WITH_PARENT | ||
830 | | gtk.DIALOG_NO_SEPARATOR) | ||
831 | dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_OK) | ||
832 | response = dialog.run() | ||
833 | if response == gtk.RESPONSE_OK: | ||
834 | self.configuration.proxies[protocol][1] = dialog.user | ||
835 | self.configuration.proxies[protocol][2] = dialog.passwd | ||
836 | self.refresh_proxy_components() | ||
837 | dialog.destroy() | ||
838 | |||
839 | def set_save_button(self, button): | ||
840 | self.save_button = button | ||
841 | |||
842 | def rootfs_combo_changed_cb(self, rootfs_combo, all_package_format, check_hbox): | ||
843 | combo_item = self.rootfs_combo.get_active_text() | ||
844 | for child in check_hbox.get_children(): | ||
845 | if isinstance(child, gtk.CheckButton): | ||
846 | check_hbox.remove(child) | ||
847 | for format in all_package_format: | ||
848 | if format != combo_item: | ||
849 | check_button = gtk.CheckButton(format) | ||
850 | check_hbox.pack_start(check_button, expand=False, fill=False) | ||
851 | check_hbox.show_all() | ||
852 | |||
853 | def gen_pkgfmt_widget(self, curr_package_format, all_package_format, tooltip_combo="", tooltip_extra=""): | ||
854 | pkgfmt_vbox = gtk.VBox(False, 6) | ||
855 | |||
856 | label = self.gen_label_widget("Root file system package format") | ||
857 | pkgfmt_vbox.pack_start(label, expand=False, fill=False) | ||
858 | |||
859 | rootfs_format = "" | ||
860 | if curr_package_format: | ||
861 | rootfs_format = curr_package_format.split()[0] | ||
862 | |||
863 | rootfs_format_widget, rootfs_combo = self.gen_combo_widget(rootfs_format, all_package_format, tooltip_combo) | ||
864 | pkgfmt_vbox.pack_start(rootfs_format_widget, expand=False, fill=False) | ||
865 | |||
866 | label = self.gen_label_widget("Additional package formats") | ||
867 | pkgfmt_vbox.pack_start(label, expand=False, fill=False) | ||
868 | |||
869 | check_hbox = gtk.HBox(False, 12) | ||
870 | pkgfmt_vbox.pack_start(check_hbox, expand=False, fill=False) | ||
871 | for format in all_package_format: | ||
872 | if format != rootfs_format: | ||
873 | check_button = gtk.CheckButton(format) | ||
874 | is_active = (format in curr_package_format.split()) | ||
875 | check_button.set_active(is_active) | ||
876 | check_hbox.pack_start(check_button, expand=False, fill=False) | ||
877 | |||
878 | info = HobInfoButton(tooltip_extra, self) | ||
879 | check_hbox.pack_start(info, expand=False, fill=False) | ||
880 | |||
881 | rootfs_combo.connect("changed", self.rootfs_combo_changed_cb, all_package_format, check_hbox) | ||
882 | |||
883 | pkgfmt_vbox.show_all() | ||
884 | |||
885 | return pkgfmt_vbox, rootfs_combo, check_hbox | ||
886 | |||
789 | def __init__(self, title, configuration, all_image_types, | 887 | def __init__(self, title, configuration, all_image_types, |
790 | all_package_formats, all_distros, all_sdk_machines, | 888 | all_package_formats, all_distros, all_sdk_machines, |
791 | max_threads, parent, flags, buttons=None): | 889 | max_threads, parent, flags, buttons=None): |
@@ -811,13 +909,13 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
811 | self.extra_size_spinner = None | 909 | self.extra_size_spinner = None |
812 | self.gplv3_checkbox = None | 910 | self.gplv3_checkbox = None |
813 | self.toolchain_checkbox = None | 911 | self.toolchain_checkbox = None |
814 | self.setting_store = None | ||
815 | self.image_types_checkbuttons = {} | 912 | self.image_types_checkbuttons = {} |
816 | 913 | ||
817 | self.md5 = self.config_md5() | 914 | self.md5 = self.config_md5() |
818 | self.settings_changed = False | 915 | self.settings_changed = False |
819 | 916 | ||
820 | # create visual elements on the dialog | 917 | # create visual elements on the dialog |
918 | self.save_button = None | ||
821 | self.create_visual_elements() | 919 | self.create_visual_elements() |
822 | self.connect("response", self.response_cb) | 920 | self.connect("response", self.response_cb) |
823 | 921 | ||
@@ -834,12 +932,6 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
834 | data += ("SDK_MACHINE: " + self._get_sorted_value(self.configuration.curr_sdk_machine)) | 932 | data += ("SDK_MACHINE: " + self._get_sorted_value(self.configuration.curr_sdk_machine)) |
835 | data += ("TOOLCHAIN_BUILD: " + self._get_sorted_value(self.configuration.toolchain_build)) | 933 | data += ("TOOLCHAIN_BUILD: " + self._get_sorted_value(self.configuration.toolchain_build)) |
836 | data += ("IMAGE_FSTYPES: " + self._get_sorted_value(self.configuration.image_fstypes)) | 934 | data += ("IMAGE_FSTYPES: " + self._get_sorted_value(self.configuration.image_fstypes)) |
837 | data += ("ENABLE_PROXY: " + self._get_sorted_value(self.configuration.enable_proxy)) | ||
838 | if self.configuration.enable_proxy: | ||
839 | for protocol in self.configuration.proxies.keys(): | ||
840 | data += (protocol + ": " + self._get_sorted_value(self.configuration.combine_proxy(protocol))) | ||
841 | for key in self.configuration.extra_setting.keys(): | ||
842 | data += (key + ": " + self._get_sorted_value(self.configuration.extra_setting[key])) | ||
843 | return hashlib.md5(data).hexdigest() | 935 | return hashlib.md5(data).hexdigest() |
844 | 936 | ||
845 | def create_visual_elements(self): | 937 | def create_visual_elements(self): |
@@ -847,13 +939,34 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
847 | self.nb.set_show_tabs(True) | 939 | self.nb.set_show_tabs(True) |
848 | self.nb.append_page(self.create_image_types_page(), gtk.Label("Image types")) | 940 | self.nb.append_page(self.create_image_types_page(), gtk.Label("Image types")) |
849 | self.nb.append_page(self.create_output_page(), gtk.Label("Output")) | 941 | self.nb.append_page(self.create_output_page(), gtk.Label("Output")) |
850 | self.nb.append_page(self.create_others_page(), gtk.Label("Others")) | ||
851 | self.nb.set_current_page(0) | 942 | self.nb.set_current_page(0) |
852 | self.vbox.pack_start(self.nb, expand=True, fill=True) | 943 | self.vbox.pack_start(self.nb, expand=True, fill=True) |
853 | self.vbox.pack_end(gtk.HSeparator(), expand=True, fill=True) | 944 | self.vbox.pack_end(gtk.HSeparator(), expand=True, fill=True) |
854 | 945 | ||
855 | self.show_all() | 946 | self.show_all() |
856 | 947 | ||
948 | def get_num_checked_image_types(self): | ||
949 | total = 0 | ||
950 | for b in self.image_types_checkbuttons.values(): | ||
951 | if b.get_active(): | ||
952 | total = total + 1 | ||
953 | return total | ||
954 | |||
955 | def set_save_button_state(self): | ||
956 | if self.save_button: | ||
957 | self.save_button.set_sensitive(self.get_num_checked_image_types() > 0) | ||
958 | |||
959 | def image_type_checkbutton_clicked_cb(self, button): | ||
960 | self.set_save_button_state() | ||
961 | if self.get_num_checked_image_types() == 0: | ||
962 | # Show an error dialog | ||
963 | lbl = "<b>Select an image type</b>\n\nYou need to select at least one image type." | ||
964 | dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING) | ||
965 | button = dialog.add_button("OK", gtk.RESPONSE_OK) | ||
966 | HobButton.style_button(button) | ||
967 | response = dialog.run() | ||
968 | dialog.destroy() | ||
969 | |||
857 | def create_image_types_page(self): | 970 | def create_image_types_page(self): |
858 | main_vbox = gtk.VBox(False, 16) | 971 | main_vbox = gtk.VBox(False, 16) |
859 | main_vbox.set_border_width(6) | 972 | main_vbox.set_border_width(6) |
@@ -862,7 +975,7 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
862 | advanced_vbox.set_border_width(6) | 975 | advanced_vbox.set_border_width(6) |
863 | 976 | ||
864 | distro_vbox = gtk.VBox(False, 6) | 977 | distro_vbox = gtk.VBox(False, 6) |
865 | label = self.gen_label_widget("<span weight=\"bold\">Distro:</span>") | 978 | label = self.gen_label_widget("Distro:") |
866 | tooltip = "Selects the Yocto Project distribution you want" | 979 | tooltip = "Selects the Yocto Project distribution you want" |
867 | distro_widget, self.distro_combo = self.gen_combo_widget(self.configuration.curr_distro, self.all_distros, tooltip) | 980 | distro_widget, self.distro_combo = self.gen_combo_widget(self.configuration.curr_distro, self.all_distros, tooltip) |
868 | distro_vbox.pack_start(label, expand=False, fill=False) | 981 | distro_vbox.pack_start(label, expand=False, fill=False) |
@@ -876,19 +989,22 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
876 | 989 | ||
877 | tooltip = "Image file system types you want." | 990 | tooltip = "Image file system types you want." |
878 | info = HobInfoButton(tooltip, self) | 991 | info = HobInfoButton(tooltip, self) |
879 | label = self.gen_label_widget("<span weight=\"bold\">Select image types:</span>") | 992 | label = self.gen_label_widget("Image types:") |
880 | table.attach(label, 0, 9, 0, 1) | 993 | align = gtk.Alignment(0, 0.5, 0, 0) |
881 | table.attach(info, 9, 10, 0, 1) | 994 | table.attach(align, 0, 4, 0, 1) |
995 | align.add(label) | ||
996 | table.attach(info, 4, 5, 0, 1) | ||
882 | 997 | ||
883 | i = 1 | 998 | i = 1 |
884 | j = 1 | 999 | j = 1 |
885 | for image_type in self.image_types: | 1000 | for image_type in sorted(self.image_types): |
886 | self.image_types_checkbuttons[image_type] = gtk.CheckButton(image_type) | 1001 | self.image_types_checkbuttons[image_type] = gtk.CheckButton(image_type) |
1002 | self.image_types_checkbuttons[image_type].connect("toggled", self.image_type_checkbutton_clicked_cb) | ||
887 | article = "" | 1003 | article = "" |
888 | if image_type.startswith(("a", "e", "i", "o", "u")): | 1004 | if image_type.startswith(("a", "e", "i", "o", "u")): |
889 | article = "n" | 1005 | article = "n" |
890 | self.image_types_checkbuttons[image_type].set_tooltip_text("Build a%s %s image" % (article, image_type)) | 1006 | self.image_types_checkbuttons[image_type].set_tooltip_text("Build a%s %s image" % (article, image_type)) |
891 | table.attach(self.image_types_checkbuttons[image_type], j, j + 4, i, i + 1) | 1007 | table.attach(self.image_types_checkbuttons[image_type], j - 1, j + 3, i, i + 1) |
892 | if image_type in self.configuration.image_fstypes.split(): | 1008 | if image_type in self.configuration.image_fstypes.split(): |
893 | self.image_types_checkbuttons[image_type].set_active(True) | 1009 | self.image_types_checkbuttons[image_type].set_active(True) |
894 | i += 1 | 1010 | i += 1 |
@@ -897,6 +1013,7 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
897 | j = j + 4 | 1013 | j = j + 4 |
898 | 1014 | ||
899 | main_vbox.pack_start(advanced_vbox, expand=False, fill=False) | 1015 | main_vbox.pack_start(advanced_vbox, expand=False, fill=False) |
1016 | self.set_save_button_state() | ||
900 | 1017 | ||
901 | return main_vbox | 1018 | return main_vbox |
902 | 1019 | ||
@@ -904,18 +1021,18 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
904 | advanced_vbox = gtk.VBox(False, 6) | 1021 | advanced_vbox = gtk.VBox(False, 6) |
905 | advanced_vbox.set_border_width(6) | 1022 | advanced_vbox.set_border_width(6) |
906 | 1023 | ||
1024 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Package format</span>'), expand=False, fill=False) | ||
907 | sub_vbox = gtk.VBox(False, 6) | 1025 | sub_vbox = gtk.VBox(False, 6) |
908 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 1026 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
909 | label = self.gen_label_widget("<span weight=\"bold\">Packaging format:</span>") | ||
910 | tooltip_combo = "Selects the package format used to generate rootfs." | 1027 | tooltip_combo = "Selects the package format used to generate rootfs." |
911 | tooltip_extra = "Selects extra package formats to build" | 1028 | tooltip_extra = "Selects extra package formats to build" |
912 | pkgfmt_widget, self.rootfs_combo, self.check_hbox = self.gen_pkgfmt_widget(self.configuration.curr_package_format, self.all_package_formats, tooltip_combo, tooltip_extra) | 1029 | pkgfmt_widget, self.rootfs_combo, self.check_hbox = self.gen_pkgfmt_widget(self.configuration.curr_package_format, self.all_package_formats, tooltip_combo, tooltip_extra) |
913 | sub_vbox.pack_start(label, expand=False, fill=False) | ||
914 | sub_vbox.pack_start(pkgfmt_widget, expand=False, fill=False) | 1030 | sub_vbox.pack_start(pkgfmt_widget, expand=False, fill=False) |
915 | 1031 | ||
1032 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Image size</span>'), expand=False, fill=False) | ||
916 | sub_vbox = gtk.VBox(False, 6) | 1033 | sub_vbox = gtk.VBox(False, 6) |
917 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 1034 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
918 | label = self.gen_label_widget("<span weight=\"bold\">Image rootfs size: (MB)</span>") | 1035 | label = self.gen_label_widget("Image basic size (in MB)") |
919 | tooltip = "Sets the basic size of your target image.\nThis is the basic size of your target image unless your selected package size exceeds this value or you select \'Image Extra Size\'." | 1036 | tooltip = "Sets the basic size of your target image.\nThis is the basic size of your target image unless your selected package size exceeds this value or you select \'Image Extra Size\'." |
920 | rootfs_size_widget, self.rootfs_size_spinner = self.gen_spinner_widget(int(self.configuration.image_rootfs_size*1.0/1024), 0, 65536, tooltip) | 1037 | rootfs_size_widget, self.rootfs_size_spinner = self.gen_spinner_widget(int(self.configuration.image_rootfs_size*1.0/1024), 0, 65536, tooltip) |
921 | sub_vbox.pack_start(label, expand=False, fill=False) | 1038 | sub_vbox.pack_start(label, expand=False, fill=False) |
@@ -923,12 +1040,13 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
923 | 1040 | ||
924 | sub_vbox = gtk.VBox(False, 6) | 1041 | sub_vbox = gtk.VBox(False, 6) |
925 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) | 1042 | advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) |
926 | label = self.gen_label_widget("<span weight=\"bold\">Image extra size: (MB)</span>") | 1043 | label = self.gen_label_widget("Additional free space (in MB)") |
927 | tooltip = "Sets the extra free space of your target image.\nBy default, the system reserves 30% of your image size as free space. If your image contains zypper, it brings in 50MB more space. The maximum free space is 64GB." | 1044 | tooltip = "Sets the extra free space of your target image.\nBy default, the system reserves 30% of your image size as free space. If your image contains zypper, it brings in 50MB more space. The maximum free space is 64GB." |
928 | extra_size_widget, self.extra_size_spinner = self.gen_spinner_widget(int(self.configuration.image_extra_size*1.0/1024), 0, 65536, tooltip) | 1045 | extra_size_widget, self.extra_size_spinner = self.gen_spinner_widget(int(self.configuration.image_extra_size*1.0/1024), 0, 65536, tooltip) |
929 | sub_vbox.pack_start(label, expand=False, fill=False) | 1046 | sub_vbox.pack_start(label, expand=False, fill=False) |
930 | sub_vbox.pack_start(extra_size_widget, expand=False, fill=False) | 1047 | sub_vbox.pack_start(extra_size_widget, expand=False, fill=False) |
931 | 1048 | ||
1049 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Licensing</span>'), expand=False, fill=False) | ||
932 | self.gplv3_checkbox = gtk.CheckButton("Exclude GPLv3 packages") | 1050 | self.gplv3_checkbox = gtk.CheckButton("Exclude GPLv3 packages") |
933 | self.gplv3_checkbox.set_tooltip_text("Check this box to prevent GPLv3 packages from being included in your image") | 1051 | self.gplv3_checkbox.set_tooltip_text("Check this box to prevent GPLv3 packages from being included in your image") |
934 | if "GPLv3" in self.configuration.incompat_license.split(): | 1052 | if "GPLv3" in self.configuration.incompat_license.split(): |
@@ -937,6 +1055,7 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
937 | self.gplv3_checkbox.set_active(False) | 1055 | self.gplv3_checkbox.set_active(False) |
938 | advanced_vbox.pack_start(self.gplv3_checkbox, expand=False, fill=False) | 1056 | advanced_vbox.pack_start(self.gplv3_checkbox, expand=False, fill=False) |
939 | 1057 | ||
1058 | advanced_vbox.pack_start(self.gen_label_widget('<span weight="bold">Toolchain</span>'), expand=False, fill=False) | ||
940 | sub_hbox = gtk.HBox(False, 6) | 1059 | sub_hbox = gtk.HBox(False, 6) |
941 | advanced_vbox.pack_start(sub_hbox, expand=False, fill=False) | 1060 | advanced_vbox.pack_start(sub_hbox, expand=False, fill=False) |
942 | self.toolchain_checkbox = gtk.CheckButton("Build toolchain") | 1061 | self.toolchain_checkbox = gtk.CheckButton("Build toolchain") |
@@ -950,21 +1069,6 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
950 | 1069 | ||
951 | return advanced_vbox | 1070 | return advanced_vbox |
952 | 1071 | ||
953 | def create_others_page(self): | ||
954 | advanced_vbox = gtk.VBox(False, 6) | ||
955 | advanced_vbox.set_border_width(6) | ||
956 | |||
957 | sub_vbox = gtk.VBox(False, 6) | ||
958 | advanced_vbox.pack_start(sub_vbox, expand=True, fill=True) | ||
959 | label = self.gen_label_widget("<span weight=\"bold\">Add your own variables:</span>") | ||
960 | tooltip = "These are key/value pairs for your extra settings. Click \'Add\' and then directly edit the key and the value" | ||
961 | setting_widget, self.setting_store = self.gen_editable_settings(self.configuration.extra_setting, tooltip) | ||
962 | sub_vbox.pack_start(label, expand=False, fill=False) | ||
963 | sub_vbox.pack_start(setting_widget, expand=True, fill=True) | ||
964 | |||
965 | return advanced_vbox | ||
966 | |||
967 | |||
968 | def response_cb(self, dialog, response_id): | 1072 | def response_cb(self, dialog, response_id): |
969 | package_format = [] | 1073 | package_format = [] |
970 | package_format.append(self.rootfs_combo.get_active_text()) | 1074 | package_format.append(self.rootfs_combo.get_active_text()) |
@@ -993,15 +1097,6 @@ class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper): | |||
993 | self.configuration.incompat_license = self.configuration.incompat_license.strip() | 1097 | self.configuration.incompat_license = self.configuration.incompat_license.strip() |
994 | 1098 | ||
995 | self.configuration.toolchain_build = self.toolchain_checkbox.get_active() | 1099 | self.configuration.toolchain_build = self.toolchain_checkbox.get_active() |
996 | |||
997 | self.configuration.extra_setting = {} | ||
998 | it = self.setting_store.get_iter_first() | ||
999 | while it: | ||
1000 | key = self.setting_store.get_value(it, 0) | ||
1001 | value = self.setting_store.get_value(it, 1) | ||
1002 | self.configuration.extra_setting[key] = value | ||
1003 | it = self.setting_store.iter_next(it) | ||
1004 | |||
1005 | self.configuration.curr_sdk_machine = self.sdk_machine_combo.get_active_text() | 1100 | self.configuration.curr_sdk_machine = self.sdk_machine_combo.get_active_text() |
1006 | md5 = self.config_md5() | 1101 | md5 = self.config_md5() |
1007 | self.settings_changed = (self.md5 != md5) | 1102 | self.settings_changed = (self.md5 != md5) |