Changeset 7981


Ignore:
Timestamp:
Aug 13, 2018, 2:01:36 PM (15 months ago)
Author:
Juanma
Message:

wip on gui

Location:
n4d-network/trunk/fuentes/n4d-nat-frontend.install/usr/share/n4d-nat-frontend
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • n4d-network/trunk/fuentes/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/nat_manager.py

    r6789 r7981  
    22gi.require_version('Gtk','3.0')
    33
    4 from gi.repository import Gtk
     4from gi.repository import Gtk, Gdk,GdkPixbuf,GObject,GLib
     5
    56import xmlrpclib
    67import sys
     
    1617_ = gettext.gettext
    1718
     19MARGIN=6
     20
    1821class NatManager:
    1922       
     
    2124               
    2225                status=self.read_key()
    23                 self.client=xmlrpclib.ServerProxy("https://"+ip+":9779")
    2426               
    2527                if not status:
     
    3335                        dialog.destroy()
    3436                        sys.exit(0)
     37                self.client=xmlrpclib.ServerProxy("https://"+ip+":9779")
    3538                self.status={}
    3639                self.get_status_list()
     
    7881               
    7982                builder=Gtk.Builder()
     83                self._set_css_info()
    8084                builder.set_translation_domain('n4d-nat-frontend')
    8185                if os.path.exists("/srv/svn/pandora/n4d-network/trunk/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/rsrc/nat-manager.glade"):
    8286                        builder.add_from_file("/srv/svn/pandora/n4d-network/trunk/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/rsrc/nat-manager.glade")
    8387                else:
    84                         builder.add_from_file("/usr/share/n4d-nat-frontend/rsrc/nat-manager.ui")
    85                        
    86                 self.window=builder.get_object("window")
    87                
    88                 self.routing_enabled_rbutton=builder.get_object("routing_enabled_radiobutton")
    89                 self.routing_disabled_rbutton=builder.get_object("routing_disabled_radiobutton")
    90                
    91                 self.routing_enabled_rbutton.set_active(self.status["routing"])
    92                 self.routing_disabled_rbutton.set_active(not self.status["routing"])
    93                
    94                 self.nat_enabled_rbutton=builder.get_object("nat_enabled_radiobutton")
    95                 self.nat_disabled_rbutton=builder.get_object("nat_disabled_radiobutton")
    96                
    97                 self.nat_enabled_rbutton.set_active(self.status["nat"])
    98                 self.nat_disabled_rbutton.set_active(not self.status["nat"])
    99 
    100                 self.msg_label=builder.get_object("msg_label")
    101                
    102                 self.apply_button=builder.get_object("apply_button")
    103                 self.close_button=builder.get_object("close_button")
    104                
    105                 self.apply_button.connect("clicked",self.apply_changes)
    106                 self.close_button.connect("clicked",self.close_window)
    107                 self.window.connect("destroy",self.close_window)
    108                
    109                 self.proxy_frame=builder.get_object("proxy_frame")
    110                 self.proxy_enabled_rb=builder.get_object("proxy_enabled_radiobutton")
    111                 self.proxy_disabled_rb=builder.get_object("proxy_disabled_radiobutton")
    112                 self.proxy_enabled_rb.set_active(self.status["proxy"])
    113                 self.proxy_disabled_rb.set_active(not self.status["proxy"])
    114                
    115                 self.nat_enabled_rbutton.connect("toggled",self.routing_changed)
    116                 self.routing_enabled_rbutton.connect("toggled",self.routing_changed)
     88                                #                       builder.add_from_file("/usr/share/n4d-nat-frontend/rsrc/nat-manager.ui")
     89                        builder.add_from_file("rsrc/nat-manager.ui")
     90                ######## <OLD STUFF> ######     
     91#               self.window=builder.get_object("window")
     92               
     93#               nat_frame=builder.get_object("nat_frame")
     94#               routing_frame=builder.get_object("routing_frame")
     95#               nat_frame.set_name("MENU_iTEM")
     96#               self.routing_enabled_rbutton=builder.get_object("routing_enabled_radiobutton")
     97#               self.routing_disabled_rbutton=builder.get_object("routing_disabled_radiobutton")
     98               
     99#               self.routing_enabled_rbutton.set_active(self.status["routing"])
     100#               self.routing_disabled_rbutton.set_active(not self.status["routing"])
     101               
     102#               self.nat_enabled_rbutton=builder.get_object("nat_enabled_radiobutton")
     103#               self.nat_disabled_rbutton=builder.get_object("nat_disabled_radiobutton")
     104               
     105#               self.nat_enabled_rbutton.set_active(self.status["nat"])
     106#               self.nat_disabled_rbutton.set_active(not self.status["nat"])
     107
     108#               self.msg_label=builder.get_object("msg_label")
     109               
     110#               self.apply_button=builder.get_object("apply_button")
     111#               self.close_button=builder.get_object("close_button")
     112               
     113#               self.apply_button.connect("clicked",self.apply_changes)
     114#               self.close_button.connect("clicked",self.close_window)
     115#               self.window.connect("destroy",self.close_window)
     116               
     117#               self.proxy_frame=builder.get_object("proxy_frame")
     118#               self.proxy_enabled_rb=builder.get_object("proxy_enabled_radiobutton")
     119#               self.proxy_disabled_rb=builder.get_object("proxy_disabled_radiobutton")
     120#               self.proxy_enabled_rb.set_active(self.status["proxy"])
     121#               self.proxy_disabled_rb.set_active(not self.status["proxy"])
     122               
     123#               self.nat_enabled_rbutton.connect("toggled",self.routing_changed)
     124#               self.routing_enabled_rbutton.connect("toggled",self.routing_changed)
     125               
     126#               if not self.status["nat"] or not self.status["routing"]:
     127#                       self.proxy_frame.set_sensitive(False)
     128                ######## </OLD STUFF> ######   
     129               
     130                ######## <NEW STUFF> ######     
     131                self.window=Gtk.Window()
     132                vbox=Gtk.VBox()
     133                vbox.set_margin_bottom(MARGIN*2)
     134                grid=Gtk.Grid()
     135                grid.set_column_spacing(MARGIN)
     136                grid.set_column_homogeneous(False)
     137                grid.set_row_spacing(MARGIN)
     138                grid.set_margin_bottom(MARGIN)
     139
     140                pb=GdkPixbuf.Pixbuf.new_from_file("rsrc/nat-manager.png")
     141                img_banner=Gtk.Image.new_from_pixbuf(pb)
     142                img_banner.props.halign=Gtk.Align.CENTER
     143                img_banner.set_margin_top(0)
     144                grid.attach(img_banner,0,0,2,1)
     145
     146                boxrou=Gtk.VBox()
     147                boxrou.set_margin_left(MARGIN*2)
     148                lblrou=Gtk.Label()
     149                lblrou.set_markup('<span size="medium">%s</span>'%_("Routing status"))
     150                boxrou.add(lblrou)
     151                self.lblrou_info=Gtk.Label()
     152                lblrou.props.halign=Gtk.Align.START
     153                self.lblrou_info.props.halign=Gtk.Align.START
     154                self.lblrou_info.set_markup('<span size="small" color="grey">%s</span>'%_("Route traffic through server"))
     155                boxrou.add(self.lblrou_info)
     156                boxrou.props.halign=Gtk.Align.START
     157                grid.attach(boxrou,0,1,1,1)
     158                self.swtrou=Gtk.Switch()
     159                self.swtrou.set_margin_right(MARGIN*2)
     160                self.swtrou.props.halign=Gtk.Align.END
     161                grid.attach(self.swtrou,1,1,1,1)
     162                self.swtrou.set_active(self.status["routing"])
     163
     164                grid.attach(Gtk.Separator(),0,2,2,1)
     165
     166                boxnat=Gtk.VBox()
     167                boxnat.set_margin_left(MARGIN*2)
     168                lblnat=Gtk.Label()
     169                lblnat.set_markup('<span size="medium">%s</span>'%_("NAT status"))
     170                lblnat.props.halign=Gtk.Align.START
     171                boxnat.add(lblnat)
     172                self.lblnat_info=Gtk.Label()
     173                self.lblnat_info.props.halign=Gtk.Align.START
     174                self.lblnat_info.set_markup('<span size="small" color="grey">%s</span>'%_("Redirect server ports to client ports"))
     175                boxnat.add(self.lblnat_info)
     176                boxnat.props.halign=Gtk.Align.START
     177                grid.attach(boxnat,0,3,1,1)
     178                self.swtnat=Gtk.Switch()
     179                self.swtnat.set_margin_right(MARGIN*2)
     180                self.swtnat.props.halign=Gtk.Align.END
     181                grid.attach(self.swtnat,1,3,1,1)
     182                self.swtnat.set_active(self.status["nat"])
     183               
     184                grid.attach(Gtk.Separator(),0,4,2,1)
     185
     186                boxpro=Gtk.VBox()
     187                boxpro.set_margin_left(MARGIN*2)
     188                lblpro=Gtk.Label()
     189                lblpro.props.halign=Gtk.Align.START
     190                lblpro.set_markup('<span size="medium">%s</span>'%_("Proxy status"))
     191                boxpro.add(lblpro)
     192                self.lblpro_info=Gtk.Label()
     193                self.lblpro_info.props.halign=Gtk.Align.START
     194                self.lblpro_info.set_markup('<span size="small" color="grey">%s</span>'%_("Enable proxy in classroom clients"))
     195                boxpro.add(self.lblpro_info)
     196                grid.attach(boxpro,0,5,1,1)
     197                self.swtpro=Gtk.Switch()
     198                self.swtpro.set_margin_right(MARGIN*2)
     199                self.swtpro.props.halign=Gtk.Align.END
     200                grid.attach(self.swtpro,1,5,1,1)
     201                self.swtpro.set_active(self.status["proxy"])
     202
     203                self.swtnat.connect("state-set",self.routing_changed2)
     204                self.swtrou.connect("state-set",self.routing_changed2)
     205                self.swtpro.connect("state-set",self.routing_changed2)
    117206               
    118207                if not self.status["nat"] or not self.status["routing"]:
    119                         self.proxy_frame.set_sensitive(False)
    120                
    121                
     208                        self.swtpro.set_sensitive(False)
     209
     210                vbox.add(grid)
     211                self.window.add(vbox)
     212                ######## </NEW STUFF> #######
     213
    122214                self.window.show_all()
    123215                Gtk.main()
     
    160252        #def set_client_proxy
    161253       
     254        def routing_changed2(self,*args):
     255                widget=args[0]
     256                state=args[-1]
     257                if widget==self.swtrou:
     258                        self.client.set_routing(self.key,"NetworkManager",state,self.status["routing_persistence"])
     259
     260                elif widget==self.swtnat:
     261                        self.client.set_nat(self.key,"NetworkManager",state,self.status["nat_persistence"])
     262                elif widget==self.swtpro:
     263                        self.set_client_proxy(state)
     264
     265                if self.swtrou.get_active() and self.swtnat.get_active():
     266                        self.swtpro.set_sensitive(True)
     267                else:
     268                        self.set_client_proxy(True)
     269                        self.lblpro_info.set_markup('<span size="small" color="grey">%s</span>'%_("Actual state is enabled"))
     270                        self.swtpro.set_sensitive(False)
     271                        self.swtpro.set_state(True)
     272        #def routing_changed2
     273       
    162274        def routing_changed(self,widget):
    163275               
     
    166278                else:
    167279                        self.proxy_frame.set_sensitive(False)
    168                
    169280        #def routing_changed
    170281       
    171282        def close_window(self,widget):
    172                
    173283                Gtk.main_quit()
    174284                sys.exit(0)
    175                
    176285        #def close_window
    177286       
     287        def _set_css_info(self):
     288       
     289                css = b"""
     290
     291                GtkEntry{
     292                        font-family: Roboto;
     293                        border:0px;
     294                        border-bottom:1px grey solid;
     295                        margin-top:0px;
     296                        padding-top:0px;
     297                }
     298
     299                GtkLabel {
     300                        font-family: Roboto;
     301                }
     302
     303                #NOTIF_LABEL{
     304                        background-color: #3366cc;
     305                        font: 11px Roboto;
     306                        color:white;
     307                        border: dashed 1px silver;
     308                        padding:6px;
     309                }
     310
     311                #ERROR_LABEL{
     312                        background-color: red;
     313                        font: 11px Roboto;
     314                        color:white;
     315                        border: dashed 1px silver;
     316                        padding:6px;
     317                }
     318
     319                #ENTRY_LABEL{
     320                        color:grey;
     321                        padding:6px;
     322                        padding-bottom:0px;
     323                }
     324
     325                #PLAIN_BTN,#PLAIN_BTN:active{
     326                        border:0px;
     327                        padding:0px;
     328                        background:white;
     329                }
     330               
     331                #PLAIN_BTN_DISABLED,#PLAIN_BTN_DISABLED:active{
     332                        border:0px;
     333                        padding:0px;
     334                        background:white;
     335                        font:grey;
     336                }
     337
     338                #COMPONENT{
     339                        padding:3px;
     340                        border: dashed 1px silver;
     341
     342                }
     343
     344                #WHITE_BACKGROUND {
     345                        background-color:rgba(255,255,255,1);
     346               
     347                }
     348
     349                #BLUE_FONT {
     350                        color: #3366cc;
     351                        font: Roboto Bold 11;
     352                       
     353                }       
     354               
     355
     356                #TASKGRID_FONT {
     357                        color: #3366cc;
     358                        font: Roboto 11;
     359                       
     360                }
     361
     362                #LABEL #LABEL_INSTALL{
     363                        padding: 6px;
     364                        margin:6px;
     365                        font: 12px Roboto;
     366                }
     367
     368                #LABEL_OPTION{
     369               
     370                        font: 48px Roboto;
     371                        padding: 6px;
     372                        margin:6px;
     373                        font-weight:bold;
     374                }
     375
     376                #ERROR_FONT {
     377                        color: #CC0000;
     378                        font: Roboto Bold 11;
     379                }
     380
     381                #MENUITEM {
     382                        padding: 12px;
     383                        margin:6px;
     384                        font: 24px Roboto;
     385                        background:white;
     386                }
     387
     388                #BLUEBUTTON {
     389                        background-color: #3366cc;
     390                        color:white;
     391                        font: 11px Roboto Bold;
     392                }
     393
     394                """
     395                self.style_provider=Gtk.CssProvider()
     396                self.style_provider.load_from_data(css)
     397                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
     398        #def set_css_info       
    178399       
    179400#class NatManager
  • n4d-network/trunk/fuentes/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/rsrc/nat-manager.ui

    r6784 r7981  
    1515        <property name="spacing">5</property>
    1616        <child>
    17           <object class="GtkFrame" id="frame1">
     17          <object class="GtkImage" id="image4">
     18            <property name="visible">True</property>
     19            <property name="can_focus">False</property>
     20            <property name="pixbuf">nat-manager.png</property>
     21          </object>
     22          <packing>
     23            <property name="expand">False</property>
     24            <property name="fill">True</property>
     25            <property name="position">0</property>
     26          </packing>
     27        </child>
     28        <child>
     29          <object class="GtkFrame" id="routing_frame">
    1830            <property name="visible">True</property>
    1931            <property name="can_focus">False</property>
     
    122134            <property name="expand">True</property>
    123135            <property name="fill">True</property>
    124             <property name="position">0</property>
    125           </packing>
    126         </child>
    127         <child>
    128           <object class="GtkSeparator" id="separator1">
    129             <property name="visible">True</property>
    130             <property name="can_focus">False</property>
    131           </object>
    132           <packing>
    133             <property name="expand">False</property>
    134             <property name="fill">True</property>
    135             <property name="padding">5</property>
    136136            <property name="position">1</property>
    137137          </packing>
    138138        </child>
    139139        <child>
    140           <object class="GtkFrame" id="frame2">
     140          <object class="GtkFrame" id="nat_frame">
    141141            <property name="visible">True</property>
    142142            <property name="can_focus">False</property>
     
    440440          </packing>
    441441        </child>
     442        <child>
     443          <object class="GtkSeparator" id="separator1">
     444            <property name="visible">True</property>
     445            <property name="can_focus">False</property>
     446          </object>
     447          <packing>
     448            <property name="expand">False</property>
     449            <property name="fill">True</property>
     450            <property name="padding">5</property>
     451            <property name="position">7</property>
     452          </packing>
     453        </child>
     454        <child>
     455          <object class="GtkGrid" id="grid_options">
     456            <property name="visible">True</property>
     457            <property name="can_focus">False</property>
     458            <child>
     459              <placeholder/>
     460            </child>
     461            <child>
     462              <placeholder/>
     463            </child>
     464            <child>
     465              <placeholder/>
     466            </child>
     467            <child>
     468              <placeholder/>
     469            </child>
     470            <child>
     471              <placeholder/>
     472            </child>
     473            <child>
     474              <placeholder/>
     475            </child>
     476          </object>
     477          <packing>
     478            <property name="expand">False</property>
     479            <property name="fill">True</property>
     480            <property name="position">8</property>
     481          </packing>
     482        </child>
    442483      </object>
    443484    </child>
Note: See TracChangeset for help on using the changeset viewer.