[bitbake-devel] [PATCH] Implement 'settings' dialog as designed

Marinescu, Bogdan A bogdan.a.marinescu at intel.com
Thu Sep 6 15:21:01 UTC 2012


Sorry for the double post. The two patches in my messages are exactly the
same.

Thanks,
Bogdan

On Mon, Sep 3, 2012 at 5:36 PM, Bogdan Marinescu <
bogdan.a.marinescu at intel.com> wrote:

> From: Valentin Popa <valentin.popa at intel.com>
>
> [YOCTO #2162]
> ---
>  bitbake/lib/bb/ui/crumbs/builder.py                |   34 +-
>  bitbake/lib/bb/ui/crumbs/hig.py                    |  664
> ++++++++++++--------
>  bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py |   23 +-
>  3 files changed, 435 insertions(+), 286 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/crumbs/builder.py
> b/bitbake/lib/bb/ui/crumbs/builder.py
> index 7de4798..e3bc9df 100755
> --- a/bitbake/lib/bb/ui/crumbs/builder.py
> +++ b/bitbake/lib/bb/ui/crumbs/builder.py
> @@ -36,8 +36,8 @@ from bb.ui.crumbs.builddetailspage import
> BuildDetailsPage
>  from bb.ui.crumbs.imagedetailspage import ImageDetailsPage
>  from bb.ui.crumbs.hobwidget import hwc, HobButton, HobAltButton, hcc
>  from bb.ui.crumbs.hig import CrumbsMessageDialog, ImageSelectionDialog, \
> -                             AdvancedSettingDialog, LayerSelectionDialog,
> \
> -                             DeployImageDialog
> +                             AdvancedSettingDialog, SimpleSettingsDialog,
> \
> +                             LayerSelectionDialog, DeployImageDialog
>  from bb.ui.crumbs.persistenttooltip import PersistentTooltip
>  import bb.ui.crumbs.utils
>
> @@ -793,6 +793,7 @@ class Builder(gtk.Window):
>
>  self.image_configuration_page.layer_button.set_sensitive(sensitive)
>
>  self.image_configuration_page.layer_info_icon.set_sensitive(sensitive)
>          self.image_configuration_page.toolbar.set_sensitive(sensitive)
> +
>  self.image_configuration_page.view_adv_configuration_button.set_sensitive(sensitive)
>
>  self.image_configuration_page.config_build_button.set_sensitive(sensitive)
>
>          self.recipe_details_page.set_sensitive(sensitive)
> @@ -1141,7 +1142,32 @@ class Builder(gtk.Window):
>          dialog.destroy()
>
>      def show_adv_settings_dialog(self):
> -        dialog = AdvancedSettingDialog(title = "Settings",
> +        dialog = AdvancedSettingDialog(title = "Advanced configuration",
> +            configuration = copy.deepcopy(self.configuration),
> +            all_image_types = self.parameters.image_types,
> +            all_package_formats = self.parameters.all_package_formats,
> +            all_distros = self.parameters.all_distros,
> +            all_sdk_machines = self.parameters.all_sdk_machines,
> +            max_threads = self.parameters.max_threads,
> +            parent = self,
> +            flags = gtk.DIALOG_MODAL
> +                    | gtk.DIALOG_DESTROY_WITH_PARENT
> +                    | gtk.DIALOG_NO_SEPARATOR)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Save", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
> +        response = dialog.run()
> +        settings_changed = False
> +        if response == gtk.RESPONSE_YES:
> +            self.configuration = dialog.configuration
> +            self.save_defaults() # remember settings
> +            settings_changed = dialog.settings_changed
> +        dialog.destroy()
> +        return response == gtk.RESPONSE_YES, settings_changed
> +
> +    def show_simple_settings_dialog(self):
> +        dialog = SimpleSettingsDialog(title = "Settings",
>              configuration = copy.deepcopy(self.configuration),
>              all_image_types = self.parameters.image_types,
>              all_package_formats = self.parameters.all_package_formats,
> @@ -1334,4 +1360,4 @@ class Builder(gtk.Window):
>              format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
>              self.consolelog.setFormatter(format)
>
> -            self.logger.addHandler(self.consolelog)
> \ No newline at end of file
> +            self.logger.addHandler(self.consolelog)
> diff --git a/bitbake/lib/bb/ui/crumbs/hig.py
> b/bitbake/lib/bb/ui/crumbs/hig.py
> index 2001ff4..2c77bf7 100644
> --- a/bitbake/lib/bb/ui/crumbs/hig.py
> +++ b/bitbake/lib/bb/ui/crumbs/hig.py
> @@ -41,6 +41,88 @@ BitBake GUI's
>  In summary: spacing = 12px, border-width = 6px
>  """
>
> +
> +class SettingsUIHelper():
> +
> +    def gen_label_widget(self, content):
> +        label = gtk.Label()
> +        label.set_alignment(0, 0)
> +        label.set_markup(content)
> +        label.show()
> +        return label
> +
> +    def gen_spinner_widget(self, content, lower, upper, tooltip=""):
> +        hbox = gtk.HBox(False, 12)
> +        adjust = gtk.Adjustment(value=content, lower=lower, upper=upper,
> step_incr=1)
> +        spinner = gtk.SpinButton(adjustment=adjust, climb_rate=1,
> digits=0)
> +
> +        spinner.set_value(content)
> +        hbox.pack_start(spinner, expand=False, fill=False)
> +
> +        info = HobInfoButton(tooltip, self)
> +        hbox.pack_start(info, expand=False, fill=False)
> +
> +        hbox.show_all()
> +        return hbox, spinner
> +
> +    def gen_combo_widget(self, curr_item, all_item, tooltip=""):
> +        hbox = gtk.HBox(False, 12)
> +        combo = gtk.combo_box_new_text()
> +        hbox.pack_start(combo, expand=False, fill=False)
> +
> +        index = 0
> +        for item in all_item or []:
> +            combo.append_text(item)
> +            if item == curr_item:
> +                combo.set_active(index)
> +            index += 1
> +
> +        info = HobInfoButton(tooltip, self)
> +        hbox.pack_start(info, expand=False, fill=False)
> +
> +        hbox.show_all()
> +        return hbox, combo
> +
> +    def entry_widget_select_path_cb(self, action, parent, entry):
> +        dialog = gtk.FileChooserDialog("", parent,
> +
> gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
> +        text = entry.get_text()
> +        dialog.set_current_folder(text if len(text) > 0 else os.getcwd())
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
> +        response = dialog.run()
> +        if response == gtk.RESPONSE_YES:
> +            path = dialog.get_filename()
> +            entry.set_text(path)
> +
> +        dialog.destroy()
> +
> +    def gen_entry_widget(self, content, parent, tooltip="",
> need_button=True):
> +        hbox = gtk.HBox(False, 12)
> +        entry = gtk.Entry()
> +        entry.set_text(content)
> +
> +        if need_button:
> +            table = gtk.Table(1, 10, True)
> +            hbox.pack_start(table, expand=True, fill=True)
> +            table.attach(entry, 0, 9, 0, 1)
> +            image = gtk.Image()
> +            image.set_from_stock(gtk.STOCK_OPEN,gtk.ICON_SIZE_BUTTON)
> +            open_button = gtk.Button()
> +            open_button.set_image(image)
> +            open_button.connect("clicked",
> self.entry_widget_select_path_cb, parent, entry)
> +            table.attach(open_button, 9, 10, 0, 1)
> +        else:
> +            hbox.pack_start(entry, expand=True, fill=True)
> +
> +        info = HobInfoButton(tooltip, self)
> +        hbox.pack_start(info, expand=False, fill=False)
> +
> +        hbox.show_all()
> +        return hbox, entry
> +
>  #
>  # CrumbsDialog
>  #
> @@ -94,89 +176,309 @@ class CrumbsMessageDialog(CrumbsDialog):
>          first_row.add(self.label)
>
>  #
> -# AdvancedSettings Dialog
> +# SimpleSettings Dialog
>  #
> -class AdvancedSettingDialog (CrumbsDialog):
> +class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper):
>
> -    def gen_label_widget(self, content):
> -        label = gtk.Label()
> -        label.set_alignment(0, 0)
> -        label.set_markup(content)
> -        label.show()
> -        return label
> +    def __init__(self, title, configuration, all_image_types,
> +            all_package_formats, all_distros, all_sdk_machines,
> +            max_threads, parent, flags, buttons=None):
> +        super(SimpleSettingsDialog, self).__init__(title, parent, flags,
> buttons)
>
> -    def gen_spinner_widget(self, content, lower, upper, tooltip=""):
> +        # class members from other objects
> +        # bitbake settings from Builder.Configuration
> +        self.configuration = configuration
> +        self.image_types = all_image_types
> +        self.all_package_formats = all_package_formats
> +        self.all_distros = all_distros
> +        self.all_sdk_machines = all_sdk_machines
> +        self.max_threads = max_threads
> +
> +        # class members for internal use
> +        self.distro_combo = None
> +        self.dldir_text = None
> +        self.sstatedir_text = None
> +        self.sstatemirror_text = None
> +        self.bb_spinner = None
> +        self.pmake_spinner = None
> +        self.rootfs_size_spinner = None
> +        self.extra_size_spinner = None
> +        self.gplv3_checkbox = None
> +        self.toolchain_checkbox = None
> +        self.setting_store = None
> +        self.image_types_checkbuttons = {}
> +
> +        self.md5 = self.config_md5()
> +        self.settings_changed = False
> +
> +        # create visual elements on the dialog
> +        self.create_visual_elements()
> +        self.connect("response", self.response_cb)
> +
> +    def _get_sorted_value(self, var):
> +        return " ".join(sorted(str(var).split())) + "\n"
> +
> +    def config_md5(self):
> +        data = ""
> +        data += ("PACKAGE_CLASSES: "      +
> self.configuration.curr_package_format + '\n')
> +        data += ("DISTRO: "               +
> self._get_sorted_value(self.configuration.curr_distro))
> +        data += ("IMAGE_ROOTFS_SIZE: "    +
> self._get_sorted_value(self.configuration.image_rootfs_size))
> +        data += ("IMAGE_EXTRA_SIZE: "     +
> self._get_sorted_value(self.configuration.image_extra_size))
> +        data += ("INCOMPATIBLE_LICENSE: " +
> self._get_sorted_value(self.configuration.incompat_license))
> +        data += ("SDK_MACHINE: "          +
> self._get_sorted_value(self.configuration.curr_sdk_machine))
> +        data += ("TOOLCHAIN_BUILD: "      +
> self._get_sorted_value(self.configuration.toolchain_build))
> +        data += ("IMAGE_FSTYPES: "        +
> self._get_sorted_value(self.configuration.image_fstypes))
> +        data += ("ENABLE_PROXY: "         +
> self._get_sorted_value(self.configuration.enable_proxy))
> +        if self.configuration.enable_proxy:
> +            for protocol in self.configuration.proxies.keys():
> +                data += (protocol + ": " +
> self._get_sorted_value(self.configuration.combine_proxy(protocol)))
> +        for key in self.configuration.extra_setting.keys():
> +            data += (key + ": " +
> self._get_sorted_value(self.configuration.extra_setting[key]))
> +        return hashlib.md5(data).hexdigest()
> +
> +    def details_cb(self, button, parent, protocol):
> +        dialog = ProxyDetailsDialog(title = protocol.upper() + " Proxy
> Details",
> +            user = self.configuration.proxies[protocol][1],
> +            passwd = self.configuration.proxies[protocol][2],
> +            parent = parent,
> +            flags = gtk.DIALOG_MODAL
> +                    | gtk.DIALOG_DESTROY_WITH_PARENT
> +                    | gtk.DIALOG_NO_SEPARATOR)
> +        dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_OK)
> +        response = dialog.run()
> +        if response == gtk.RESPONSE_OK:
> +            self.configuration.proxies[protocol][1] = dialog.user
> +            self.configuration.proxies[protocol][2] = dialog.passwd
> +            self.refresh_proxy_components()
> +        dialog.destroy()
> +
> +    def gen_proxy_entry_widget(self, protocol, parent, need_button=True):
>          hbox = gtk.HBox(False, 12)
> -        adjust = gtk.Adjustment(value=content, lower=lower, upper=upper,
> step_incr=1)
> -        spinner = gtk.SpinButton(adjustment=adjust, climb_rate=1,
> digits=0)
>
> -        spinner.set_value(content)
> -        hbox.pack_start(spinner, expand=False, fill=False)
> +        label = gtk.Label(protocol.upper() + " proxy")
> +        hbox.pack_start(label, expand=True, fill=False, padding=24)
>
> -        info = HobInfoButton(tooltip, self)
> -        hbox.pack_start(info, expand=False, fill=False)
> +        proxy_entry = gtk.Entry()
> +        proxy_entry.set_size_request(300, -1)
> +        hbox.pack_start(proxy_entry, expand=False, fill=False)
> +
> +        hbox.pack_start(gtk.Label(":"), expand=False, fill=False)
> +
> +        port_entry = gtk.Entry()
> +        port_entry.set_size_request(60, -1)
> +        hbox.pack_start(port_entry, expand=False, fill=False)
> +
> +        details_button = HobAltButton("Details")
> +        details_button.connect("clicked", self.details_cb, parent,
> protocol)
> +        hbox.pack_start(details_button, expand=False, fill=False)
>
>          hbox.show_all()
> -        return hbox, spinner
> +        return hbox, proxy_entry, port_entry, details_button
>
> -    def gen_combo_widget(self, curr_item, all_item, tooltip=""):
> -        hbox = gtk.HBox(False, 12)
> -        combo = gtk.combo_box_new_text()
> -        hbox.pack_start(combo, expand=False, fill=False)
> +    def refresh_proxy_components(self):
> +        self.same_checkbox.set_sensitive(self.configuration.enable_proxy)
>
> -        index = 0
> -        for item in all_item or []:
> -            combo.append_text(item)
> -            if item == curr_item:
> -                combo.set_active(index)
> -            index += 1
> +
>  self.http_proxy.set_text(self.configuration.combine_host_only("http"))
> +        self.http_proxy.set_editable(self.configuration.enable_proxy)
> +        self.http_proxy.set_sensitive(self.configuration.enable_proxy)
> +
>  self.http_proxy_port.set_text(self.configuration.combine_port_only("http"))
> +        self.http_proxy_port.set_editable(self.configuration.enable_proxy)
> +
>  self.http_proxy_port.set_sensitive(self.configuration.enable_proxy)
> +
>  self.http_proxy_details.set_sensitive(self.configuration.enable_proxy)
> +
> +
>  self.https_proxy.set_text(self.configuration.combine_host_only("https"))
> +        self.https_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +        self.https_proxy.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +
>  self.https_proxy_port.set_text(self.configuration.combine_port_only("https"))
> +
>  self.https_proxy_port.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
>  self.https_proxy_port.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
>  self.https_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
> +
>  self.ftp_proxy.set_text(self.configuration.combine_host_only("ftp"))
> +        self.ftp_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +        self.ftp_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
>  self.ftp_proxy_port.set_text(self.configuration.combine_port_only("ftp"))
> +        self.ftp_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +        self.ftp_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +
>  self.ftp_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
> +
>  self.git_proxy.set_text(self.configuration.combine_host_only("git"))
> +        self.git_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +        self.git_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
>  self.git_proxy_port.set_text(self.configuration.combine_port_only("git"))
> +        self.git_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +        self.git_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +
>  self.git_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
> +
>  self.cvs_proxy.set_text(self.configuration.combine_host_only("cvs"))
> +        self.cvs_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +        self.cvs_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> +
>  self.cvs_proxy_port.set_text(self.configuration.combine_port_only("cvs"))
> +        self.cvs_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +        self.cvs_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> +
>  self.cvs_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
>
> +    def proxy_checkbox_toggled_cb(self, button):
> +        self.configuration.enable_proxy = self.proxy_checkbox.get_active()
> +        if not self.configuration.enable_proxy:
> +            self.configuration.same_proxy = False
> +            self.same_checkbox.set_active(self.configuration.same_proxy)
> +        self.refresh_proxy_components()
> +
> +    def same_checkbox_toggled_cb(self, button):
> +        self.configuration.same_proxy = self.same_checkbox.get_active()
> +        self.refresh_proxy_components()
> +
> +    def response_cb(self, dialog, response_id):
> +        #self.configuration.curr_distro =
> self.distro_combo.get_active_text()
> +        self.configuration.dldir = self.dldir_text.get_text()
> +        self.configuration.sstatedir = self.sstatedir_text.get_text()
> +        self.configuration.sstatemirror =
> self.sstatemirror_text.get_text()
> +        self.configuration.bbthread = self.bb_spinner.get_value_as_int()
> +        self.configuration.pmake = self.pmake_spinner.get_value_as_int()
> +
> +        self.configuration.split_proxy("http", self.http_proxy.get_text()
> + ":" + self.http_proxy_port.get_text())
> +        if self.configuration.same_proxy:
> +            self.configuration.split_proxy("https",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> +            self.configuration.split_proxy("ftp",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> +            self.configuration.split_proxy("git",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> +            self.configuration.split_proxy("cvs",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> +        else:
> +            self.configuration.split_proxy("https",
> self.https_proxy.get_text() + ":" + self.https_proxy_port.get_text())
> +            self.configuration.split_proxy("ftp",
> self.ftp_proxy.get_text() + ":" + self.ftp_proxy_port.get_text())
> +            self.configuration.split_proxy("git",
> self.git_proxy.get_text() + ":" + self.git_proxy_port.get_text())
> +            self.configuration.split_proxy("cvs",
> self.cvs_proxy.get_text() + ":" + self.cvs_proxy_port.get_text())
> +
> +        md5 = self.config_md5()
> +        self.settings_changed = (self.md5 != md5)
> +
> +    def create_build_environment_page(self):
> +        advanced_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.set_border_width(6)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">BB number
> threads:</span>")
> +        tooltip = "Sets the number of threads that BitBake tasks can
> simultaneously run. See the <a href=\""
> +        tooltip += "
> http://www.yoctoproject.org/docs/current/poky-ref-manual/"
> +        tooltip += "poky-ref-manual.html#var-BB_NUMBER_THREADS\">Poky
> reference manual</a> for information"
> +        bbthread_widget, self.bb_spinner =
> self.gen_spinner_widget(self.configuration.bbthread, 1, self.max_threads,
> tooltip)
> +        sub_vbox.pack_start(label, expand=False, fill=False)
> +        sub_vbox.pack_start(bbthread_widget, expand=False, fill=False)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">Parallel
> make:</span>")
> +        tooltip = "Sets the maximum number of threads the host can use
> during the build. See the <a href=\""
> +        tooltip += "
> http://www.yoctoproject.org/docs/current/poky-ref-manual/"
> +        tooltip += "poky-ref-manual.html#var-PARALLEL_MAKE\">Poky
> reference manual</a> for information"
> +        pmake_widget, self.pmake_spinner =
> self.gen_spinner_widget(self.configuration.pmake, 1, self.max_threads,
> tooltip)
> +        sub_vbox.pack_start(label, expand=False, fill=False)
> +        sub_vbox.pack_start(pmake_widget, expand=False, fill=False)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">Select
> download directory:</span>")
> +        tooltip = "Select a folder that caches the upstream project
> source code"
> +        dldir_widget, self.dldir_text =
> self.gen_entry_widget(self.configuration.dldir, self, tooltip)
> +        sub_vbox.pack_start(label, expand=False, fill=False)
> +        sub_vbox.pack_start(dldir_widget, expand=False, fill=False)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">Select
> SSTATE directory:</span>")
> +        tooltip = "Select a folder that caches your prebuilt results"
> +        sstatedir_widget, self.sstatedir_text =
> self.gen_entry_widget(self.configuration.sstatedir, self, tooltip)
> +        sub_vbox.pack_start(label, expand=False, fill=False)
> +        sub_vbox.pack_start(sstatedir_widget, expand=False, fill=False)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">Select
> SSTATE mirror:</span>")
> +        tooltip = "Select the pre-built mirror that will speed your build"
> +        sstatemirror_widget, self.sstatemirror_text =
> self.gen_entry_widget(self.configuration.sstatemirror, self, tooltip)
> +        sub_vbox.pack_start(label, expand=False, fill=False)
> +        sub_vbox.pack_start(sstatemirror_widget, expand=False, fill=False)
> +
> +        return advanced_vbox
> +
> +    def create_proxy_page(self):
> +        advanced_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.set_border_width(6)
> +
> +        sub_vbox = gtk.VBox(False, 6)
> +        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> +        label = self.gen_label_widget("<span weight=\"bold\">Set the
> proxies that will be used during fetching source code</span>")
> +        tooltip = "Set the proxies that will be used during fetching
> source code or set none for direct the Internet connection"
>          info = HobInfoButton(tooltip, self)
> +        hbox = gtk.HBox(False, 12)
> +        hbox.pack_start(label, expand=True, fill=True)
>          hbox.pack_start(info, expand=False, fill=False)
> +        sub_vbox.pack_start(hbox, expand=False, fill=False)
>
> -        hbox.show_all()
> -        return hbox, combo
> +        self.direct_checkbox = gtk.RadioButton(None, "Direct internet
> connection")
> +        self.direct_checkbox.set_tooltip_text("Check this box to connect
> the Internet directly without any proxy")
> +        self.direct_checkbox.set_active(not
> self.configuration.enable_proxy)
> +        sub_vbox.pack_start(self.direct_checkbox, expand=False,
> fill=False)
>
> -    def entry_widget_select_path_cb(self, action, parent, entry):
> -        dialog = gtk.FileChooserDialog("", parent,
> -
> gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
> -        text = entry.get_text()
> -        dialog.set_current_folder(text if len(text) > 0 else os.getcwd())
> -        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> -        HobAltButton.style_button(button)
> -        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> -        HobButton.style_button(button)
> -        response = dialog.run()
> -        if response == gtk.RESPONSE_YES:
> -            path = dialog.get_filename()
> -            entry.set_text(path)
> +        self.proxy_checkbox = gtk.RadioButton(self.direct_checkbox,
> "Manual proxy configuration")
> +        self.proxy_checkbox.set_tooltip_text("Check this box to setup the
> proxy you specified")
> +        self.proxy_checkbox.set_active(self.configuration.enable_proxy)
> +        sub_vbox.pack_start(self.proxy_checkbox, expand=False, fill=False)
> +
> +        self.same_checkbox = gtk.CheckButton("Use the same proxy for all
> protocols")
> +        self.same_checkbox.set_tooltip_text("Use the same proxy as the
> first proxy i.e. http proxy for all protocols")
> +        self.same_checkbox.set_active(self.configuration.same_proxy)
> +        hbox = gtk.HBox(False, 12)
> +        hbox.pack_start(self.same_checkbox, expand=False, fill=False,
> padding=24)
> +        sub_vbox.pack_start(hbox, expand=False, fill=False)
> +
> +        proxy_widget, self.http_proxy, self.http_proxy_port,
> self.http_proxy_details = self.gen_proxy_entry_widget(
> +            "http", self, True)
> +        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> +
> +        proxy_widget, self.https_proxy, self.https_proxy_port,
> self.https_proxy_details = self.gen_proxy_entry_widget(
> +            "https", self, True)
> +        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> +
> +        proxy_widget, self.ftp_proxy, self.ftp_proxy_port,
> self.ftp_proxy_details = self.gen_proxy_entry_widget(
> +            "ftp", self, True)
> +        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> +
> +        proxy_widget, self.git_proxy, self.git_proxy_port,
> self.git_proxy_details = self.gen_proxy_entry_widget(
> +            "git", self, True)
> +        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> +
> +        proxy_widget, self.cvs_proxy, self.cvs_proxy_port,
> self.cvs_proxy_details = self.gen_proxy_entry_widget(
> +            "cvs", self, True)
> +        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
>
> -        dialog.destroy()
> +        self.direct_checkbox.connect("toggled",
> self.proxy_checkbox_toggled_cb)
> +        self.proxy_checkbox.connect("toggled",
> self.proxy_checkbox_toggled_cb)
> +        self.same_checkbox.connect("toggled",
> self.same_checkbox_toggled_cb)
>
> -    def gen_entry_widget(self, content, parent, tooltip="",
> need_button=True):
> -        hbox = gtk.HBox(False, 12)
> -        entry = gtk.Entry()
> -        entry.set_text(content)
> +        self.refresh_proxy_components()
> +        return advanced_vbox
>
> -        if need_button:
> -            table = gtk.Table(1, 10, True)
> -            hbox.pack_start(table, expand=True, fill=True)
> -            table.attach(entry, 0, 9, 0, 1)
> -            image = gtk.Image()
> -            image.set_from_stock(gtk.STOCK_OPEN,gtk.ICON_SIZE_BUTTON)
> -            open_button = gtk.Button()
> -            open_button.set_image(image)
> -            open_button.connect("clicked",
> self.entry_widget_select_path_cb, parent, entry)
> -            table.attach(open_button, 9, 10, 0, 1)
> -        else:
> -            hbox.pack_start(entry, expand=True, fill=True)
>
> -        info = HobInfoButton(tooltip, self)
> -        hbox.pack_start(info, expand=False, fill=False)
> +    def create_visual_elements(self):
> +        self.nb = gtk.Notebook()
> +        self.nb.set_show_tabs(True)
> +        self.nb.append_page(self.create_build_environment_page(),
> gtk.Label("Build environment"))
> +        self.nb.append_page(self.create_proxy_page(),
> gtk.Label("Proxies"))
> +        self.nb.set_current_page(0)
> +        self.vbox.pack_start(self.nb, expand=True, fill=True)
> +        self.vbox.pack_end(gtk.HSeparator(), expand=True, fill=True)
> +
> +        self.show_all()
>
> -        hbox.show_all()
> -        return hbox, entry
>
> +
> +#
> +# AdvancedSettings Dialog
> +#
> +class AdvancedSettingDialog (CrumbsDialog, SettingsUIHelper):
> +
>      def details_cb(self, button, parent, protocol):
>          dialog = ProxyDetailsDialog(title = protocol.upper() + " Proxy
> Details",
>              user = self.configuration.proxies[protocol][1],
> @@ -191,30 +493,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>              self.configuration.proxies[protocol][1] = dialog.user
>              self.configuration.proxies[protocol][2] = dialog.passwd
>              self.refresh_proxy_components()
> -        dialog.destroy()
> -
> -    def gen_proxy_entry_widget(self, protocol, parent, need_button=True):
> -        hbox = gtk.HBox(False, 12)
> -
> -        label = gtk.Label(protocol.upper() + " proxy")
> -        hbox.pack_start(label, expand=True, fill=False, padding=24)
> -
> -        proxy_entry = gtk.Entry()
> -        proxy_entry.set_size_request(300, -1)
> -        hbox.pack_start(proxy_entry, expand=False, fill=False)
> -
> -        hbox.pack_start(gtk.Label(":"), expand=False, fill=False)
> -
> -        port_entry = gtk.Entry()
> -        port_entry.set_size_request(60, -1)
> -        hbox.pack_start(port_entry, expand=False, fill=False)
> -
> -        details_button = HobAltButton("Details")
> -        details_button.connect("clicked", self.details_cb, parent,
> protocol)
> -        hbox.pack_start(details_button, expand=False, fill=False)
> -
> -        hbox.show_all()
> -        return hbox, proxy_entry, port_entry, details_button
> +        dialog.destroy()
>
>      def rootfs_combo_changed_cb(self, rootfs_combo, all_package_format,
> check_hbox):
>          combo_item = self.rootfs_combo.get_active_text()
> @@ -412,8 +691,6 @@ class AdvancedSettingDialog (CrumbsDialog):
>          self.nb.set_show_tabs(True)
>          self.nb.append_page(self.create_image_types_page(),
> gtk.Label("Image types"))
>          self.nb.append_page(self.create_output_page(),
> gtk.Label("Output"))
> -        self.nb.append_page(self.create_build_environment_page(),
> gtk.Label("Build environment"))
> -        self.nb.append_page(self.create_proxy_page(),
> gtk.Label("Proxies"))
>          self.nb.append_page(self.create_others_page(),
> gtk.Label("Others"))
>          self.nb.set_current_page(0)
>          self.vbox.pack_start(self.nb, expand=True, fill=True)
> @@ -422,10 +699,22 @@ class AdvancedSettingDialog (CrumbsDialog):
>          self.show_all()
>
>      def create_image_types_page(self):
> +        main_vbox = gtk.VBox(False, 16)
> +        main_vbox.set_border_width(6)
> +
>          advanced_vbox = gtk.VBox(False, 6)
>          advanced_vbox.set_border_width(6)
>
> -        rows = (len(self.image_types)+1)/2
> +        distro_vbox = gtk.VBox(False, 6)
> +        label = self.gen_label_widget("<span
> weight=\"bold\">Distro:</span>")
> +        tooltip = "Selects the Yocto Project distribution you want"
> +        distro_widget, self.distro_combo =
> self.gen_combo_widget(self.configuration.curr_distro, self.all_distros,
> tooltip)
> +        distro_vbox.pack_start(label, expand=False, fill=False)
> +        distro_vbox.pack_start(distro_widget, expand=False, fill=False)
> +        main_vbox.pack_start(distro_vbox, expand=False, fill=False)
> +
> +
> +        rows = (len(self.image_types)+1)/3
>          table = gtk.Table(rows + 1, 10, True)
>          advanced_vbox.pack_start(table, expand=False, fill=False)
>
> @@ -451,7 +740,9 @@ class AdvancedSettingDialog (CrumbsDialog):
>                  i = 1
>                  j = j + 4
>
> -        return advanced_vbox
> +        main_vbox.pack_start(advanced_vbox, expand=False, fill=False)
> +
> +        return main_vbox
>
>      def create_output_page(self):
>          advanced_vbox = gtk.VBox(False, 6)
> @@ -503,122 +794,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>
>          return advanced_vbox
>
> -    def create_build_environment_page(self):
> -        advanced_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.set_border_width(6)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Select
> distro:</span>")
> -        tooltip = "Selects the Yocto Project distribution you want"
> -        distro_widget, self.distro_combo =
> self.gen_combo_widget(self.configuration.curr_distro, self.all_distros,
> tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(distro_widget, expand=False, fill=False)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">BB number
> threads:</span>")
> -        tooltip = "Sets the number of threads that BitBake tasks can
> simultaneously run. See the <a href=\""
> -        tooltip += "
> http://www.yoctoproject.org/docs/current/poky-ref-manual/"
> -        tooltip += "poky-ref-manual.html#var-BB_NUMBER_THREADS\">Poky
> reference manual</a> for information"
> -        bbthread_widget, self.bb_spinner =
> self.gen_spinner_widget(self.configuration.bbthread, 1, self.max_threads,
> tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(bbthread_widget, expand=False, fill=False)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Parallel
> make:</span>")
> -        tooltip = "Sets the maximum number of threads the host can use
> during the build. See the <a href=\""
> -        tooltip += "
> http://www.yoctoproject.org/docs/current/poky-ref-manual/"
> -        tooltip += "poky-ref-manual.html#var-PARALLEL_MAKE\">Poky
> reference manual</a> for information"
> -        pmake_widget, self.pmake_spinner =
> self.gen_spinner_widget(self.configuration.pmake, 1, self.max_threads,
> tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(pmake_widget, expand=False, fill=False)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Select
> download directory:</span>")
> -        tooltip = "Select a folder that caches the upstream project
> source code"
> -        dldir_widget, self.dldir_text =
> self.gen_entry_widget(self.configuration.dldir, self, tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(dldir_widget, expand=False, fill=False)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Select
> SSTATE directory:</span>")
> -        tooltip = "Select a folder that caches your prebuilt results"
> -        sstatedir_widget, self.sstatedir_text =
> self.gen_entry_widget(self.configuration.sstatedir, self, tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(sstatedir_widget, expand=False, fill=False)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Select
> SSTATE mirror:</span>")
> -        tooltip = "Select the pre-built mirror that will speed your build"
> -        sstatemirror_widget, self.sstatemirror_text =
> self.gen_entry_widget(self.configuration.sstatemirror, self, tooltip)
> -        sub_vbox.pack_start(label, expand=False, fill=False)
> -        sub_vbox.pack_start(sstatemirror_widget, expand=False, fill=False)
> -
> -        return advanced_vbox
> -
> -    def create_proxy_page(self):
> -        advanced_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.set_border_width(6)
> -
> -        sub_vbox = gtk.VBox(False, 6)
> -        advanced_vbox.pack_start(sub_vbox, expand=False, fill=False)
> -        label = self.gen_label_widget("<span weight=\"bold\">Set the
> proxies that will be used during fetching source code</span>")
> -        tooltip = "Set the proxies that will be used during fetching
> source code or set none for direct the Internet connection"
> -        info = HobInfoButton(tooltip, self)
> -        hbox = gtk.HBox(False, 12)
> -        hbox.pack_start(label, expand=True, fill=True)
> -        hbox.pack_start(info, expand=False, fill=False)
> -        sub_vbox.pack_start(hbox, expand=False, fill=False)
> -
> -        self.direct_checkbox = gtk.RadioButton(None, "Direct internet
> connection")
> -        self.direct_checkbox.set_tooltip_text("Check this box to connect
> the Internet directly without any proxy")
> -        self.direct_checkbox.set_active(not
> self.configuration.enable_proxy)
> -        sub_vbox.pack_start(self.direct_checkbox, expand=False,
> fill=False)
> -
> -        self.proxy_checkbox = gtk.RadioButton(self.direct_checkbox,
> "Manual proxy configuration")
> -        self.proxy_checkbox.set_tooltip_text("Check this box to setup the
> proxy you specified")
> -        self.proxy_checkbox.set_active(self.configuration.enable_proxy)
> -        sub_vbox.pack_start(self.proxy_checkbox, expand=False, fill=False)
> -
> -        self.same_checkbox = gtk.CheckButton("Use the same proxy for all
> protocols")
> -        self.same_checkbox.set_tooltip_text("Use the same proxy as the
> first proxy i.e. http proxy for all protocols")
> -        self.same_checkbox.set_active(self.configuration.same_proxy)
> -        hbox = gtk.HBox(False, 12)
> -        hbox.pack_start(self.same_checkbox, expand=False, fill=False,
> padding=24)
> -        sub_vbox.pack_start(hbox, expand=False, fill=False)
> -
> -        proxy_widget, self.http_proxy, self.http_proxy_port,
> self.http_proxy_details = self.gen_proxy_entry_widget(
> -            "http", self, True)
> -        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> -
> -        proxy_widget, self.https_proxy, self.https_proxy_port,
> self.https_proxy_details = self.gen_proxy_entry_widget(
> -            "https", self, True)
> -        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> -
> -        proxy_widget, self.ftp_proxy, self.ftp_proxy_port,
> self.ftp_proxy_details = self.gen_proxy_entry_widget(
> -            "ftp", self, True)
> -        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> -
> -        proxy_widget, self.git_proxy, self.git_proxy_port,
> self.git_proxy_details = self.gen_proxy_entry_widget(
> -            "git", self, True)
> -        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> -
> -        proxy_widget, self.cvs_proxy, self.cvs_proxy_port,
> self.cvs_proxy_details = self.gen_proxy_entry_widget(
> -            "cvs", self, True)
> -        sub_vbox.pack_start(proxy_widget, expand=False, fill=False)
> -
> -        self.direct_checkbox.connect("toggled",
> self.proxy_checkbox_toggled_cb)
> -        self.proxy_checkbox.connect("toggled",
> self.proxy_checkbox_toggled_cb)
> -        self.same_checkbox.connect("toggled",
> self.same_checkbox_toggled_cb)
> -
> -        self.refresh_proxy_components()
> -        return advanced_vbox
> -
> +
>      def create_others_page(self):
>          advanced_vbox = gtk.VBox(False, 6)
>          advanced_vbox.set_border_width(6)
> @@ -633,60 +809,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>
>          return advanced_vbox
>
> -    def refresh_proxy_components(self):
> -        self.same_checkbox.set_sensitive(self.configuration.enable_proxy)
> -
> -
>  self.http_proxy.set_text(self.configuration.combine_host_only("http"))
> -        self.http_proxy.set_editable(self.configuration.enable_proxy)
> -        self.http_proxy.set_sensitive(self.configuration.enable_proxy)
> -
>  self.http_proxy_port.set_text(self.configuration.combine_port_only("http"))
> -        self.http_proxy_port.set_editable(self.configuration.enable_proxy)
> -
>  self.http_proxy_port.set_sensitive(self.configuration.enable_proxy)
> -
>  self.http_proxy_details.set_sensitive(self.configuration.enable_proxy)
> -
> -
>  self.https_proxy.set_text(self.configuration.combine_host_only("https"))
> -        self.https_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -        self.https_proxy.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -
>  self.https_proxy_port.set_text(self.configuration.combine_port_only("https"))
> -
>  self.https_proxy_port.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
>  self.https_proxy_port.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
>  self.https_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
> -
>  self.ftp_proxy.set_text(self.configuration.combine_host_only("ftp"))
> -        self.ftp_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -        self.ftp_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
>  self.ftp_proxy_port.set_text(self.configuration.combine_port_only("ftp"))
> -        self.ftp_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -        self.ftp_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -
>  self.ftp_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
> -
>  self.git_proxy.set_text(self.configuration.combine_host_only("git"))
> -        self.git_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -        self.git_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
>  self.git_proxy_port.set_text(self.configuration.combine_port_only("git"))
> -        self.git_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -        self.git_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -
>  self.git_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
> -
>  self.cvs_proxy.set_text(self.configuration.combine_host_only("cvs"))
> -        self.cvs_proxy.set_editable(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -        self.cvs_proxy.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
>  self.cvs_proxy_port.set_text(self.configuration.combine_port_only("cvs"))
> -        self.cvs_proxy_port.set_editable(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -        self.cvs_proxy_port.set_sensitive(self.configuration.enable_proxy
> and (not self.configuration.same_proxy))
> -
>  self.cvs_proxy_details.set_sensitive(self.configuration.enable_proxy and
> (not self.configuration.same_proxy))
> -
> -    def proxy_checkbox_toggled_cb(self, button):
> -        self.configuration.enable_proxy = self.proxy_checkbox.get_active()
> -        if not self.configuration.enable_proxy:
> -            self.configuration.same_proxy = False
> -            self.same_checkbox.set_active(self.configuration.same_proxy)
> -        self.refresh_proxy_components()
> -
> -    def same_checkbox_toggled_cb(self, button):
> -        self.configuration.same_proxy = self.same_checkbox.get_active()
> -        self.refresh_proxy_components()
> -
> +
>      def response_cb(self, dialog, response_id):
>          package_format = []
>          package_format.append(self.rootfs_combo.get_active_text())
> @@ -695,12 +818,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>                  package_format.append(child.get_label())
>          self.configuration.curr_package_format = " ".join(package_format)
>
> -        self.configuration.curr_distro =
> self.distro_combo.get_active_text()
> -        self.configuration.dldir = self.dldir_text.get_text()
> -        self.configuration.sstatedir = self.sstatedir_text.get_text()
> -        self.configuration.sstatemirror =
> self.sstatemirror_text.get_text()
> -        self.configuration.bbthread = self.bb_spinner.get_value_as_int()
> -        self.configuration.pmake = self.pmake_spinner.get_value_as_int()
> +        self.configuration.curr_distro =
> self.distro_combo.get_active_text()
>          self.configuration.image_rootfs_size =
> self.rootfs_size_spinner.get_value_as_int() * 1024
>          self.configuration.image_extra_size =
> self.extra_size_spinner.get_value_as_int() * 1024
>
> @@ -727,19 +845,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>              key = self.setting_store.get_value(it, 0)
>              value = self.setting_store.get_value(it, 1)
>              self.configuration.extra_setting[key] = value
> -            it = self.setting_store.iter_next(it)
> -
> -        self.configuration.split_proxy("http", self.http_proxy.get_text()
> + ":" + self.http_proxy_port.get_text())
> -        if self.configuration.same_proxy:
> -            self.configuration.split_proxy("https",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> -            self.configuration.split_proxy("ftp",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> -            self.configuration.split_proxy("git",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> -            self.configuration.split_proxy("cvs",
> self.http_proxy.get_text() + ":" + self.http_proxy_port.get_text())
> -        else:
> -            self.configuration.split_proxy("https",
> self.https_proxy.get_text() + ":" + self.https_proxy_port.get_text())
> -            self.configuration.split_proxy("ftp",
> self.ftp_proxy.get_text() + ":" + self.ftp_proxy_port.get_text())
> -            self.configuration.split_proxy("git",
> self.git_proxy.get_text() + ":" + self.git_proxy_port.get_text())
> -            self.configuration.split_proxy("cvs",
> self.cvs_proxy.get_text() + ":" + self.cvs_proxy_port.get_text())
> +            it = self.setting_store.iter_next(it)
>
>          md5 = self.config_md5()
>          self.settings_changed = (self.md5 != md5)
> diff --git a/bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py
> b/bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py
> index 6aeb6dc..e665f38 100644
> --- a/bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py
> +++ b/bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py
> @@ -205,17 +205,26 @@ class ImageConfigurationPage (HobPage):
>
>          self.image_desc = gtk.Label()
>          self.image_desc.set_alignment(0.0, 0.5)
> -        self.image_desc.set_size_request(360, -1)
> +        self.image_desc.set_size_request(256, -1)
>          self.image_desc.set_justify(gtk.JUSTIFY_LEFT)
>          self.image_desc.set_line_wrap(True)
>
> +        # button to view recipes
> +        icon_file = hic.ICON_RCIPE_DISPLAY_FILE
> +        hover_file = hic.ICON_RCIPE_HOVER_FILE
> +        self.view_adv_configuration_button = HobImageButton("Advanced
> configuration",
> +                                                                 "Select
> image types, package formats, etc",
> +
> icon_file, hover_file)
> +        self.view_adv_configuration_button.connect("clicked",
> self.view_adv_configuration_button_clicked_cb)
> +
>          self.image_separator = gtk.HSeparator()
>
>      def set_config_baseimg_layout(self):
>          self.gtable.attach(self.image_title, 0, 40, 15, 17)
>          self.gtable.attach(self.image_title_desc, 0, 40, 18, 22)
>          self.gtable.attach(self.image_combo, 0, 12, 23, 26)
> -        self.gtable.attach(self.image_desc, 13, 38, 23, 28)
> +        self.gtable.attach(self.image_desc, 0, 12, 27, 33)
> +        self.gtable.attach(self.view_adv_configuration_button, 14, 36,
> 23, 28)
>          self.gtable.attach(self.image_separator, 0, 40, 35, 36)
>
>      def create_config_build_button(self):
> @@ -413,6 +422,14 @@ class ImageConfigurationPage (HobPage):
>      def layer_button_clicked_cb(self, button):
>          # Create a layer selection dialog
>          self.builder.show_layer_selection_dialog()
> +
> +    def view_adv_configuration_button_clicked_cb(self, button):
> +        # Create an advanced settings dialog
> +        response, settings_changed =
> self.builder.show_adv_settings_dialog()
> +        if not response:
> +            return
> +        if settings_changed:
> +            self.builder.reparse_post_adv_settings()
>
>      def just_bake_button_clicked_cb(self, button):
>          self.builder.just_bake()
> @@ -432,7 +449,7 @@ class ImageConfigurationPage (HobPage):
>
>      def settings_button_clicked_cb(self, button):
>          # Create an advanced settings dialog
> -        response, settings_changed =
> self.builder.show_adv_settings_dialog()
> +        response, settings_changed =
> self.builder.show_simple_settings_dialog()
>          if not response:
>              return
>          if settings_changed:
> --
> 1.7.9.5
>
>
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/bitbake-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20120906/177e0229/attachment-0001.html>


More information about the bitbake-devel mailing list