class Dashboard(BoxLayout): """Home tab that displays user statistics""" def __init__(self,sm,**kwargs): super(Dashboard, self).__init__(**kwargs) self.sm = sm self.ahse_cred = 0 self.engr_cred = 0 self.mth_cred = 0 self.sci_cred = 0 will_grad = 'No' ## USER INFORMATION HALF ## self.info = GridLayout(rows=5,size_hint=(0.5,1.0)) # User's Name # self.display_name = Label(size_hint=(1.0,0.05)) # Grad Year # self.years = BoxLayout(size_hint=(1.0,0.1)) year1 = BoxLayout(size_hint=(0.2,1.0)) self.year1_check=CheckBox(active=False,group='year',size_hint=(0.1,1.0)) self.year1_label = Label(text=str(2014),size_hint=(0.9,1.0)) year1.add_widget(self.year1_label) year1.add_widget(self.year1_check) year2 = BoxLayout(size_hint=(0.2,1.0)) self.year2_check=CheckBox(active=False,group='year',size_hint=(0.1,1.0)) self.year2_label = Label(text=str(2015),size_hint=(0.9,1.0)) year2.add_widget(self.year2_label) year2.add_widget(self.year2_check) year3 = BoxLayout(size_hint=(0.2,1.0)) self.year3_check=CheckBox(active=False,group='year',size_hint=(0.1,1.0)) self.year3_label = Label(text=str(2016),size_hint=(0.9,1.0)) year3.add_widget(self.year3_label) year3.add_widget(self.year3_check) year4 = BoxLayout(size_hint=(0.2,1.0)) self.year4_check=CheckBox(active=False,group='year',size_hint=(0.1,1.0)) self.year4_label = Label(text=str(2017),size_hint=(0.9,1.0)) year4.add_widget(self.year4_label) year4.add_widget(self.year4_check) self.years.add_widget(Label(size_hint=(0.1,1.0))) radio_buttons1=[year1,year2,year3,year4] for button in radio_buttons1: self.years.add_widget(button) self.years.add_widget(Label(size_hint=(0.1,1.0))) # Major # self.majors = GridLayout(cols=1,size_hint=(1.0,0.7)) ece = BoxLayout() self.ece_check = CheckBox(active=False,group='majors') self.ece_label = Label(text='ECE') ece.add_widget(Label()) ece.add_widget(self.ece_label) ece.add_widget(self.ece_check) ece.add_widget(Label()) meche = BoxLayout() self.meche_check = CheckBox(active=False,group='majors') self.meche_label = Label(text='MechE') meche.add_widget(Label()) meche.add_widget(self.meche_label) meche.add_widget(self.meche_check) meche.add_widget(Label()) roboe = BoxLayout() self.roboe_check = CheckBox(active=False,group='majors') self.roboe_label = Label(text='E:Robo') roboe.add_widget(Label()) roboe.add_widget(self.roboe_label) roboe.add_widget(self.roboe_check) roboe.add_widget(Label()) bioe = BoxLayout() self.bioe_check = CheckBox(active=False,group='majors') self.bioe_label = Label(text='E:Bio') bioe.add_widget(Label()) bioe.add_widget(self.bioe_label) bioe.add_widget(self.bioe_check) bioe.add_widget(Label()) designe = BoxLayout() self.designe_check = CheckBox(active=False,group='majors') self.designe_label = Label(text='E:Design') designe.add_widget(Label()) designe.add_widget(self.designe_label) designe.add_widget(self.designe_check) designe.add_widget(Label()) ec = BoxLayout() self.ec_check = CheckBox(active=False,group='majors') self.ec_label = Label(text='E:C') ec.add_widget(Label()) ec.add_widget(self.ec_label) ec.add_widget(self.ec_check) ec.add_widget(Label()) syse= BoxLayout() self.syse_check = CheckBox(active=False,group='majors') self.syse_label = Label(text='E:Sys') syse.add_widget(Label()) syse.add_widget(self.syse_label) syse.add_widget(self.syse_check) syse.add_widget(Label()) matscie = BoxLayout() self.matscie_check = CheckBox(active=False,group='majors') self.matscie_label = Label(text='E:MatSci') matscie.add_widget(Label()) matscie.add_widget(self.matscie_label) matscie.add_widget(self.matscie_check) matscie.add_widget(Label()) other = BoxLayout() self.other_check = CheckBox(active=False,group='majors') self.other_label = Label(text='Other') other.add_widget(Label()) other.add_widget(self.other_label) other.add_widget(self.other_check) other.add_widget(Label()) options=[ece, meche, roboe, bioe, designe, ec, syse, matscie, other] for choice in options: self.majors.add_widget(choice) # Export and Save Buttons # self.options_bar = BoxLayout(size_hint=(1.0,0.05)) self.export_button = Button(text='Export to Spreadsheet',on_press=self.export_user_info) self.save_button = Button(text='Save User Information',on_press=self.save_user_info) self.options_bar.add_widget(self.export_button) self.options_bar.add_widget(self.save_button) # Add Widgets to User Information Half # self.info.add_widget(Label(text='Your Information',font_size = 17,size_hint=(1.0,0.1))) self.info.add_widget(self.display_name) self.info.add_widget(self.years) self.info.add_widget(self.majors) self.info.add_widget(self.options_bar) ## STATS AND NOTES HALF ## self.stats_and_notes = BoxLayout(orientation='vertical',size_hint=(0.5,1.0)) # STATS QUADRANT # self.stats = BoxLayout(orientation='vertical',size_hint=(1.0,0.5)) # Stats # self.information = GridLayout(rows = 3, size_hint = (1.0,0.8)) self.grad = Label(text='Enough credits to graduate?: ' + will_grad,size_hint=(1.0,0.4)) self.credits = GridLayout(cols=4,rows=2,size_hint=(1.0,0.6)) self.credits.add_widget (Label()) self.credits.add_widget(Label(text = 'AHSE: '+str(self.ahse_cred))) self.credits.add_widget(Label(text = 'ENGR: '+str(self.engr_cred))) self.credits.add_widget (Label()) self.credits.add_widget (Label()) self.credits.add_widget(Label(text = 'MTH: '+str(self.mth_cred))) self.credits.add_widget(Label(text = 'SCI: '+str(self.sci_cred))) self.credits.add_widget (Label()) self.information.add_widget(self.credits) self.information.add_widget(self.grad) # Add Widgets to Quadrant # self.stats.add_widget(Label(text = 'Credits',font_size = 17,size_hint =(1.0,0.2))) self.stats.add_widget(self.information) # NOTES QUADRANT # self.notes = GridLayout(cols=1,size_hint =(1.0,0.5)) self.n_label = Label(text='Notes',font_size = 17,size_hint = (1.0,0.15)) self.n_entry = TextInput(multiline=True,padding=15,size_hint=(1.0,0.85)) self.notes.add_widget(self.n_label) self.notes.add_widget(self.n_entry) # Add Stats and Notes to Half # self.stats_and_notes.add_widget(self.stats) self.stats_and_notes.add_widget(self.notes) ## Add Halves to Home Tab ## self.add_widget(self.info) self.add_widget(self.stats_and_notes) Clock.schedule_interval(self.update_stats,0.1) def update_stats(self,instance): """Updates the information displayed on the Home tab and saves info to the user file""" if self.sm.tabs.tabspanel.current_tab == self.sm.tabs.tabspanel.tab1: ahse_cred = all_globals.user.credits['AHSE'] engr_cred = all_globals.user.credits['ENGR'] mth_cred = all_globals.user.credits['MTH'] sci_cred = all_globals.user.credits['SCI'] ahse_req = 28 engr_req = 28 mth_req = 28 sci_req = 28 ## Add major to user file ## if self.ece_check.active == True: all_globals.user.major = self.ece_label.text if self.meche_check.active == True: all_globals.user.major = self.meche_label.text if self.roboe_check.active == True: all_globals.user.major = self.roboe_label.text if self.bioe_check.active == True: all_globals.user.major = self.bioe_label.text if self.designe_check.active == True: all_globals.user.major = self.designe_label.text if self.ec_check.active == True: all_globals.user.major = self.ec_label.text if self.syse_check.active == True: all_globals.user.major = self.syse_label.text if self.matscie_check.active == True: all_globals.user.major = self.matscie_label.text if self.other_check.active == True: all_globals.user.major = self.other_label.text ## Determine if user has enough credits to graduate ## if ahse_cred+engr_cred+mth_cred+sci_cred >= 128: will_grad = 'Yes' else: will_grad = 'No' ## Update the displayed credits & name ## self.grad.clear_widgets() self.grad = Label(text='Enough credits to graduate?: ' + will_grad) self.credits.clear_widgets() self.credits.add_widget (Label()) self.credits.add_widget (Label(text = 'AHSE: '+str(ahse_cred)+' / '+str(ahse_req))) self.credits.add_widget (Label(text = 'ENGR: '+str(engr_cred)+' / '+str(engr_req))) self.credits.add_widget (Label()) self.credits.add_widget (Label()) self.credits.add_widget (Label(text = 'MTH: '+str(mth_cred)+' / '+str(mth_req))) self.credits.add_widget (Label(text = 'SCI: '+str(sci_cred)+' / '+str(sci_req))) self.credits.add_widget (Label()) self.display_name.text = all_globals.user.name ## Add grad year to user file ## if self.year1_check.active == True: all_globals.user.grad_year = int(self.year1_label.text) elif self.year2_check.active == True: all_globals.user.grad_year = int(self.year2_label.text) elif self.year3_check.active == True: all_globals.user.grad_year = int(self.year3_label.text) elif self.year4_check.active == True: all_globals.user.grad_year = int(self.year4_label.text) ## Add notes to user file ## all_globals.user.notes=self.n_entry.text def save_user_info(self,instance): #print 'User info saved!' all_globals.fm.save_user(all_globals.user) def export_user_info(self,instance): #print 'User info exported!' all_globals.fm.export_user(all_globals.user)