Changeset 8003


Ignore:
Timestamp:
Sep 4, 2018, 2:50:15 PM (12 months ago)
Author:
Juanma
Message:

Gui reworked

Location:
llx-network-config/trunk/fuentes/install-files/usr/share/llx-network-config
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • llx-network-config/trunk/fuentes/install-files/usr/share/llx-network-config/llx-network-config.py

    r1151 r8003  
    1 #!/usr/bin/env python
     1#!/usr/bin/env python2
    22
    33import os
     
    1313import traceback
    1414import gi
     15import subprocess
    1516gi.require_version('Gtk','3.0')
    1617gi.require_version('PangoCairo','1.0')
    1718
    18 from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango
     19from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango, GdkPixbuf
    1920
    2021import signal
     
    2526_ = gettext.gettext
    2627
     28MARGIN=6
     29
    2730class NetworkConfig:
    2831       
     
    3033               
    3134                self.client=xmlrpclib.ServerProxy("https://localhost:9779")
    32                 self.process=multiprocessing.Process()
    3335                try:
    34                         if self.client.get_variable("","VariablesManager","INTERFACE_REPLICATION")!=None:
    35                                 self.open_dialog(_("Network Configuration"),_("Network reconfiguration is only allowed on independent servers"),"dialog-information")
    36                         else:
    37                                 self.start_gui()
    38                 except:
     36#                       if self.client.get_variable("","VariablesManager","INTERFACE_REPLICATION")!=None:
     37#                               self.open_dialog(_("Network Configuration"),_("Network reconfiguration is only allowed on independent servers"),"dialog-information")
     38#                       else:
     39                        self.start_gui2()
     40                except Exception as e:
     41                        print(e)
    3942                        pass
    4043               
    4144               
    4245        #def init
    43        
    44         def start_gui(self):
    45                
    46                 builder=Gtk.Builder()
    47                 builder.set_translation_domain("llx-network-config")
     46
     47        def quit(self,*args):
     48                if self.spinner.props.active:
     49                        return True
     50                Gtk.main_quit()
     51
     52        def start_gui2(self):
     53                self._set_css_info()
     54                self.window=Gtk.Window()
     55                self.window.set_title("Netconf")
     56#               builder=Gtk.Builder()
     57#               builder.set_translation_domain("llx-network-config")
    4858                if os.path.exists("./rsrc/network-config.glade"):
    49                         builder.add_from_file("./rsrc/network-config.glade")
     59#                       builder.add_from_file("./rsrc/network-config.glade")
     60                        banner="./rsrc/llx_network.png"
    5061                else:
    51                         builder.add_from_file("/usr/share/llx-network-config/rsrc/network-config.glade")
    52                 self.window=builder.get_object("window1")
    53                
    54                
    55                
    56                 self.window.connect("destroy",self.window_close)
    57                 self.window.show()
    58                
    59                 self.internal_speed_label=builder.get_object("internal_iface_speed_label")
    60                 self.external_speed_label=builder.get_object("external_iface_speed_label")
    61 
    62                 self.internal_combobox=builder.get_object("internal_combobox")
    63                 self.internal_combobox.set_name("Button")
    64                 self.external_combobox=builder.get_object("external_combobox")
    65                
    66                 self.internal_ip_entry=builder.get_object("srvip_entry")
    67                 self.internal_mask_entry=builder.get_object("internal_mask_entry")
    68                
    69                 self.external_ip_entry=builder.get_object("external_ip_entry")
    70                 self.external_mask_entry=builder.get_object("external_mask_entry")
    71                 self.external_gateway_entry=builder.get_object("external_gateway_entry")
    72                
    73                
    74                 self.dns1_entry=builder.get_object("dns1_entry")
    75                 self.dns2_entry=builder.get_object("dns2_entry")
    76                 self.dhcp_radiobutton=builder.get_object("dhcp_radiobutton")
     62#                       builder.add_from_file("/usr/share/llx-network-config/rsrc/network-config.glade")
     63                        banner="/usr/share/llx-network-config/rsrc/llx_network.png"
     64                self.window.connect("delete-event",self.quit)
     65               
     66                pb=GdkPixbuf.Pixbuf.new_from_file(banner)
     67                img_banner=Gtk.Image.new_from_pixbuf(pb)
     68                img_banner.props.halign=Gtk.Align.CENTER
     69                img_banner.set_margin_left(MARGIN*2)
     70
     71                grid=Gtk.Grid()
     72                grid.set_margin_left(MARGIN)
     73                grid.set_margin_right(MARGIN)
     74                grid.set_margin_top(MARGIN)
     75                grid.set_margin_bottom(MARGIN)
     76                grid.set_row_spacing(MARGIN)
     77                grid.set_column_spacing(MARGIN)
     78                grid.set_name("WHITE_BACKGROUND")
     79                self.internal_speed_label=self._format_grid_label()
     80                grid.attach(img_banner,0,0,3,1)
     81                grid.attach(self.internal_speed_label,0,1,1,1)
     82                lbl_int_ip=self._format_grid_label(_("<sup>Internal IP</sup>"))
     83                grid.attach(lbl_int_ip,1,1,1,1)
     84                lbl_int_mask=self._format_grid_label(_("<sup>Internal mask</sup>"))
     85                grid.attach(lbl_int_mask,2,1,1,1)
     86                self.internal_combobox=Gtk.ComboBox()
     87                grid.attach(self.internal_combobox,0,2,1,1)
     88                self.internal_ip_entry=Gtk.Entry()
     89                grid.attach(self.internal_ip_entry,1,2,1,1)
     90                self.internal_mask_entry=Gtk.Entry()
     91                grid.attach(self.internal_mask_entry,2,2,1,1)
     92
     93                self.external_speed_label=self._format_grid_label()
     94                grid.attach(self.external_speed_label,0,3,1,1)
     95                lbl_ext_conf=self._format_grid_label(_("<sup>External configuration mode</sup>"))
     96                lbl_ext_conf.set_halign(Gtk.Align.CENTER)
     97                grid.attach(lbl_ext_conf,1,3,2,1)
     98
     99                self.external_combobox=Gtk.ComboBox()
     100                grid.attach(self.external_combobox,0,4,1,1)
     101                self.dhcp_radiobutton=Gtk.RadioButton().new_with_label(None,"DHCP")
     102                self.dhcp_radiobutton.set_halign(Gtk.Align.END)
    77103                self.dhcp_radiobutton.connect("toggled",self.radio_button_changed)
    78                 self.manual_radiobutton=builder.get_object("manual_radiobutton")
    79                 self.manual_expander=builder.get_object("manual_expander")
    80                 self.manual_expander.set_sensitive(False)
    81                
    82                 self.apply_button=builder.get_object("apply_button")
    83                 self.apply_button.connect("clicked",self.apply_clicked)
    84                 self.apply_button.set_name("Button")
    85                
    86                 self.progress_window=builder.get_object("window2")
    87                 self.progress_bar=builder.get_object("progressbar")
    88                
     104                self.manual_radiobutton=Gtk.RadioButton.new_with_label_from_widget(self.dhcp_radiobutton,"Manual")
     105                grid.attach(self.dhcp_radiobutton,1,4,1,1)
     106                grid.attach(self.manual_radiobutton,2,4,1,1)
     107
     108                self.rvl_box=Gtk.Revealer()
     109                rvl_grid=Gtk.Grid()
     110                rvl_grid.set_column_spacing(MARGIN)
     111                lbl_manual=self._format_grid_label(_("<sup>Manual options</sup>"))
     112                rvl_grid.attach(lbl_manual,0,0,1,1)
     113       
     114                lbl_ext_ip=self._format_grid_label(_("<sup>External IP</sup>"))
     115                rvl_grid.attach(lbl_ext_ip,0,1,1,1)
     116                lbl_ext_mask=self._format_grid_label(_("<sup>External mask</sup>"))
     117                rvl_grid.attach(lbl_ext_mask,1,1,1,1)
     118                lbl_ext_gw=self._format_grid_label(_("<sup>External gateway</sup>"))
     119                rvl_grid.attach(lbl_ext_gw,2,1,1,1)
     120                self.external_ip_entry=Gtk.Entry()
     121                rvl_grid.attach(self.external_ip_entry,0,2,1,1)
     122                self.external_mask_entry=Gtk.Entry()
     123                rvl_grid.attach(self.external_mask_entry,1,2,1,1)
     124                self.external_gateway_entry=Gtk.Entry()
     125                rvl_grid.attach(self.external_gateway_entry,2,2,1,1)
     126                self.rvl_box.add(rvl_grid)
     127                grid.attach(self.rvl_box,0,5,4,1)
     128       
     129                lbl_dns=self._format_grid_label("<sup>DNS</sup>")
     130                grid.attach(lbl_dns,0,8,1,1)
     131                self.dns1_entry=Gtk.Entry()
     132                grid.attach(self.dns1_entry,0,9,1,1)
     133                self.dns2_entry=Gtk.Entry()
     134                grid.attach(self.dns2_entry,1,9,1,1)
     135                apply_button=Gtk.Button().new_from_icon_name(Gtk.STOCK_APPLY,Gtk.IconSize.BUTTON)
     136                apply_button.set_halign(Gtk.Align.END)
     137                apply_button.connect("clicked",self.apply_clicked)
     138                grid.attach(apply_button,2,9,1,1)
     139
     140                self.spinner=Gtk.Spinner()
     141                grid.attach(self.spinner,1,1,1,8)
     142                self.window.add(grid)
     143                self.window.show_all()
    89144                ret=self.set_default_gui_values()
    90145                if ret[0]:
     
    92147                else:
    93148                        self.open_dialog(_("Network Configuration"),_("Error getting values.")+"\n[<b>"+str(ret[1])+"</b>]")
    94                
    95         #def start_gui
     149        #def start_gui2
     150
     151        def _format_grid_label(self,label_text=None):
     152                label=Gtk.Label()
     153                if label_text:
     154                        label.set_markup("%s"%label_text)
     155                label.set_halign(Gtk.Align.START)
     156                label.set_name("ENTRY_LABEL")
     157                label.set_margin_bottom(0)
     158                return label
     159        #def _format_grid_label
    96160       
    97161        def set_default_gui_values(self):
    98 
    99162
    100163                try:
     
    104167                        dns1=var["DNS_EXTERNAL"]["value"][0]
    105168                        dns2=var["DNS_EXTERNAL"]["value"][1]
    106                        
    107                
     169               
     170       
    108171                        self.iiface_model=Gtk.ListStore(str)
    109172                        self.eiface_model=Gtk.ListStore(str)
    110                        
     173               
    111174                        self.internal_combobox.set_model(self.iiface_model)
    112175                        self.external_combobox.set_model(self.eiface_model)
     
    120183                        self.external_combobox.connect("changed",self.get_link_speed,1)
    121184                        self.interfaces=lliurex.net.get_devices_info()         
    122                        
     185               
    123186                        count=0
    124187                        i_id=0
     
    133196                                                e_id=count
    134197                                count+=1
     198                       
     199                       
    135200                               
    136                                
    137                                        
    138201                        self.internal_combobox.set_active(i_id)
    139202                        if len(self.iiface_model)>1:
     
    141204                        else:
    142205                                self.external_combobox.set_active(0)
    143                                
     206                       
    144207
    145208                        if self.is_static(external):
    146209                                self.manual_radiobutton.set_active(True)
    147                                
     210                       
    148211
    149212
    150213                        ip=lliurex.net.get_ip(internal)
    151214                        mask=lliurex.net.get_netmask(internal)
    152                        
     215               
    153216                        self.internal_ip_entry.set_text(ip)
    154217                        self.internal_mask_entry.set_text(mask)
    155218
    156                                
    157                                
     219                       
     220                       
    158221                        ip=lliurex.net.get_ip(external)
    159222                        self.external_mask_entry.set_text(lliurex.net.get_netmask(external))
     
    161224                        ip=ip.split(".")
    162225                        self.external_ip_entry.set_text(".".join(ip))
    163                        
     226               
    164227                        self.dns1_entry.set_text(dns1)
    165228                        self.dns2_entry.set_text(dns2)
    166                        
    167                        
    168 
    169                                
     229               
     230               
     231
     232                       
    170233                        return [True,""]
    171234                               
     
    193256                                speed="Unknown speed"
    194257                        if id==0:
    195                                 self.internal_speed_label.set_text(speed)
     258                                self.internal_speed_label.set_markup("<sup>Internal interface %s</sup>"%speed)
    196259                        else:
    197                                 self.external_speed_label.set_text(speed)
     260                                self.external_speed_label.set_markup("<sup>External interface %s</sup>"%speed)
    198261                               
    199262               
     
    299362       
    300363        def get_n4d_key(self):
    301                
     364                key='' 
    302365                try:
    303366                        f=open("/etc/n4d/key","r")
     
    305368                        f.close()
    306369                        return key
    307                 except:
    308                         None
     370                except Exception as e:
     371                        print(e)
    309372                       
    310373        #def get_n4d_key
     
    316379                sys.stdout.write(msg)
    317380                execfile("/usr/share/zero-server-wizard/types/independent/actions/015-network.py",locals())
     381
    318382                print("OK")
    319383                msg="* Executing slapd open ports configuration ... "
     
    331395                msg="* Restarting services ... "
    332396                sys.stdout.write(msg)
    333                 #os.system("/usr/sbin/upstart-manager disable network-manager")
    334                 #os.system("stop network-manager")
    335397                os.system("systemctl stop NetworkManager.service")
    336398                os.system("systemctl mask NetworkManager.service")                     
    337                 #os.system("/etc/init.d/networking restart")
    338399                os.system("systemctl restart networking.service")               
    339                 #os.system("/etc/init.d/dnsmasq restart")
    340400                os.system("systemctl restart dnsmasq.service")         
    341                 #os.system("sudo service squid restart")
    342401                os.system("systemctl restart squid.service")           
    343                 #os.system("sudo service n4d restart")
    344402                os.system("systemctl restart n4d.service")             
    345403                print("OK")
     
    358416               
    359417                if ret[0]:
    360                        
     418                        self.spinner.show()
     419                        self.spinner.start()
    361420                        self.template=var
    362421                        self.process=multiprocessing.Process(target=self.execute)
     
    375434               
    376435               
    377                 self.progress_window.show()
    378                 self.progress_bar.pulse()
     436#               self.progress_window.show()
     437#               self.progress_bar.pulse()
    379438               
    380439                if not self.process.is_alive():
    381                        
    382                         self.progress_window.hide()
     440                        self.spinner.stop()
    383441                        self.open_dialog(_("Network Configuration"),_("Configuration finished."),"dialog-information")
    384442                       
     
    395453                        status=not self.dhcp_radiobutton.get_active()   
    396454               
    397                
    398                 self.manual_expander.set_sensitive(status)
    399                 self.manual_expander.set_expanded(status)
    400                
     455                self.rvl_box.set_reveal_child(status)           
    401456        #def radio_button_changed
    402457       
     
    428483        #def open_dialog
    429484       
     485        def _set_css_info(self):
     486       
     487                css = b"""
     488
     489                GtkEntry{
     490                        font-family: Roboto;
     491                        border:0px;
     492                        border-bottom:1px grey solid;
     493                        margin-top:0px;
     494                        padding-top:0px;
     495                }
     496
     497                GtkComboBox {
     498                        border-bottom:1px grey solid;
     499                }
     500                GtkComboBox *{
     501                        font-family: Roboto;
     502                        border:0px;
     503                        margin-top:0px;
     504                        padding-top:0px;
     505                }
     506
     507                GtkLabel {
     508                        font-family: Roboto;
     509                }
     510
     511                #ENTRY_LABEL{
     512                        color:grey;
     513                        padding:6px;
     514                        padding-bottom:0px;
     515                        margin-bottom:0px;
     516                }
     517
     518
     519                """
     520                self.style_provider=Gtk.CssProvider()
     521                self.style_provider.load_from_data(css)
     522                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
     523        #def set_css_info       
    430524
    431525       
Note: See TracChangeset for help on using the changeset viewer.