This revised screen is part of the simple flow for the new storage filtering UI. It only offers you to pick the kind of install you want to do, check to review, and check to encrypt. Everything else will go on another screen later. --- iw/autopart_type.py | 496 +++++++------------------------------- pixmaps/partscheme-all.png | Bin 0 -> 1739 bytes pixmaps/partscheme-custom.png | Bin 0 -> 953 bytes pixmaps/partscheme-freespace.png | Bin 0 -> 1832 bytes pixmaps/partscheme-replace.png | Bin 0 -> 1930 bytes pixmaps/partscheme-shrink.png | Bin 0 -> 2049 bytes ui/autopart.glade | 285 ++-------------------- 7 files changed, 111 insertions(+), 670 deletions(-) create mode 100644 pixmaps/partscheme-all.png create mode 100644 pixmaps/partscheme-custom.png create mode 100644 pixmaps/partscheme-freespace.png create mode 100644 pixmaps/partscheme-replace.png create mode 100644 pixmaps/partscheme-shrink.png diff --git a/iw/autopart_type.py b/iw/autopart_type.py index fc0e4be..9134e68 100644 --- a/iw/autopart_type.py +++ b/iw/autopart_type.py @@ -26,13 +26,10 @@ import math from constants import * import gui from partition_ui_helpers_gui import * -from netconfig_dialog import NetworkConfigurator +from pixmapRadioButtonGroup_gui import pixmapRadioButtonGroup from iw_gui import * from flags import flags -import network -from storage import iscsi -from storage import fcoe from storage.deviceaction import * import gettext @@ -150,16 +147,15 @@ class PartitionTypeWindow(InstallWindow): def getNext(self): if self.storage.checkNoDisks(): raise gui.StayOnScreen - - active = self.combo.get_active_iter() - val = self.combo.get_model().get_value(active, 1) - if val == -1: + if self.buttonGroup.getCurrent() == "custom": self.dispatch.skipStep("autopartitionexecute", skip = 1) self.dispatch.skipStep("partition", skip = 0) self.dispatch.skipStep("bootloader", skip = 0) + + self.storage.clearPartType = CLEARPART_TYPE_NONE else: - if val == -2: + if self.buttonGroup.getCurrent() == "shrink": (rc, actions) = whichToShrink(self.storage, self.intf) if rc == gtk.RESPONSE_OK: for action in actions: @@ -168,53 +164,26 @@ class PartitionTypeWindow(InstallWindow): raise gui.StayOnScreen # we're not going to delete any partitions in the resize case - val = CLEARPART_TYPE_NONE + self.storage.clearPartType = CLEARPART_TYPE_NONE + elif self.buttonGroup.getCurrent() == "all": + self.storage.clearPartType = CLEARPART_TYPE_ALL + elif self.buttonGroup.getCurrent() == "replace": + self.storage.clearPartType = CLEARPART_TYPE_LINUX + elif self.buttonGroup.getCurrent() == "freespace": + self.storage.clearPartType = CLEARPART_TYPE_NONE self.dispatch.skipStep("autopartitionexecute", skip = 0) - if self.xml.get_widget("encryptButton").get_active(): + if self.encryptButton.get_active(): self.storage.encryptedAutoPart = True else: self.storage.encryptionPassphrase = "" self.storage.retrofitPassphrase = False self.storage.encryptedAutoPart = False - + self.storage.doAutoPart = True - self.storage.clearPartType = val - - allowdrives = [] - model = self.drivelist.get_model() - for row in model: - if row[0]: - allowdrives.append(row[1]) - - if len(allowdrives) < 1: - mustHaveSelectedDrive(self.intf) - raise gui.StayOnScreen - - self.storage.clearPartDisks = allowdrives - - # pop the boot device to be first in the drive list - defiter = self.bootcombo.get_active_iter() - if defiter is None: - self.intf.messageWindow(_("Error"), - "Must select a drive to use as " - "the bootable device.", - type="warning", custom_icon="error") - raise gui.StayOnScreen - - defboot = self.bootcombo.get_model().get_value(defiter, 1) - - if not defboot in allowdrives: - msg = _("Do you really want to boot from a disk which is not used for installation?") - rc = self.intf.messageWindow(_("Warning"), msg, type="yesno", default="no", custom_icon ="warning") - if not rc: - raise gui.StayOnScreen - - self.anaconda.id.bootloader.drivelist.remove(defboot) - self.anaconda.id.bootloader.drivelist.insert(0, defboot) - if self.xml.get_widget("reviewButton").get_active(): + if self.reviewButton.get_active(): self.dispatch.skipStep("partition", skip = 0) self.dispatch.skipStep("bootloader", skip = 0) else: @@ -224,296 +193,21 @@ class PartitionTypeWindow(InstallWindow): return None - def comboChanged(self, *args): - active = self.combo.get_active_iter() - val = self.combo.get_model().get_value(active, 1) - self.review = self.xml.get_widget("reviewButton").get_active() - - # -1 is the combo box choice for 'create custom layout' - if val == -1: - if self.prevrev == None: - self.prevrev = self.xml.get_widget("reviewButton").get_active() - - self.xml.get_widget("reviewButton").set_active(True) - self.xml.get_widget("reviewButton").set_sensitive(False) - self.xml.get_widget("driveScroll").set_sensitive(False) - self.xml.get_widget("bootDriveCombo").set_sensitive(False) - self.xml.get_widget("encryptButton").set_sensitive(False) - else: - if self.prevrev == None: - self.xml.get_widget("reviewButton").set_active(self.review) - else: - self.xml.get_widget("reviewButton").set_active(self.prevrev) - self.prevrev = None - - self.xml.get_widget("reviewButton").set_sensitive(True) - self.xml.get_widget("driveScroll").set_sensitive(True) - self.xml.get_widget("bootDriveCombo").set_sensitive(True) - self.xml.get_widget("encryptButton").set_sensitive(True) - - def addIscsiDrive(self): - if not network.hasActiveNetDev(): - net = NetworkConfigurator(self.anaconda.id.network) - ret = net.run() - net.destroy() - if ret != gtk.RESPONSE_OK: - return ret - - (dxml, dialog) = gui.getGladeWidget("iscsi-config.glade", - "iscsiDialog") - gui.addFrame(dialog) - dialog.show_all() - sg = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - map(lambda x: sg.add_widget(dxml.get_widget(x)), - ("iscsiAddrEntry", "iscsiInitiatorEntry", "userEntry", "passEntry", - "userinEntry", "passinEntry")) - - # get the initiator name if it exists and don't allow changing - # once set - e = dxml.get_widget("iscsiInitiatorEntry") - e.set_text(self.storage.iscsi.initiator) - if self.storage.iscsi.initiatorSet: # this is uglyyyy.... - e.set_sensitive(False) - - while 1: - rc = dialog.run() - if rc in [gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT]: - break - - initiator = dxml.get_widget("iscsiInitiatorEntry").get_text() - initiator.strip() - if len(initiator) == 0: - self.intf.messageWindow(_("Invalid Initiator Name"), - _("You must provide an initiator name."), - custom_icon="error") - continue - - self.storage.iscsi.initiator = initiator - - target = dxml.get_widget("iscsiAddrEntry").get_text().strip() - user = dxml.get_widget("userEntry").get_text().strip() - pw = dxml.get_widget("passEntry").get_text().strip() - user_in = dxml.get_widget("userinEntry").get_text().strip() - pw_in = dxml.get_widget("passinEntry").get_text().strip() - - err = None - try: - count = len(target.split(":")) - idx = target.rfind("]:") - # Check for IPV6 [IPV6-ip]:port - if idx != -1: - ip = target[1:idx] - port = target[idx+2:] - # Check for IPV4 aaa.bbb.ccc.ddd:port - elif count == 2: - idx = target.rfind(":") - ip = target[:idx] - port = target[idx+1:] - else: - ip = target - port = "3260" - network.sanityCheckIPString(ip) - except network.IPMissing, msg: - err = msg - except network.IPError, msg: - err = msg - if err: - self.intf.messageWindow(_("Error"), str(err), - custom_icon="error") - continue - - try: - self.storage.iscsi.addTarget(ip, port, user, pw, - user_in, pw_in, self.intf) - except ValueError, e: - self.intf.messageWindow(_("Error"), str(e), - custom_icon="error") - continue - except IOError, e: - self.intf.messageWindow(_("Error"), str(e), - custom_icon="error") - rc = gtk.RESPONSE_CANCEL - break - - dialog.destroy() - return rc - - - def addFcoeDrive(self): - (dxml, dialog) = gui.getGladeWidget("fcoe-config.glade", - "fcoeDialog") - combo = dxml.get_widget("fcoeNicCombo") - dcb_cb = dxml.get_widget("dcbCheckbutton") - - # Populate the combo - cell = gtk.CellRendererText() - combo.pack_start(cell, True) - combo.set_attributes(cell, text = 0) - cell.set_property("wrap-width", 525) - combo.set_size_request(480, -1) - store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) - combo.set_model(store) - - netdevs = self.anaconda.id.network.available() - keys = netdevs.keys() - keys.sort() - selected_interface = None - for dev in keys: - # Skip NIC's which are connected (iow in use for a net install) - if dev in network.getActiveNetDevs(): - continue - - i = store.append(None) - - desc = netdevs[dev].get("DESC") - if desc: - desc = "%s - %s" %(dev, desc) - else: - desc = "%s" %(dev,) - - mac = netdevs[dev].get("HWADDR") - if mac: - desc = "%s - %s" %(desc, mac) - - if selected_interface is None: - selected_interface = i + def typeChanged(self, *args): + if self.buttonGroup.getCurrent() == "custom": + if not self.prevrev: + self.prevrev = self.reviewButton.get_active() - store[i] = (desc, dev) - - if selected_interface: - combo.set_active_iter(selected_interface) + self.reviewButton.set_active(True) + self.reviewButton.set_sensitive(False) + self.encryptButton.set_sensitive(False) else: - combo.set_active(0) - - # Show the dialog - gui.addFrame(dialog) - dialog.show_all() - sg = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - sg.add_widget(dxml.get_widget("fcoeNicCombo")) - - while 1: - rc = dialog.run() - - if rc in [gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT]: - break - - iter = combo.get_active_iter() - if iter is None: - self.intf.messageWindow(_("Error"), - "Must select a NIC to use.", - type="warning", custom_icon="error") - continue - - try: - self.storage.fcoe.addSan(nic=store.get_value(iter, 1), - dcb=dcb_cb.get_active(), - intf=self.intf) - except IOError, e: - self.intf.messageWindow(_("Error"), str(e), - custom_icon="error") - rc = gtk.RESPONSE_CANCEL - - break - - dialog.destroy() - return rc - - def addZfcpDrive(self): - (dxml, dialog) = gui.getGladeWidget("zfcp-config.glade", - "zfcpDialog") - gui.addFrame(dialog) - dialog.show_all() - sg = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - map(lambda x: sg.add_widget(dxml.get_widget(x)), - ("devnumEntry", "wwpnEntry", "fcplunEntry")) - - while 1: - rc = dialog.run() - if rc != gtk.RESPONSE_APPLY: - break - - devnum = dxml.get_widget("devnumEntry").get_text().strip() - wwpn = dxml.get_widget("wwpnEntry").get_text().strip() - fcplun = dxml.get_widget("fcplunEntry").get_text().strip() - - try: - self.storage.zfcp.addFCP(devnum, wwpn, fcplun) - except ValueError, e: - self.intf.messageWindow(_("Error"), str(e), - custom_icon="error") - continue - break - - dialog.destroy() - return rc - - - def addDrive(self, button): - (dxml, dialog) = gui.getGladeWidget("adddrive.glade", "addDriveDialog") - gui.addFrame(dialog) - dialog.show_all() - if not iutil.isS390(): - dxml.get_widget("zfcpRadio").hide() - dxml.get_widget("zfcpRadio").set_group(None) - - if not iscsi.has_iscsi(): - dxml.get_widget("iscsiRadio").set_sensitive(False) - dxml.get_widget("iscsiRadio").set_active(False) - - if not fcoe.has_fcoe(): - dxml.get_widget("fcoeRadio").set_sensitive(False) - dxml.get_widget("fcoeRadio").set_active(False) - - #figure out what advanced devices we have available and set sensible default - group = dxml.get_widget("iscsiRadio").get_group() - for button in group: - if button is not None and button.get_property("sensitive"): - button.set_active(True) - break - - rc = dialog.run() - dialog.hide() - if rc in [gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT]: - return - if dxml.get_widget("iscsiRadio").get_active() and iscsi.has_iscsi(): - rc = self.addIscsiDrive() - elif dxml.get_widget("fcoeRadio").get_active() and fcoe.has_fcoe(): - rc = self.addFcoeDrive() - elif dxml.get_widget("zfcpRadio") is not None and dxml.get_widget("zfcpRadio").get_active(): - rc = self.addZfcpDrive() - dialog.destroy() - - if rc not in [gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT]: - w = self.intf.waitWindow(_("Rescanning disks"), - _("Rescanning disks")) - self.storage.reset() - createAllowedDrivesStore(self.storage.disks, - self.storage.clearPartDisks, - self.drivelist, - disallowDrives=[self.anaconda.updateSrc]) - self._fillBootStore() - w.pop() - - def _fillBootStore(self): - self.anaconda.id.bootloader.updateDriveList() - bootstore = self.bootcombo.get_model() - bootstore.clear() - if len(self.anaconda.id.bootloader.drivelist) > 0: - defaultBoot = self.anaconda.id.bootloader.drivelist[0] - else: - defaultBoot = None - for disk in self.storage.disks: - if disk.name not in self.anaconda.id.bootloader.drivelist: - continue - dispstr = "%s %8.0f MB %s" %(disk.name, disk.size, disk.description) - i = bootstore.append(None) - bootstore[i] = (dispstr, disk.name) - if disk.name == defaultBoot: - self.bootcombo.set_active_iter(i) - - if len(bootstore) <= 1: - self.bootcombo.set_sensitive(False) + if self.prevrev: + self.reviewButton.set_active(self.prevrev) + self.prevrev = None + self.reviewButton.set_sensitive(True) + self.encryptButton.set_sensitive(True) def getScreen(self, anaconda): self.anaconda = anaconda @@ -521,88 +215,70 @@ class PartitionTypeWindow(InstallWindow): self.intf = anaconda.intf self.dispatch = anaconda.dispatch - (self.xml, vbox) = gui.getGladeWidget("autopart.glade", "parttypeBox") - - # make some labels bold... - map(lambda l: l and l.set_markup("<b>%s</b>" %(l.get_text(),)), - map(lambda x: self.xml.get_widget(x),("selectLabel", "bootLabel"))) - - gui.widgetExpander(self.xml.get_widget("mainlabel")) - - self.combo = self.xml.get_widget("partitionTypeCombo") - gui.widgetExpander(self.combo) - cell = gtk.CellRendererText() - self.combo.pack_start(cell, True) - self.combo.set_attributes(cell, text = 0) - cell.set_property("wrap-width", 495) - self.combo.set_size_request(500, -1) - - store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_INT) - self.combo.set_model(store) - opts = ((_("Use entire drive"), CLEARPART_TYPE_ALL), - (_("Replace existing Linux system"), CLEARPART_TYPE_LINUX), - (_("Shrink current system"), -2), - (_("Use free space"), CLEARPART_TYPE_NONE), - (_("Create custom layout"), -1)) - - # if not set in ks, use UI default - if self.storage.clearPartType is None: - preselected = CLEARPART_TYPE_LINUX - else: - preselected = self.storage.clearPartType - - for (txt, val) in opts: - iter = store.append(None) - store[iter] = (txt, val) - if val == preselected: - self.combo.set_active_iter(iter) - - if ((self.combo.get_active() == -1) or - self.dispatch.stepInSkipList("autopartitionexecute")): - self.combo.set_active(len(opts) - 1) # yeah, it's a hack - - self.drivelist = createAllowedDrivesList(self.storage.disks, - self.storage.clearPartDisks, - disallowDrives=[self.anaconda.updateSrc]) - self.drivelist.set_size_request(375, 80) - - self.xml.get_widget("driveScroll").add(self.drivelist) - - self.bootcombo = self.xml.get_widget("bootDriveCombo") - thecell = gtk.CellRendererText() - self.bootcombo.pack_start(thecell, True) - - bootstore = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) - self.bootcombo.set_model(bootstore) - self._fillBootStore() + (self.xml, vbox) = gui.getGladeWidget("autopart.glade", "parttypeTable") + self.encryptButton = self.xml.get_widget("encryptButton") + self.reviewButton = self.xml.get_widget("reviewButton") + self.table = self.xml.get_widget("parttypeTable") self.prevrev = None - self.review = not self.dispatch.stepInSkipList("partition") - self.xml.get_widget("reviewButton").set_active(self.review) - - self.xml.get_widget("encryptButton").set_active(self.storage.encryptedAutoPart) + self.reviewButton.set_active(not self.dispatch.stepInSkipList("partition")) + self.encryptButton.set_active(self.storage.encryptedAutoPart) + + self.buttonGroup = pixmapRadioButtonGroup() + self.buttonGroup.addEntry("all", _("Use All Space"), + pixmap=gui.readImageFromFile("partscheme-all.png"), + descr=_("Removes all partitions on the selected " + "device(s). This includes partitions " + "created by other operating systems.\n\n" + "<b>Tip:</b> This option will remove " + "data from the selected device(s). Make " + "sure you have backups.")) + self.buttonGroup.addEntry("replace", _("Replace Existing Linux System(s)"), + pixmap=gui.readImageFromFile("partscheme-replace.png"), + descr=_("Removes only Linux partitions (created from " + "a previous Linux installation). This does " + "not remove other partitions you may have " + "on your storage device(s) (such as VFAT or " + "FAT32).\n\n" + "<b>Tip:</b> This option will remove " + "data from the selected device(s). Make " + "sure you have backups.")) + self.buttonGroup.addEntry("shrink", _("Shrink Current System"), + pixmap=gui.readImageFromFile("partscheme-shrink.png"), + descr=_("Shrinks existing partitions to create free " + "space for the default layout.")) + self.buttonGroup.addEntry("freespace", _("Use Free Space"), + pixmap=gui.readImageFromFile("partscheme-freespace.png"), + descr=_("Retains your current data and partitions and " + "uses only the unpartitioned space on the " + "selected device(s), assuming you have enough " + "free space available.")) + self.buttonGroup.addEntry("custom", _("Create Custom Layout"), + pixmap=gui.readImageFromFile("partscheme-custom.png"), + descr=_("Manually create your own custom layout on " + "the selected device(s) using our partitioning " + "tool.")) + + self.buttonGroup.setToggleCallback(self.typeChanged) + + widget = self.buttonGroup.render() + self.table.attach(widget, 0, 1, 1, 2) - active = self.combo.get_active_iter() - val = self.combo.get_model().get_value(active, 1) - - # -1 is the combo box choice for 'create custom layout' - if val == -1: + # if not set in ks, use UI default + if self.storage.clearPartType is None or self.storage.clearPartType == CLEARPART_TYPE_LINUX: + self.buttonGroup.setCurrent("replace") + elif self.storage.clearPartType == CLEARPART_TYPE_NONE: + self.buttonGroup.setCurrent("freespace") + elif self.storage.clearPartType == CLEARPART_TYPE_ALL: + self.buttonGroup.setCurrent("all") + + if self.buttonGroup.getCurrent() == "custom": # make sure reviewButton is active and not sensitive if self.prevrev == None: - self.prevrev = self.xml.get_widget("reviewButton").get_active() - - self.xml.get_widget("reviewButton").set_active(True) - self.xml.get_widget("reviewButton").set_sensitive(False) - - self.xml.get_widget("driveScroll").set_sensitive(False) - self.xml.get_widget("bootDriveCombo").set_sensitive(False) - self.xml.get_widget("encryptButton").set_sensitive(False) - - if not iutil.isS390() and not iscsi.has_iscsi() and not fcoe.has_fcoe(): - self.xml.get_widget("addButton").set_sensitive(False) + self.prevrev = self.reviewButton.get_active() - sigs = { "on_partitionTypeCombo_changed": self.comboChanged, - "on_addButton_clicked": self.addDrive } - self.xml.signal_autoconnect(sigs) + self.reviewButton.set_active(True) + self.reviewButton.set_sensitive(False) + self.encryptButton.set_sensitive(False) return vbox diff --git a/pixmaps/partscheme-all.png b/pixmaps/partscheme-all.png new file mode 100644 index 0000000000000000000000000000000000000000..7c541ce413628f6051df13f64fa4f7c49094edc3 GIT binary patch literal 1739 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 literal 0 HcmV?d00001 diff --git a/pixmaps/partscheme-custom.png b/pixmaps/partscheme-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..62e2e6bdd35ba2b091d802f6b3daef1e1b57ccf5 GIT binary patch literal 953 zcmV;q14jIbP)<h;3K|Lk000e1NJLTq001HY001lq1^@s608MJL00004b3#c}2nYxW zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H112#!SK~z|U?U=t$+%Oc!zmDxxAy?oZ;3gR01nT_(`~z&IQx_!0 zN{BLcsZduIek~oDY3X)53tN${6;oRlbV48yzr<C#%h~Rb+HstOQm6_;o@8C}WaoYK zeeXHW5v3F!gLw}PpsfUPtpstc1aYkdajgV#tpstc1aYkdajgV#jRC;Y($do)eDanv z`qKA(_Adhzort^LDC+fkTOzu6x3I8y!2lo#`C|Q9{dH}ub_WQB{PTC7KXz#U_aEQp zKkx2#0K8!Uz?lD{HdbSEbMpwpzS|?*;{%}GZewk2*=v6N^4x&<ocjO}hJBFo|9oBq zK>z^Yj8}jME>>I7N7FU;1_^=yzVF|0bs|aJC4}5+86gCO5QJff>FH@qOiW;4U;qGc zdU}dRqk)~Boj8P2_?yq!Kej6&1fJ&^2+#8%guw9dFfK1I(QG!+-`|gVy^fig85|xS zqSb0aN@-y9wQIJk5JU&HhYhu|vVtgz%>0p&5mYJ_3=Iw8`1sfamr|xikxIEBlu{F1 zU)vC#=Rqk2&N(Qhn3|eGrBcDw)fM*l_rVxTDIukV5W>I+A+#nSS&*2NF_r?bq3je9 zLg4#8W@l$ntyXbxaDdItO>{aPaLzMo5JC(DAta@y0Z~ekSTO=hX$ryxu~iu#A4j!X zMXS}q#>R$GDK9025Cb8EKomt#Dvq5=4IwbW^I#~YsoFU?IYFb*z}eXu7>gfe*Md%m zPKAch*BM0;SGquLC^uC)J%fXT=ytnC3A-ljz@`9FZSC$Oma_=L1@b%(larGe9UX;~ z66@>hxv6liXn$eJ1f)RR_RWLY+uH+U3`a*tV2tH-MG{ymr8~~uLv!2L?hLnWZK(6} zb8K&K0{}SZ5JEr*kqN97(nFWQjT@StnD?6pNGSyXQ<(0Y;%6#kYs4c+PEW<Z?vPTN z2iaS?J#KpDZ(-7kC<R<!Ut84itn7WV+P=1rhS`8h?-|D5ZvRYWf&oAjMO^?`U0pT{ zHC$rJP2x{i|IPlqm!3keC%Ohi3i<xyrw^|f<HavQD};M!(7WTU%$g~LjD+ZI0RVX{ be}Vr3mm2|vOw*|K00000NkvXXu0mjfX|<tO literal 0 HcmV?d00001 diff --git a/pixmaps/partscheme-freespace.png b/pixmaps/partscheme-freespace.png new file mode 100644 index 0000000000000000000000000000000000000000..9c999168f6174ba44eac5b735791d8895cb64db9 GIT binary patch literal 1832 zcmV+@2iN$CP)<h;3K|Lk000e1NJLTq001HY001lq1^@s608MJL00004b3#c}2nYxW zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H12Bk?vK~z|U&6rzk9Mu`e|KFK&W@f#<#HLU;cAPkYlExLpTvU>9 z5flY@s;WL!6%?rwqAC<nNfZeXa@D5@3PON*rf<2mg$RR_kV+7UYI_5T)LiVu;KZSj z7&dlxygM^z4iB?4JGWhDtyJnK9qsNpbI$pl|96?$A*B@lAB@)<7#bSlxtzGmBW7Hc zog^l=ZQC|kZ<w+adHwZQpIz3~^~Bn>Kkn8vUKh3*yEuDs?)1duu?6e$@1A)k4U__T z>7~E)58itF`1Lp3&}l7{;CWZab-K`@a~;F)4<C5^u|M3O9B0W6v!(6HzLl#w=P%De zN(rUBtI{fV8IH8k+p}U|XlST)agbc@e#6iko~~Rj!*yk>Pbme<vLL0bGYhEL74-Bj z?=)NaEy=Nz{}}_JjyGJ_MPa-E*Ojns8~v;Mv2tY}0APHqfJ&tT0NA)`1Bj>&4v|tS zB|uYwc>erX01-BB+JL#ad5r#h6urGYAR-itMci@6&ya7;H-M;bDY8apSr*#c+W`P= zZLRP;59Nh27-Lv-{c4Pkj$vlzeA5t3gP4W^t7HN2<AjJ{n0}e*@9)R0x7~sh$4|g< zoTfpVa?SFd<v4rx914Xauq+FGeJj8@$AYzhqsNZHFbtTc3BH8V)6@)I*ZugoGzTFB zTHE|A%(dk3leKH%xDGlxI+he8O`~g?hR$W3$miP-Eru;-D~N#NrSF=C05W2vT&|q= zJg?y-!!Xg>l80#+vDVqq)v%6e8pqt+oTVwuEDBPxO0RtT?RN`Yt1lK2gAf9OCz=oq zKnN{n9#d0O|J}0X`HAFcYPVIrYxa$ejZF>?u3yvL-QAMqZ`YB~G=b#(Qqwqe-N3T; z&eWVrrJ_DNQn+~OQt_{un01~<=;c?p|3cUGKS9Av4nFw6L+iVL_#^JR@ifilTCo4% z$n4aasi}-Lk1mw#7q)KQnptS-fi$!)zC1H~P1g^)vOq=)hyQlh#(N)WcFjezX5WXy zn+?PK4G}^g^{-qlvacp6g*!j`<lx&uk96g%UG|>eym@n}(LReRGBPrfZ|lsD-?skt z8$Hj1QVL2bl*<dLYl9d86f}+F!o{zxiPI;y+;iv8-)y)^0J44i_O@K!ctLRO*SfB! zRMIrg)(s3?bJI_6)-0>x!2kf9b2zSxj}QH;bm7A6eAYF#?KrOM?v_q*=;^0lEOG$I z<;9DG>j$42ST|7DRh3EwUrtY<Z^f#Z8Z|*x6<Pyh8qUp}!KMv&=K<tvtEkwViOExc z92+060NBR;6X?GhSU12Qd+Ir`_TFrg`5CO~>A=H}JdFNTt3#Mtb`uz5;6lfH!+SCE z{(dxad#O~yYp=b+K0EsPFGCPr2ps@edoSF+`!XkL(;woSZ@$3J9Xs*cM<2y?*IozP zu7u-61j8_K;NU*&```c;tIoMx4gesyXa$;l3;=-X>2uh%YX|1%=OKg+A_5VEY3A_h z;X~N_&TzvrAGN4pO@jcy@&BB{p1<#g<2c})!!%7C`MiKVyZ-^(wwJQx(m()UY_x!P z_x=+^8ct1|#LgYNU|H#uZfrG4{4B}1pRj757tzmm1BKrYeS8>P2%I>65|`&o&@?R! z(4gL2sb!|C#t5v+Mv5Rk1tJ3H9E`Cz%txOB0E7@Rh-mQ(zNhqvbY=XVAZUz2kx119 z6hfpx;tQuiJkN`@dMc$ssM@NMc%A|ye^Vg@i2Qod2qX#-d`c-pm|9k;@CFtEQ2_aB z1gZq4DL_R)k}ZHpwx|+B6haVD>Peqh7a^qpf*+)Qj8s7w;3)uvSd1i9$x<T;5<o~P z;W!SI^7l@;hRAOLjK4C#NWn|ErV&U06SyOAMF5fIRu2ELp)n#b22}Tf0>C_iB7&xA z)tee?=$fbtl2taI*2y{&=}ao36hNdvRo4U{QJClkNmnGTUVY)U3w&jw?(xBV2m(Sy zk}$yr>8waA#TbK9Dpf<{=}QCxRpX!v;`x2SZJsd}1B!x3DXTAc;u{AFMHQ?*R@MOt zFF~!c))-T18$baF12ZeNvp*HmF~TU;8MrF>JF89v7A@(~7O0i=89iw%Mr3gs_UZkQ z1eAlysuZLL$l_U?DF>xLI9XIP6~d=CRN+B_{!;bzMobaMacls1<K;hx6Vs~Hek7k$ zudF}orl;V#(hfm9>AkgU&(7a-F6ur!*UlZUJJkiR{5?eEN+~@@N_RJ~#D9AK3;Q0Q W%FlDR(zVe50000<MNUMnLSTabHfZVq literal 0 HcmV?d00001 diff --git a/pixmaps/partscheme-replace.png b/pixmaps/partscheme-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fcf18c0bfd84e7de8dd2ad8fb87d403f4eb75b GIT binary patch literal 1930 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 Q3jhEB07*qoM6N<$f)uHgZ~y=R literal 0 HcmV?d00001 diff --git a/pixmaps/partscheme-shrink.png b/pixmaps/partscheme-shrink.png new file mode 100644 index 0000000000000000000000000000000000000000..1822cb8f04d8dc26fb2f2a30fb170c0d53b8172a GIT binary patch literal 2049 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 literal 0 HcmV?d00001 diff --git a/ui/autopart.glade b/ui/autopart.glade index 9131ccf..acf7d24 100644 --- a/ui/autopart.glade +++ b/ui/autopart.glade @@ -22,15 +22,18 @@ <property name="urgency_hint">False</property> <child> - <widget class="GtkVBox" id="parttypeBox"> - <property name="border_width">5</property> + <widget class="GtkTable" id="parttypeTable"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">1</property> <property name="homogeneous">False</property> - <property name="spacing">10</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> <child> <widget class="GtkLabel" id="mainlabel"> <property name="visible">True</property> - <property name="label" translatable="yes">Installation requires partitioning of your hard drive. The default layout is suitable for most users. Select what space to use and which drives to use as the install target. You can also choose to create your own custom layout.</property> + <property name="label" translatable="yes">Which type of installation would you like?</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -46,36 +49,12 @@ <property name="angle">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="partalign"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">50</property> - - <child> - <widget class="GtkComboBox" id="partitionTypeCombo"> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_partitionTypeCombo_changed" last_modification_time="Tue, 04 Oct 2005 15:46:17 GMT"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> @@ -92,229 +71,12 @@ <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="selectLabel"> - <property name="label" translatable="yes" context="yes">_Select the drive(s) to use for this installation.</property> - <property name="use_underline">True</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="mnemonic_widget">partitionTypeCombo</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="drivealign"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">30</property> - <property name="right_padding">50</property> - - <child> - <widget class="GtkVBox" id="drivevbox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">10</property> - - <child> - <widget class="GtkScrolledWindow" id="driveScroll"> - <property name="visible">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox2"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkButton" id="addButton"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_addButton_clicked" last_modification_time="Thu, 13 Jul 2006 15:16:40 GMT"/> - - <child> - <widget class="GtkAlignment" id="buttonlabelalign"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox1"> - <property name="border_width">1</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">4</property> - - <child> - <widget class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="stock">gtk-add</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Advanced storage configuration</property> - <property name="use_underline">True</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <placeholder/> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="bootLabel"> - <property name="label" translatable="yes" context="yes">What drive would you like to _boot this installation from?</property> - <property name="use_underline">True</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="bootalign"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">30</property> - <property name="right_padding">50</property> - - <child> - <widget class="GtkComboBox" id="bootDriveCombo"> - <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> @@ -329,9 +91,12 @@ <property name="draw_indicator">True</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> </widget> -- 1.6.5.1 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list