def select_port(self):
self.mypopup1.title = "Select Driver to port"
self.mypopup1.size_hint = (0.5,0.9)
self.mypopup1.open(UploadDriver())
def select_port2(self):
self.mypopup1.title = "Select Driver to port"
self.mypopup1.size_hint = (0.5,0.9)
self.mypopup1.port_open()
def select_port3(self):
content = BoxLayout(orientation = 'vertical')
content.add_widget(BrowseFile3())
popup = Popup(title = 'Select driver to port', content = content, size_hint = (0.5,1))
popup.open()
def select_port4(self):
content = BoxLayout(orientation = 'vertical')
content.add_widget(BrowseFile4())
popup = Popup(title = 'Select driver to port', content = content, size_hint = (0.5,1))
popup.open()
def back_home(self):
global driver_path
global store_path
global select_ver1
global select_ver2
global select_os1
global select_os2
driver_path = ''
store_path = ''
select_ver1 = ''
select_ver2 = ''
select_os1 = ''
select_os2 = ''
self.clear_widgets()
self.add_widget(HomePage())
def back_upload(self):
global driver_path
global store_path
print"driverpath",driver_path
driver_path = ''
store_path = ''
self.clear_widgets()
self.add_widget(UploadDriver())
print"driverpath",driver_path
print"store path",store_path
def progress_func(self):
self.clear_widgets()
self.add_widget(Progress())
def scriptCall(self):
global dmt_pid
global flag
t2 = threading.Thread(target = self.popup_call)
t2.start()
self.clear_widgets()
self.add_widget(HomePage())
def command_call(self):
time.sleep(5)
command = "perl DMT.pl"+" " +driver_path+"/ "+select_ver1+" "+select_ver2+" "+"/home/aricent/LinuxKernel/"+select_ver1+"/ " +" /home/aricent/LinuxKernel/"+select_ver2+"/ " +" 1"
print "command name -", command
args = shlex.split(command)
pipe = subprocess.Popen(args,stdout = subprocess.PIPE)
print "PID:", pipe.pid
exit_status = pipe.wait()
print "exit status",exit_status
self.threadpop.title = "Report"
self.threadpop.size_hint = (0.4,0.4)
if exit_status == 0:
print "I am inside if"
self.portpopup.dismiss()
self.threadpop.open()
else:
print "i am in else"
self.portpopup.dismiss()
self.threadpop.title = "----ERROR---- "
self.threadpop.size_hint = (0.5,0.5)
thrd_lb = " Auto Porting Unsuccessfull.. Please try Again "
self.threadpop.open()
def popup_call(self):
print "calling pop up"
content = BoxLayout(orientation = 'vertical')
content.add_widget(PortPop())
self.portpopup.title = 'Automatic Porting in Progress...Please Wait...'
self.portpopup.size_hint = (0.5,0.45)
self.portpopup.auto_dismiss = 'False'
self.portpopup.open()
t1 = threading.Thread(target = self.command_call)
t1.start()
def return_uploaddriver():
up_driver = UploadDriver()
return(up_driver)
#upload_obj = UploadDriver()
vp = ViewPage()
def go_to_viewpage():
global t1
print "I am in go_to_viewpage"
upload_obj1 = UploadDriver()
content = BoxLayout(orientation='vertical')
content.add_widget(ViewPage())
class CustomDb(BoxLayout):
# global mypopup
portpopup = PortPop()
threadpopup = ThreadPopup2()
def select_source_kernel(self):
mypopup = SourceKernel()
mycontent = BoxLayout(orientation = 'vertical')
mycontent.add_widget(SourceKernel())
mypopup.title ="select source kernel"
mypopup.size_hint = (0.5,0.5)
mypopup.open()
def select_dest_kernel(self):
mypopup = DestinationKernel()
mycontent = BoxLayout(orientation = 'vertical')
mycontent.add_widget(DestinationKernel())
mypopup.title ="select Destination kernel"
mypopup.size_hint = (0.5,0.5)
mypopup.open()
def back_home(self):
self.clear_widgets()
self.add_widget(HomePage())
def reset_custom(self):
self.clear_widgets()
self.add_widget(CustomDb())
def continue_customdb(self):
global dmt_pid
global flag
t3 = threading.Thread(target = self.customdb_popup)
t3.start()
self.clear_widgets()
self.add_widget(HomePage())
def create_customdb(self):
time.sleep(5)
command = "perl CreateDBonly1.pl /home/dmt/LinuxKernel/linux-3.10.65/ /home/dmt/LinuxKernel/linux-3.18.3/"
print "command name -", command
args = shlex.split(command)
pipe = subprocess.Popen(args,stdout = subprocess.PIPE)
print "PID:", pipe.pid
exit_status = pipe.wait()
print "exit status",exit_status
if exit_status == 0:
self.threadpop.title = "Finished"
self.threadpop.size_hint = (0.4,0.4)
print "I am inside if"
self.portpopup.dismiss()
self.threadpop.open()
else:
print "i am in else"
self.portpopup.dismiss()
self.threadpopup.title = "----ERROR---- "
self.threadpopup.size_hint = (0.5,0.5)
thrd_lb = " CustomDb Creation Unsuccessfull.. Please try Again "
self.threadpopup.finish_open()
# popup = Popup(title = 'customdb creation unsuccessfull...please try again', size_hint = (0.6,0.6))
# popup.open()
def customdb_popup(self):
print "calling pop up"
content = BoxLayout(orientation = 'vertical')
content.add_widget(PortPop())
self.portpopup.title = 'Creating Custom Database...can take several hours'
self.portpopup.size_hint = (0.5,0.45)
self.portpopup.auto_dismiss = 'False'
self.portpopup.custom_open()
t4 = threading.Thread(target = self.create_customdb)
t4.start()
class HomePage(BoxLayout):
value = NumericProperty(0)
def __init__(self, **kwargs):
super(HomePage, self).__init__(**kwargs)
Clock.schedule_interval(self.increment_value, 1 / 30.)
dir_name = []
dir = glob.glob('../Database/linux-*')
for dn in dir:
split_dn = dn.split("/")
dir_name.append(split_dn[-1])
dir_name.sort()
dir_name.append('Custom')
dropdown_os1 = DropDown()
dropdown_os2 = DropDown()
dropdown_ver1 = DropDown()
dropdown_ver2 = DropDown()
os = ['Linux' , 'Windows', 'Mac']
for req_os in os:
btn = Button(text = req_os, size_hint_y= None, height = 44, background_color= (0.3,0.82,0.9,0.46))
btn.bind(on_release = lambda btn: dropdown_os1.select(btn.text))
dropdown_os1.add_widget(btn)
mainbutton = self.ids.os_source
mainbutton.bind(on_release = dropdown_os1.open)
dropdown_os1.bind(on_select=self.on_select_os1)
for req_os in os:
btn_1 = Button(text = req_os, size_hint_y= None, height = 44, background_color= (0.3,0.82,0.9,0.46))
btn_1.bind(on_release = lambda btn_1: dropdown_os2.select(btn_1.text))
dropdown_os2.add_widget(btn_1)
mainbutton1 = self.ids.os_dest
mainbutton1.bind(on_release = dropdown_os2.open)
dropdown_os2.bind(on_select=self.on_select_os2)
for ver in dir_name:
btn_v = Button(text = ver, size_hint_y= None, height = 44 , background_color= (0.3,0.82,0.9,0.46))
btn_v.bind(on_release = lambda btn_v: dropdown_ver1.select(btn_v.text))
dropdown_ver1.add_widget(btn_v)
for ver in dir_name:
btn_v1 = Button(text = ver, size_hint_y= None, height = 44 , background_color= (0.3,0.82,0.9,0.46))
btn_v1.bind(on_release = lambda btn_v1: dropdown_ver2.select(btn_v1.text))
dropdown_ver2.add_widget(btn_v1)
mainbutton_v = self.ids.ver_source
mainbutton_v.bind(on_release = dropdown_ver1.open)
mainbutton_v1 = self.ids.ver_dest
mainbutton_v1.bind(on_release = dropdown_ver2.open)
dropdown_ver1.bind(on_select = self.on_select_ver1)
dropdown_ver2.bind(on_select = self.on_select_ver2)
def on_select_os1(self, *args):
self.text = args[1]
setattr(self.ids.os_source, 'text', self.text)
global select_os1
select_os1 = self.text
def on_select_os2(self, *args):
self.text = args[1]
setattr(self.ids.os_dest, 'text', self.text)
global select_os2
select_os2 = self.text
def on_select_ver1(self, *args):
self.text = args[1]
setattr(self.ids.ver_source, 'text', self.text)
global select_ver1
select_ver1 = self.text
def on_select_ver2(self, *args):
self.text = args[1]
setattr(self.ids.ver_dest, 'text', self.text)
global select_ver2
select_ver2 = self.text
def increment_value(self, dt):
self.value += dt
def show_upload(self, instance):
self.clear_widgets()
def UploadDriver_func(self):
# content = BoxLayout(orientation = 'vertical')
#content.add_widget(Label(text = "Do you want to generate custom database?"))
content1 = BoxLayout(orientation = 'horizontal', spacing = 10)
# if(select_ver1 != '' and select_ver2 != '' and select_ver1 == select_ver2):
# flag = 1
content2 = AnchorLayout(anchor_x='center', anchor_y='center')
if((select_ver1 == '' or select_ver2 == '' or select_ver1 == select_ver2) and (select_ver1 != 'Custom' or select_ver2 != 'Custom')):
flag = 1
elif(select_ver1 == 'Custom' or select_ver2 == 'Custom'):
flag = 2
#self.custPop.open()
else:
flag = 0
self.clear_widgets()
self.add_widget(UploadDriver())
if flag == 1:
if((select_ver1 != '' or select_ver2 != '') and (select_ver1 == select_ver2) and (select_ver1 != 'Custom')):
popup = Popup(title = 'Source and Destination kernel can\'t be same', content= content2 , size_hint = (0.4,0.3))
else:
popup = Popup(title = 'Please Select Both Kernel versions', content= content2 , size_hint = (0.4,0.3))
content2.add_widget(Button(text = " OK ", size_hint = (0.4, 0.4),pos_hint = {'x' : 0.5, 'y' : 0.2},on_press = popup.dismiss))
popup.open()
elif flag == 2:
popup = Popup(title = 'Do you want to generate custom database?', content= content1 , size_hint = (0.4,0.3))
mybutton = Button(text = "Yes",id = 'yes_btn', size_hint = (0.3,0.4), pos_hint = {'x' : 0.5, 'y' : 0.2},on_press = lambda widget:self.call_customdb(popup))
content1.add_widget(mybutton)
content1.add_widget(Button(text = " No ", size_hint = (0.3, 0.4),pos_hint = {'x' : 0.5, 'y' : 0.2},on_press = popup.dismiss))
popup.open()
# content.add_widget(content2)
def myfunc(self,p):
p.dismiss()
self.clear_widgets()
self.add_widget(ViewPage())
def call_customdb(self,p):
p.dismiss()
self.clear_widgets()
self.add_widget(CustomDb())
class ShowcaseApp(App):
title = 'Driver Migration Tool'
def build(self):
root = BoxLayout(orientation='horizontal', padding=20, spacing=20)
self.content = content = BoxLayout()
root.add_widget(content)
sc = Showcase()
sc.content.add_widget(root)
self.content.add_widget(HomePage())
return sc
if __name__ == '__main__':
ShowcaseApp().run()