Files
installer-gui/src/install.py
T

115 lines
3.4 KiB
Python

#!/usr/bin/env python
#
# Copyright (c) 2013 GhostBSD
#
# See COPYING for licence terms.
#
# install.py v 0.4 Sunday, February 08 2015 Eric Turgeon
#
# install.py give the job to pc-sysinstall to install GhostBSD.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
import threading
# import locale
import os
from subprocess import Popen, PIPE, STDOUT, call
from time import sleep
from db_partition import rDeleteParttion, destroyParttion, makingParttion
from create_cfg import gbsd_cfg
from slides import gbsdSlides
# from slides import dbsdSlides
import sys
installer = "/usr/local/lib/gbinstall/"
sys.path.append(installer)
tmp = "/tmp/.gbi/"
sysinstall = "/usr/local/sbin/pc-sysinstall"
logo = "/usr/local/lib/gbinstall/logo.png"
def update_progess(probar, bartext):
new_val = probar.get_fraction() + 0.000003
probar.set_fraction(new_val)
probar.set_text(bartext[0:80])
def read_output(command, probar):
call('service hald stop', shell=True)
GLib.idle_add(update_progess, probar, "Creating pcinstall.cfg")
# If rc.conf.ghostbsd exists run gbsd_cfg
gbsd_cfg()
call('umount /media/GhostBSD', shell=True)
sleep(2)
if os.path.exists(tmp + 'delete'):
GLib.idle_add(update_progess, probar, "Deleting partition")
rDeleteParttion()
sleep(1)
# destroy disk partition and create scheme
if os.path.exists(tmp + 'destroy'):
GLib.idle_add(update_progess, probar, "Creating disk partition")
destroyParttion()
sleep(1)
# create partition
if os.path.exists(tmp + 'create'):
GLib.idle_add(update_progess, probar, "Creating new partitions")
makingParttion()
sleep(1)
p = Popen(command, shell=True, stdin=PIPE, stdout=PIPE,
stderr=STDOUT, close_fds=True, universal_newlines=True)
while True:
line = p.stdout.readline()
if not line:
break
bartext = line.rstrip()
GLib.idle_add(update_progess, probar, bartext)
# Those for next 4 line is for debugin only.
# filer = open("/tmp/.gbi/tmp", "a")
# filer.writelines(bartext)
# filer.close
print(bartext)
call('service hald start', shell=True)
if bartext.rstrip() == "Installation finished!":
Popen('python2.7 %send.py' % installer, shell=True, close_fds=True)
call("rm -rf /tmp/.gbi/", shell=True, close_fds=True)
Gtk.main_quit()
else:
Popen('python2.7 %serror.py' % installer, shell=True, close_fds=True)
Gtk.main_quit()
class installSlide():
def close_application(self, widget, event=None):
Gtk.main_quit()
def __init__(self):
self.mainHbox = Gtk.HBox(False, 0)
self.mainHbox.show()
self.mainVbox = Gtk.VBox(False, 0)
self.mainVbox.show()
self.mainHbox.pack_start(self.mainVbox, True, True, 0)
slide = gbsdSlides()
getSlides = slide.get_slide()
self.mainVbox.pack_start(getSlides, True, True, 0)
def get_model(self):
return self.mainHbox
class installProgress():
def __init__(self):
self.pbar = Gtk.ProgressBar()
self.pbar.set_show_text(True)
command = '%s -c %spcinstall.cfg' % (sysinstall, tmp)
thr = threading.Thread(target=read_output,
args=(command, self.pbar))
thr.setDaemon(True)
thr.start()
self.pbar.show()
def getProgressBar(self):
return self.pbar