2 # -*- coding: utf-8 -*-
4 """ srvsvc related dialogues"""
12 class srvsvcConnectDialog(gtk.Dialog):
23 super(srvsvcConnectDialog, self).__init__()
25 self.server_address = server
26 self.username = username
27 self.password = password
28 self.transport_type = transport_type
32 self.update_sensitivity()
35 self.set_title('Connect to Samba Share Server')
36 self.set_border_width(5)
37 self.set_icon_name(gtk.STOCK_CONNECT)
38 self.set_resizable(False)
40 self.vbox.set_spacing(5)
44 self.artwork = gtk.VBox()
46 self.samba_image_filename = os.path.join(sys.path[0], 'images',
47 'samba-logo-small.png')
48 self.samba_image = gtk.Image()
49 self.samba_image.set_from_file(self.samba_image_filename)
50 self.artwork.pack_start(self.samba_image, True, True, 0)
52 label = gtk.Label('Opening Windows to A Wider World')
54 box.pack_start(label, True, True, 0)
55 self.artwork.pack_start(box, True, True, 0)
57 label = gtk.Label('Samba Control Center')
59 box.pack_start(label, True, True, 0)
60 self.artwork.pack_start(box, True, True, 0)
62 self.vbox.pack_start(self.artwork, False, True, 0)
66 self.server_frame = gtk.Frame('Server')
67 self.vbox.pack_start(self.server_frame, False, True, 0)
69 table = gtk.Table(3, 2)
70 table.set_border_width(5)
71 self.server_frame.add(table)
73 label = gtk.Label(' Server address: ')
74 label.set_alignment(0, 0.5)
75 table.attach(label, 0, 1, 0, 1, gtk.FILL,gtk.FILL | gtk.EXPAND, 0, 0)
77 self.server_address_entry = gtk.Entry()
78 self.server_address_entry.set_text(self.server_address)
79 self.server_address_entry.set_activates_default(True)
80 self.server_address_entry.set_tooltip_text('Enter the Server Address')
81 table.attach(self.server_address_entry, 1, 2, 0, 1, gtk.FILL | gtk.EXPAND, gtk.FILL | gtk.EXPAND, 1, 1)
83 label = gtk.Label(' Username: ')
84 label.set_alignment(0, 0.5)
85 table.attach(label,0,1,1,2,gtk.FILL,gtk.FILL | gtk.EXPAND,0,0)
87 self.username_entry = gtk.Entry()
88 self.username_entry.set_text(self.username)
89 self.username_entry.set_activates_default(True)
90 self.username_entry.set_tooltip_text('Enter your Username')
91 table.attach(self.username_entry,1,2,1,2,gtk.FILL | gtk.EXPAND,gtk.FILL | gtk.EXPAND,1,1)
92 label = gtk.Label(' Password: ')
93 label.set_alignment(0, 0.5)
94 table.attach(label, 0, 1, 2, 3, gtk.FILL,gtk.FILL | gtk.EXPAND, 0, 0)
96 self.password_entry = gtk.Entry()
97 self.password_entry.set_text(self.password)
98 self.password_entry.set_visibility(False)
99 self.password_entry.set_activates_default(True)
100 self.password_entry.set_tooltip_text('Enter your Password')
101 table.attach(self.password_entry, 1, 2, 2, 3, gtk.FILL | gtk.EXPAND, gtk.FILL | gtk.EXPAND, 1, 1)
105 self.transport_frame = gtk.Frame(' Transport type ')
106 self.vbox.pack_start(self.transport_frame, False, True, 0)
109 vbox.set_border_width(5)
110 self.transport_frame.add(vbox)
112 self.rpc_smb_tcpip_radio_button = gtk.RadioButton(None,
113 'RPC over SMB over TCP/IP ')
114 self.rpc_smb_tcpip_radio_button.set_tooltip_text('ncacn_np type : Recomended (default)'
115 ) # # according MS-SRVS specification
116 self.rpc_smb_tcpip_radio_button.set_active(self.transport_type
118 vbox.pack_start(self.rpc_smb_tcpip_radio_button)
120 self.rpc_tcpip_radio_button = \
121 gtk.RadioButton(self.rpc_smb_tcpip_radio_button,
123 self.rpc_tcpip_radio_button.set_tooltip_text('ncacn_ip_tcp type')
124 self.rpc_tcpip_radio_button.set_active(self.transport_type == 1)
125 vbox.pack_start(self.rpc_tcpip_radio_button)
127 self.localhost_radio_button = \
128 gtk.RadioButton(self.rpc_tcpip_radio_button, 'Localhost')
129 self.localhost_radio_button.set_tooltip_text('ncalrpc type') # # MS-SRVS specification
130 self.localhost_radio_button.set_active(self.transport_type == 2)
131 vbox.pack_start(self.localhost_radio_button)
133 self.action_area.set_layout(gtk.BUTTONBOX_END)
135 self.cancel_button = gtk.Button('Cancel', gtk.STOCK_CANCEL)
136 self.cancel_button.set_tooltip_text('Cancel and Quit')
137 self.add_action_widget(self.cancel_button, gtk.RESPONSE_CANCEL)
139 self.connect_button = gtk.Button('Connect', gtk.STOCK_CONNECT)
140 self.connect_button.set_flags(gtk.CAN_DEFAULT)
141 self.connect_button.set_tooltip_text('OK / Connect to Server')
142 self.add_action_widget(self.connect_button, gtk.RESPONSE_OK)
144 self.set_default_response(gtk.RESPONSE_OK)
146 self.rpc_smb_tcpip_radio_button.connect('toggled',
147 self.on_radio_button_toggled)
148 self.rpc_tcpip_radio_button.connect('toggled',
149 self.on_radio_button_toggled)
150 self.localhost_radio_button.connect('toggled',
151 self.on_radio_button_toggled)
153 def get_server_address(self):
154 return self.server_address_entry.get_text().strip()
156 def get_username(self):
157 return self.username_entry.get_text().strip()
159 def get_password(self):
160 return self.password_entry.get_text()
162 def update_sensitivity(self):
164 not self.localhost_radio_button.get_active()
165 self.server_address_entry.set_sensitive(server_required)
167 def get_transport_type(self):
168 if self.rpc_smb_tcpip_radio_button.get_active():
170 elif self.rpc_tcpip_radio_button.get_active():
172 elif self.localhost_radio_button.get_active():
177 def on_radio_button_toggled(self, widget):
178 self.update_sensitivity()
181 class ShareAddEditDialog(gtk.Dialog):
183 """ Share add and edit dialog
185 If 'edit_mode' is set to True then in Edit mode .
186 Immutable fields are automatically greyed out.
189 def __init__(self, pipe_manager, share=None):
190 """ Class initialiser """
191 super(ShareAddEditDialog, self).__init__()
192 self.pipe = pipe_manager
202 """ Create the window """
203 self.set_title([" New Share"," Edit Share : "][self.edit_mode]+ " " + self.share.name)
204 self.set_border_width(5)
205 self.icon_name = ["network-folder","network-printer","network-pipe"][self.share_category]
206 self.set_icon_from_file(os.path.join(sys.path[0], "images", self.icon_name))