-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy project-wide -->
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-clear</property>
+ </object>
<object class="GtkWindow" id="main_window">
+ <property name="can_focus">False</property>
<property name="window_position">center</property>
<property name="default_width">800</property>
<property name="default_height">600</property>
- <signal name="destroy" handler="on_main_window_destroy"/>
- <signal name="key_press_event" handler="on_main_window_key_press_event"/>
+ <signal name="destroy" handler="on_main_window_destroy" swapped="no"/>
+ <signal name="key-press-event" handler="on_main_window_key_press_event" swapped="no"/>
<child>
<object class="GtkVBox" id="vbox">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkViewport" id="menubar_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkMenuBar" id="menubar">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="menuitem">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu_file">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="connect_all_item">
<property name="label">gtk-connect</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <signal name="activate" handler="on_connect_all_item_activate"/>
+ <signal name="activate" handler="on_connect_all_item_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="disconnect_all_item">
<property name="label">gtk-disconnect</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <signal name="activate" handler="on_disconnect_all_item_activate"/>
+ <signal name="activate" handler="on_disconnect_all_item_activate" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="quit_item">
<property name="label">gtk-quit</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <signal name="activate" handler="on_quit_item_activate"/>
+ <signal name="activate" handler="on_quit_item_activate" swapped="no"/>
</object>
</child>
</object>
<child>
<object class="GtkMenuItem" id="menuitem2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu_edit">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="clear_log_item">
<property name="label">Clear Log</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="image">image2</property>
<property name="use_stock">False</property>
- <signal name="activate" handler="on_clear_log_activate"/>
+ <signal name="activate" handler="on_clear_log_activate" swapped="no"/>
</object>
</child>
</object>
<child>
<object class="GtkMenuItem" id="menuitem3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu_view">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="connection_info_item">
<property name="label">Connection Details</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="image">image1</property>
<property name="use_stock">False</property>
- <signal name="activate" handler="on_connection_info_item_activate"/>
+ <signal name="activate" handler="on_connection_info_item_activate" swapped="no"/>
</object>
</child>
</object>
<child>
<object class="GtkMenuItem" id="menuitem4">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="label" translatable="yes">_Help</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu_help">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="about_item">
<property name="label">gtk-about</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <signal name="activate" handler="on_about_item_activate"/>
+ <signal name="activate" handler="on_about_item_activate" swapped="no"/>
</object>
</child>
</object>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkViewport" id="toolbar_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkToolbar" id="toolbar">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkToolButton" id="connect_all_button">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="is_important">True</property>
<property name="label" translatable="yes">Connect All</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-connect</property>
- <signal name="clicked" handler="on_connect_all_button_clicked"/>
+ <signal name="clicked" handler="on_connect_all_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<child>
<object class="GtkToolButton" id="disconnect_all_button">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="is_important">True</property>
<property name="label" translatable="yes">Disconnect All</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-disconnect</property>
- <signal name="clicked" handler="on_disconnect_all_button_clicked"/>
+ <signal name="clicked" handler="on_disconnect_all_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<child>
<object class="GtkSeparatorToolItem" id="toolbutton3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<child>
<object class="GtkToolButton" id="clear_log_button">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
<property name="is_important">True</property>
<property name="label" translatable="yes">Clear Log</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-clear</property>
- <signal name="clicked" handler="on_clear_log_button_clicked"/>
+ <signal name="clicked" handler="on_clear_log_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tab_pos">left</property>
- <property name="homogeneous">True</property>
- <signal name="switch_page" handler="on_utility_notebook_switch_page"/>
+ <signal name="switch-page" handler="on_utility_notebook_switch_page" swapped="no"/>
<child>
<object class="GtkViewport" id="launcher_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">3</property>
- <property name="orientation">vertical</property>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="xpad">5</property>
<child>
<object class="GtkLabel" id="server_label">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">Unknown</property>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="xpad">5</property>
<child>
<object class="GtkLabel" id="username_label">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">Unknown</property>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="xpad">5</property>
<child>
<object class="GtkLabel" id="status_label">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Unknown</property>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="messages_textview">
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lblServerOptions">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Server Options</property>
</object>
<packing>
<child>
<object class="GtkViewport" id="sam_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<child type="tab">
<object class="GtkLabel" id="lblUserManager">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">User Manager</property>
</object>
<packing>
</packing>
</child>
<child>
- <object class="GtkViewport" id="regedit_viewport">
+ <object class="GtkViewport" id="srvsvc_viewport">
<property name="visible">True</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<property name="position">2</property>
</packing>
</child>
+ <child type="tab">
+ <object class="GtkLabel" id="lblShareManager">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Share Manager</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkViewport" id="regedit_viewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
<child type="tab">
<object class="GtkLabel" id="lblRegEdit">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Registry Editor</property>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkViewport" id="svcctl_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
</child>
</object>
<packing>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lblServicesManager">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Services Manager</property>
</object>
<packing>
- <property name="position">3</property>
+ <property name="position">4</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkViewport" id="crontab_viewport">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
</child>
</object>
<packing>
- <property name="position">4</property>
+ <property name="position">5</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lblTaskScheduler">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Task Scheduler</property>
</object>
<packing>
- <property name="position">4</property>
+ <property name="position">5</property>
<property name="tab_fill">False</property>
</packing>
</child>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="statusbar_hbox">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
<object class="GtkProgressBar" id="progressbar">
+ <property name="can_focus">False</property>
<property name="fraction">0.5</property>
</object>
<packing>
<child>
<object class="GtkStatusbar" id="statusbar">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="spacing">2</property>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-missing-image</property>
- </object>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="stock">gtk-clear</property>
- </object>
</interface>
import os.path
import getopt
+sys.path.append('/usr/local/samba/lib/python2.7/site-packages/')
+
+
import pygwsam
import pygwregedit
import pygwcrontab
self.svcctl_viewport = builder.get_object("svcctl_viewport")
self.crontab_viewport = builder.get_object("crontab_viewport")
self.regedit_viewport = builder.get_object("regedit_viewport")
+ self.srvsvc_viewport = builder.get_object("srvsvc_viewport")
self.progressbar = builder.get_object("progressbar")
self.statusbar = builder.get_object("statusbar")
self.set_status("User tab initialized.")
self.update_sensitivity()
+
+ def init_srvsvc_page(self):
+
+ args = self.connection_args.copy()
+ if self.additional_connection_args.has_key("info_callback"):
+ args.update({"info_callback":self.additional_connection_args["info_callback"]})
+
+ self.srvsvc_window = pygwshare.ShareWindow(**args) #start up the utility
+ self.srvsvc_window.share_notebook.reparent(self.srvsvc_viewport) #reparent the main widget into a notebook tab
+ self.srvsvc_viewport.show_all() #unhide all widgets
+
+ #We'll be displaying this later. We need to unparent it before attaching it to another container
+ #self.srvsvc_window.menubar.unparent()
+ #self.srvsvc_window.toolbar.unparent()
+ self.srvsvc_window.statusbar = self.statusbar #we simply tell the utility to use our status bar instead
+
+ self.set_status("Share Manager tab initialized.")
+ self.update_sensitivity()
def init_regedit_page(self):
args = self.connection_args.copy()
def regedit_initialized(self):
return self.regedit_window is not None
-
+
+ def srvsvc_initialized (self):
+ return self.srvsvc_window is not None
+
def svcctl_initialized(self):
return self.svcctl_window is not None
def update_sensitivity(self):
sam_connected = self.sam_initialized() and self.sam_window.connected()
+ srvsvc_connected = self.srvsvc_initialized() and self.srvsvc_window.connected()
regedit_connected = self.regedit_initialized() and self.regedit_window.connected()
svcctl_connected = self.svcctl_initialized() and self.svcctl_window.connected()
crontab_connected = self.crontab_initialized() and self.crontab_window.connected()
- all_connected = sam_connected and regedit_connected and svcctl_connected and crontab_connected
- all_disconnected = (not sam_connected) and (not regedit_connected) and (not svcctl_connected) and (not crontab_connected)
+ all_connected = sam_connected and regedit_connected and svcctl_connected and crontab_connected and srvsvc_connected
+ all_disconnected = (not sam_connected) and (not regedit_connected) and (not svcctl_connected) and (not crontab_connected) and (not srvsvc_connected)
self.connect_all_button.set_sensitive(not all_connected)
self.disconnect_all_button.set_sensitive(not all_disconnected)
connected_utilities = []
if sam_connected:
connected_utilities.append("User Manager")
+ if srvsvc_connected:
+ connected_utilities.append("Share Manager")
if regedit_connected:
connected_utilities.append("Registry Editor")
if svcctl_connected:
if current_page == 1:
self.sam_window.on_key_press(widget, event)
elif current_page == 2:
- self.regedit_window.on_key_press(widget, event)
+ self.srvsvc_window.on_key_press(widget, event)
elif current_page == 3:
- self.svcctl_window.on_key_press(widget, event)
+ self.regedit_window.on_key_press(widget, event)
elif current_page == 4:
+ self.svcctl_window.on_key_press(widget, event)
+ elif current_page == 5:
self.crontab_window.on_key_press(widget, event)
def on_utility_notebook_switch_page(self, widget, page, page_num):
self.toolbar_viewport.add(self.sam_window.toolbar)
self.toolbar_viewport.show_all()
- elif page_num == 2: #Regedit page
+
+ elif page_num == 2: #Share page
+ if self.srvsvc_viewport.child == None:
+ self.init_srvsvc_page()
+
+ #Menubar
+ children = self.menubar_viewport.get_children()
+ self.menubar_viewport.remove(children[0])
+ self.srvsvc_window.menubar.reparent(self.menubar_viewport)
+ #self.menubar_viewport.add(self.srvsvc_window.menubar)
+ self.menubar_viewport.show_all()
+
+ #Toolbar
+ children = self.toolbar_viewport.get_children()
+ self.toolbar_viewport.remove(children[0])
+ self.srvsvc_window.toolbar.unparent()
+ self.toolbar_viewport.add(self.srvsvc_window.toolbar)
+ self.toolbar_viewport.show_all()
+
+ self.srvsvc_window.hide()
+
+ elif page_num == 3: #Regedit page
if self.regedit_viewport.child == None:
self.init_regedit_page()
self.toolbar_viewport.add(self.regedit_window.toolbar)
self.toolbar_viewport.show_all()
- elif page_num == 3: #Services page
+ elif page_num == 4: #Services page
if self.svcctl_viewport.child == None:
self.init_svcctl_page()
self.toolbar_viewport.add(self.svcctl_window.toolbar)
self.toolbar_viewport.show_all()
- elif page_num == 4: #Crontab page
+ elif page_num == 5: #Crontab page
if self.crontab_viewport.child == None:
self.init_crontab_page()
self.sam_window.on_connect_item_activate(None, **self.connection_args)
else:
self.init_sam_page()
+
+ if self.srvsvc_initialized():
+ if not self.srvsvc_window.connected():
+ self.srvsvc_window.on_connect_item_activate(None, **self.connection_args)
+ else:
+ self.init_srvsvc_page()
if self.regedit_initialized():
if not self.regedit_window.connected():
def on_disconnect_all_button_clicked(self, widget):
if self.sam_initialized():
self.sam_window.on_disconnect_item_activate(None)
+ if self.srvsvc_initialized():
+ self.srvsvc_window.on_disconnect_item_activate(None)
if self.regedit_initialized():
self.regedit_window.on_disconnect_item_activate(None)
if self.svcctl_initialized():
arguments.update({"connect_now":True})
return (arguments)
-
+"""
if __name__ == "__main__":
arguments = ParseArgs(sys.argv[1:])
gtk.gdk.threads_init()
main_window = SambaUtilities(arguments)
sys.stdout = main_window #redirect print statements to the write() function of this class
gtk.main()
+"""