[PATCH] Allow setting the default GID of the new user.
by Martin Sivak
---
pyanaconda/ui/gui/spokes/user.py | 6 ++----
pyanaconda/users.py | 5 +++++
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/user.py b/pyanaconda/ui/gui/spokes/user.py
index d0b67cd..d62a2c7 100644
--- a/pyanaconda/ui/gui/spokes/user.py
+++ b/pyanaconda/ui/gui/spokes/user.py
@@ -103,11 +103,9 @@ class AdvancedUserDialog(GUIObject):
self._user.uid = None
if self.builder.get_object("c_gid").get_active():
- pass
- #self._user.gid = int(self.builder.get_widget("gid").get_value())
+ self._user.gid = int(self.builder.get_widget("gid").get_value())
else:
- #self._user.gid = None
- pass
+ self._user.gid = None
groups = self.builder.get_object("t_groups").get_text().split(",")
self._user.groups = []
diff --git a/pyanaconda/users.py b/pyanaconda/users.py
index f102a29..bd50536 100644
--- a/pyanaconda/users.py
+++ b/pyanaconda/users.py
@@ -239,6 +239,8 @@ class Users:
libuser default is used.
uid -- The UID for the new user. If none is given, the next
available one is used.
+ gid -- The GID for the new user. If none is given, the next
+ available one is used.
"""
childpid = os.fork()
root = kwargs.get("root", "/mnt/sysimage")
@@ -257,6 +259,9 @@ class Users:
userEnt = self.admin.initUser(user_name)
groupEnt = self.admin.initGroup(user_name)
+ if kwargs.get("gid", -1) >= 0:
+ groupEnt.set(libuser.GIDNUMBER, kwargs["gid"])
+
grpLst = filter(lambda grp: grp,
map(lambda name: self.admin.lookupGroupByName(name), kwargs.get("groups", [])))
userEnt.set(libuser.GIDNUMBER, [groupEnt.get(libuser.GIDNUMBER)[0]] +
--
1.7.11.7
11 years, 1 month
[master] Use constants for connection timeout and thread names
by Martin Kolman
PATCH 1/2 Renames the CONNECTION_TIMEOUT to the constants module and renames it to NETWORK_CONNECTION_TIMEOUT
PATCH 2/2 Replaces all hardcoded thread names with constants defined in the constants module.
Martin Kolman (2):
Move network connection timeout from network to constants
Use constants for thread names
anaconda | 6 +++---
pyanaconda/constants.py | 21 ++++++++++++++++++
pyanaconda/exception.py | 4 ++--
pyanaconda/network.py | 6 +++---
pyanaconda/ntp.py | 3 ++-
pyanaconda/packaging/__init__.py | 4 ++--
pyanaconda/packaging/livepayload.py | 4 ++--
pyanaconda/ui/gui/hubs/progress.py | 6 +++---
pyanaconda/ui/gui/spokes/custom.py | 3 ++-
pyanaconda/ui/gui/spokes/lib/refresh.py | 5 +++--
pyanaconda/ui/gui/spokes/network.py | 5 +++--
pyanaconda/ui/gui/spokes/software.py | 21 ++++++++++--------
pyanaconda/ui/gui/spokes/source.py | 38 ++++++++++++++++-----------------
pyanaconda/ui/gui/spokes/storage.py | 20 +++++++++--------
pyanaconda/ui/tui/hubs/progress.py | 6 +++---
pyanaconda/ui/tui/simpleline/base.py | 4 +++-
pyanaconda/ui/tui/spokes/storage.py | 9 ++++----
17 files changed, 99 insertions(+), 66 deletions(-)
--
1.8.1.4
11 years, 1 month
[PATCH 1/9] Remove the partition scheme expanders.
by Chris Lumens
They only hide one thing, and there's no need for it to be hidden.
---
pyanaconda/ui/gui/spokes/storage.glade | 138 +++++++++++++--------------------
1 file changed, 52 insertions(+), 86 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/storage.glade b/pyanaconda/ui/gui/spokes/storage.glade
index 4e0fa6a..0d042c3 100644
--- a/pyanaconda/ui/gui/spokes/storage.glade
+++ b/pyanaconda/ui/gui/spokes/storage.glade
@@ -164,58 +164,41 @@
</packing>
</child>
<child>
- <object class="GtkExpander" id="options1_expander">
+ <object class="GtkBox" id="box1">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkBox" id="box1">
+ <object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="margin_left">30</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Partition type:</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="options1_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="active">2</property>
- <items>
- <item translatable="yes">Standard Partition</item>
- <item translatable="yes">BTRFS</item>
- <item translatable="yes">LVM</item>
- </items>
- <signal name="changed" handler="on_type_changed" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="label" translatable="yes"><b>Partition scheme:</b></property>
+ <property name="use_markup">True</property>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- <child type="label">
- <object class="GtkLabel" id="label2">
+ <child>
+ <object class="GtkComboBoxText" id="options1_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Partition _scheme configuration</property>
- <property name="use_underline">True</property>
- <attributes>
- <attribute name="font-desc" value="Cantarell 11"/>
- </attributes>
+ <property name="active">2</property>
+ <items>
+ <item translatable="yes">Standard Partition</item>
+ <item translatable="yes">BTRFS</item>
+ <item translatable="yes">LVM</item>
+ </items>
+ <signal name="changed" handler="on_type_changed" swapped="no"/>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
<packing>
@@ -480,58 +463,41 @@
</packing>
</child>
<child>
- <object class="GtkExpander" id="options2_expander">
+ <object class="GtkBox" id="box2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkBox" id="box2">
+ <object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="margin_left">30</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Partition type:</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="options2_combo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="active">2</property>
- <items>
- <item translatable="yes">Standard Partition</item>
- <item translatable="yes">BTRFS</item>
- <item translatable="yes">LVM</item>
- </items>
- <signal name="changed" handler="on_type_changed" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="label" translatable="yes"><b>Partition scheme:</b></property>
+ <property name="use_markup">True</property>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- <child type="label">
- <object class="GtkLabel" id="label5">
+ <child>
+ <object class="GtkComboBoxText" id="options2_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Partition _scheme configuration</property>
- <property name="use_underline">True</property>
- <attributes>
- <attribute name="font-desc" value="Cantarell 11"/>
- </attributes>
+ <property name="active">2</property>
+ <items>
+ <item translatable="yes">Standard Partition</item>
+ <item translatable="yes">BTRFS</item>
+ <item translatable="yes">LVM</item>
+ </items>
+ <signal name="changed" handler="on_type_changed" swapped="no"/>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
<packing>
--
1.8.1.2
11 years, 1 month
[PATCH] Don't error out if a ks %include is missing when looking for sshpw (#923627).
by Chris Lumens
---
utils/handle-sshpw | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/utils/handle-sshpw b/utils/handle-sshpw
index f320153..f4fbfc7 100755
--- a/utils/handle-sshpw
+++ b/utils/handle-sshpw
@@ -34,7 +34,7 @@ ksfile = '/run/install/ks.cfg'
if not os.path.exists(ksfile):
sys.exit()
-ksparser = KickstartParser(makeVersion())
+ksparser = KickstartParser(makeVersion(), missingIncludeIsFatal=False)
ksparser.readKickstart(ksfile)
# we need to have a libuser.conf that points to the installer root for
--
1.8.1.2
11 years, 1 month
[PATCH] Add call to new-kernel-pkg --rpmposttrans (#922988)
by Brian C. Lane
From: "Brian C. Lane" <bcl(a)redhat.com>
Also exclude /run/ from the rsync in live installs.
---
pyanaconda/packaging/__init__.py | 3 +++
pyanaconda/packaging/livepayload.py | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index 3207c33..82c3dee 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -560,6 +560,9 @@ class Payload(object):
["--mkinitrd", "--dracut",
"--depmod", "--install", kernel],
root=ROOT_PATH)
+ iutil.execWithRedirect("new-kernel-pkg",
+ ["--rpmposttrans", kernel],
+ root=ROOT_PATH)
self._createdInitrds = True
diff --git a/pyanaconda/packaging/livepayload.py b/pyanaconda/packaging/livepayload.py
index b7c565c..51c1dab 100644
--- a/pyanaconda/packaging/livepayload.py
+++ b/pyanaconda/packaging/livepayload.py
@@ -103,7 +103,7 @@ class LiveImagePayload(ImagePayload):
# go recursively, include devices and special files, don't cross
# file system boundaries
args = ["-pogAXtlHrDx", "--exclude", "/dev/", "--exclude", "/proc/",
- "--exclude", "/sys/", INSTALL_TREE+"/", ROOT_PATH]
+ "--exclude", "/sys/", "--exclude", "/run/", INSTALL_TREE+"/", ROOT_PATH]
try:
rc = iutil.execWithRedirect(cmd, args)
except (OSError, RuntimeError) as e:
--
1.8.1.4
11 years, 1 month
[blivet] Mount /run during install and fix /sys mount (#922988)
by Brian C. Lane
From: "Brian C. Lane" <bcl(a)redhat.com>
dracut needs these mounted so that it sets up the new initrd correctly.
---
blivet/__init__.py | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py
index 5da572c..5711c30 100644
--- a/blivet/__init__.py
+++ b/blivet/__init__.py
@@ -2156,13 +2156,14 @@ class FSSet(object):
self._devshm = None
self._usb = None
self._selinux = None
+ self._run = None
self.preserveLines = [] # lines we just ignore and preserve
@property
def sysfs(self):
if not self._sysfs:
self._sysfs = NoDevice(format=getFormat("sysfs",
- device="sys",
+ device="sysfs",
mountpoint="/sys"))
return self._sysfs
@@ -2218,6 +2219,17 @@ class FSSet(object):
return self._selinux
@property
+ def run(self):
+ if not self._run:
+ self._run = DirectoryDevice("/run", format=getFormat("bind",
+ device="/run",
+ mountpoint="/run",
+ exists=True),
+ exists=True)
+
+ return self._run
+
+ @property
def devices(self):
return sorted(self.devicetree.devices, key=lambda d: d.path)
@@ -2443,7 +2455,7 @@ class FSSet(object):
devices = self.mountpoints.values() + self.swapDevices
devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
- self.proc, self.selinux, self.usb])
+ self.proc, self.selinux, self.usb, self.run])
devices.sort(key=lambda d: getattr(d.format, "mountpoint", None))
for device in devices:
@@ -2457,7 +2469,7 @@ class FSSet(object):
if "noauto" in options.split(","):
continue
- if device.format.type == "bind" and device != self.dev:
+ if device.format.type == "bind" and device not in [self.dev, self.run]:
# set up the DirectoryDevice's parents now that they are
# accessible
#
@@ -2500,7 +2512,7 @@ class FSSet(object):
""" unmount filesystems, except swap if swapoff == False """
devices = self.mountpoints.values() + self.swapDevices
devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
- self.proc, self.usb, self.selinux])
+ self.proc, self.usb, self.selinux, self.run])
devices.sort(key=lambda d: getattr(d.format, "mountpoint", None))
devices.reverse()
for device in devices:
--
1.8.1.4
11 years, 1 month
[blivet] fix lv maxSize property
by David Lehman
An lv's max size is its current size plus its vg's free space, but
cannot exceed the maximum size of it's formatting.
11 years, 1 month
[PATCH] Add message instructing users they can type to search for language.
by Samantha N. Bueno
Persistently show the placeholder text when nothing is typed in the
language search bar.
---
pyanaconda/ui/gui/spokes/welcome.glade | 3 ++-
pyanaconda/ui/gui/spokes/welcome.py | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/welcome.glade b/pyanaconda/ui/gui/spokes/welcome.glade
index a10c136..7196133 100644
--- a/pyanaconda/ui/gui/spokes/welcome.glade
+++ b/pyanaconda/ui/gui/spokes/welcome.glade
@@ -261,7 +261,7 @@
</child>
<child>
<object class="GtkLabel" id="pickLanguageLabel">
- <property name="height_request">45</property>
+ <property name="height_request">45</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
@@ -365,6 +365,7 @@
<property name="invisible_char">●</property>
<property name="invisible_char_set">True</property>
<property name="secondary_icon_name">edit-clear-symbolic</property>
+ <property name="placeholder_text">Type here to search.</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
<signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/>
</object>
diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py
index d4f8e15..1f150c2 100644
--- a/pyanaconda/ui/gui/spokes/welcome.py
+++ b/pyanaconda/ui/gui/spokes/welcome.py
@@ -263,7 +263,7 @@ class LanguageMixIn(object):
def on_clear_icon_clicked(self, entry, icon_pos, event):
if icon_pos == Gtk.EntryIconPosition.SECONDARY:
- entry.set_text("")
+ entry.set_text(entry.get_placeholder_text())
def on_entry_changed(self, *args):
self._languageStoreFilter.refilter()
--
1.7.11.7
11 years, 1 month
[PATCH] Add gid attribute to User command and associated data structure
by Martin Sivak
---
pykickstart/commands/user.py | 26 ++++++++++++++++++++++++++
pykickstart/handlers/control.py | 10 +++++-----
tests/commands/user.py | 8 ++++++++
3 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/pykickstart/commands/user.py b/pykickstart/commands/user.py
index 8ed9ca9..fc8c56a 100644
--- a/pykickstart/commands/user.py
+++ b/pykickstart/commands/user.py
@@ -110,6 +110,23 @@ class F12_UserData(F8_UserData):
return retval
+class F19_UserData(F12_UserData):
+ removedKeywords = F12_UserData.removedKeywords
+ removedAttrs = F12_UserData.removedAttrs
+
+ def __init__(self, *args, **kwargs):
+ F12_UserData.__init__(self, *args, **kwargs)
+ self.gid = kwargs.get("gid", 0)
+
+ def _getArgsAsStr(self):
+ retval = F12_UserData._getArgsAsStr(self)
+
+ if self.gid:
+ retval += " --gid=%d" % (self.gid,)
+
+ return retval
+
+
class FC6_User(KickstartCommand):
removedKeywords = KickstartCommand.removedKeywords
removedAttrs = KickstartCommand.removedAttrs
@@ -177,3 +194,12 @@ class F12_User(F8_User):
op = F8_User._getParser(self)
op.add_option("--gecos", type="string")
return op
+
+class F19_User(F12_User):
+ removedKeywords = F12_User.removedKeywords
+ removedAttrs = F12_User.removedAttrs
+
+ def _getParser(self):
+ op = F12_User._getParser(self)
+ op.add_option("--gid", type="int")
+ return op
diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py
index 52b0a94..523afb2 100644
--- a/pykickstart/handlers/control.py
+++ b/pykickstart/handlers/control.py
@@ -976,7 +976,7 @@ commandMap = {
"logvol": logvol.F18_LogVol,
"mediacheck": mediacheck.FC4_MediaCheck,
"multipath": multipath.FC6_MultiPath,
- "network": network.F18_Network,
+ "network": network.F19_Network,
"nfs": method.F18_Method,
"part": partition.F18_Partition,
"partition": partition.F18_Partition,
@@ -996,7 +996,7 @@ commandMap = {
"updates": updates.F7_Updates,
"upgrade": upgrade.F11_Upgrade,
"url": method.F18_Method,
- "user": user.F12_User,
+ "user": user.F19_User,
"vnc": vnc.F9_Vnc,
"volgroup": volgroup.FC16_VolGroup,
"xconfig": xconfig.F14_XConfig,
@@ -1277,7 +1277,7 @@ commandMap = {
"updates": updates.F7_Updates,
"upgrade": upgrade.F11_Upgrade,
"url": method.F14_Method,
- "user": user.F12_User,
+ "user": user.F19_User,
"vnc": vnc.F9_Vnc,
"volgroup": volgroup.FC16_VolGroup,
"xconfig": xconfig.F14_XConfig,
@@ -1549,7 +1549,7 @@ dataMap = {
"RaidData": raid.F18_RaidData,
"RepoData": repo.F15_RepoData,
"SshPwData": sshpw.F13_SshPwData,
- "UserData": user.F12_UserData,
+ "UserData": user.F19_UserData,
"VolGroupData": volgroup.FC16_VolGroupData,
"ZFCPData": zfcp.F14_ZFCPData,
},
@@ -1617,7 +1617,7 @@ dataMap = {
"RaidData": raid.F15_RaidData,
"RepoData": repo.F15_RepoData,
"SshPwData": sshpw.F13_SshPwData,
- "UserData": user.F12_UserData,
+ "UserData": user.F19_UserData,
"VolGroupData": volgroup.FC16_VolGroupData,
"ZFCPData": zfcp.F14_ZFCPData,
}
diff --git a/tests/commands/user.py b/tests/commands/user.py
index 6325776..548acbe 100644
--- a/tests/commands/user.py
+++ b/tests/commands/user.py
@@ -72,6 +72,14 @@ class F12_TestCase(F8_TestCase):
# pass
self.assert_parse("user --name=user --gecos=\"User Name\"", "user --name=user --gecos=\"User Name\"\n")
+class F19_TestCase(F12_TestCase):
+ def runTest(self):
+ # run F12 test case
+ F12_TestCase.runTest(self)
+
+ # pass
+ self.assert_parse("user --name=user --gid=500", "user --name=user --gid=500\n")
+
if __name__ == "__main__":
unittest.main()
--
1.7.11.7
11 years, 1 month
[PATCH 1/8] Add a slot on the storage spoke for display of advanced storage.
by Chris Lumens
---
pyanaconda/ui/gui/spokes/storage.glade | 79 +++++++++++++++++++++++++++++++++-
1 file changed, 77 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/storage.glade b/pyanaconda/ui/gui/spokes/storage.glade
index be81660..a7ca795 100644
--- a/pyanaconda/ui/gui/spokes/storage.glade
+++ b/pyanaconda/ui/gui/spokes/storage.glade
@@ -859,7 +859,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label1">
+ <object class="GtkLabel" id="localLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">24</property>
@@ -932,6 +932,81 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="specializedLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">24</property>
+ <property name="margin_right">24</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Specialized & Network Disks</property>
+ <property name="track_visited_links">False</property>
+ <attributes>
+ <attribute name="font-desc" value="Cantarell Bold 10"/>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="specializedScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_left">24</property>
+ <property name="margin_right">24</property>
+ <property name="hexpand">True</property>
+ <property name="vscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport" id="specializedViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkBox" id="specialized_disks_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">6</property>
+ <property name="margin_right">6</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">30</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_right">24</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Disks left unselected here will not be touched.</property>
+ <attributes>
+ <attribute name="font-desc" value="Cantarell Italic 10"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -989,7 +1064,7 @@
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
- <property name="position">4</property>
+ <property name="position">7</property>
</packing>
</child>
</object>
--
1.8.1.2
11 years, 1 month