.. versionchanged:: 0.21.2
            Load the builder configuration file using :func:`pkgutil.getdata`,
            which supports loading from `.zip` archives (e.g., in an app
            packaged with Py2Exe).

def create_ui(self):
        '''
        .. versionchanged:: 0.21.2
            Load the builder configuration file using :func:`pkgutil.getdata`,
            which supports loading from `.zip` archives (e.g., in an app
            packaged with Py2Exe).
        '''
        builder = gtk.Builder()
        # Read glade file using `pkgutil` to also support loading from `.zip`
        # files (e.g., in app packaged with Py2Exe).
        glade_str = pkgutil.get_data(__name__,
                                     'glade/form_view_dialog.glade')
        builder.add_from_string(glade_str)

        self.window = builder.get_object('form_view_dialog')
        self.vbox_form = builder.get_object('vbox_form')
        if self.title:
            self.window.set_title(self.title)
        if self.short_desc:
            self.short_label = gtk.Label()
            self.short_label.set_text(self.short_desc)
            self.short_label.set_alignment(0, .5)
            self.vbox_form.pack_start(self.short_label, expand=True, fill=True)
        if self.long_desc:
            self.long_label = gtk.Label()
            self.long_label.set_text(self.long_desc)
            self.long_label.set_alignment(.1, .5)
            self.long_expander = gtk.Expander(label='Details')
            self.long_expander.set_spacing(5)
            self.long_expander.add(self.long_label)
            self.vbox_form.pack_start(self.long_expander, expand=True,
                                      fill=True)
        if self.parent is None:
            self.parent = self.default_parent
        self.window.set_default_response(gtk.RESPONSE_OK)
        self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
        if self.parent:
            self.window.set_transient_for(self.parent)
        self.window.show_all()