1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
from gtk import *
from iw import *
from gnome.zvt import *
from gui import _
import isys
import os
class FDiskWindow (InstallWindow):
def __init__ (self, ics):
InstallWindow.__init__ (self, ics)
ics.setTitle (_("fdisk"))
def child_died (self, widget, button):
self.windowContainer.remove (self.windowContainer.children ()[0])
self.windowContainer.pack_start (self.buttonBox)
button.set_state (STATE_NORMAL)
try:
os.remove ('/tmp/' + self.drive)
except:
# XXX fixme
pass
self.ics.setPrevEnabled (1)
self.ics.setNextEnabled (1)
self.ics.setHelpEnabled (1)
def getNext(self):
from gnomepyfsedit import fsedit
from installpath import InstallPathWindow
if ((not InstallPathWindow.fdisk) or
(not InstallPathWindow.fdisk.get_active ())):
return None
drives = self.todo.drives.available ().keys ()
drives.sort (isys.compareDrives)
fstab = []
for mntpoint, (dev, fstype, reformat) in self.todo.mounts.items ():
fstab.append ((dev, mntpoint))
self.todo.ddruid = fsedit(0, drives, fstab, self.todo.zeroMbr,
self.todo.ddruidReadOnly)
return None
def button_clicked (self, widget, drive):
zvt = ZvtTerm (80, 24)
zvt.connect ("child_died", self.child_died, widget)
self.drive = drive
# free the file descriptors
self.todo.ddruid = None
self.todo.ddruidReadOnly = 1
if os.access("/sbin/fdisk", os.X_OK):
path = "/sbin/fdisk"
else:
path = "/usr/sbin/fdisk"
try:
isys.makeDevInode(drive, '/tmp/' + drive)
except:
# XXX FIXME
pass
print "running", path, '/tmp/' + drive
if zvt.forkpty() == 0:
os.execv (path, (path, '/tmp/' + drive))
zvt.show ()
self.windowContainer.remove (self.buttonBox)
self.windowContainer.pack_start (zvt)
self.ics.setHelpEnabled (0)
self.ics.setPrevEnabled (0)
self.ics.setNextEnabled (0)
def getScreen (self):
from installpath import InstallPathWindow
if ((not InstallPathWindow.fdisk) or
(not InstallPathWindow.fdisk.get_active ())):
return None
self.ddruid = None
self.windowContainer = GtkVBox (FALSE)
self.buttonBox = GtkVBox (FALSE, 5)
self.buttonBox.set_border_width (5)
box = GtkVButtonBox ()
label = GtkLabel (_("Select drive to run fdisk on"))
drives = self.todo.drives.available ().keys ()
drives.sort(isys.compareDrives)
for drive in drives:
button = GtkButton (drive)
button.connect ("clicked", self.button_clicked, drive)
box.add (button)
self.buttonBox.pack_start (label, FALSE)
self.buttonBox.pack_start (box, FALSE)
self.windowContainer.pack_start (self.buttonBox)
self.ics.setNextEnabled (1)
return self.windowContainer
|