- def menuitem_cb(self, window, action, widget):
- print self, window, action, widget
-
- def add_collaborator_cb(self, window, action, widget):
- if self.session:
- self.add_session = AddCollaborator(self.session)
-
- def fetch_snapshot_cb(self, window, action, widget):
- if self.session and self.collab and self.collab != g_data.get_user():
- client = ExchangeClientFactory(self.session, self.collab, self.snap, g_data.debug_mode)
- reactor.connectTCP(g_data.get_collab_ip(self.session, self.collab), g_data.port, client)
-
- def preferences_cb(self, window, action, widget):
- self.preferences = Preferences()
-
- def add_session_ok_file_btn_clicked(self, w):
- filename = self.file_sel.get_filename()
- if filename.endswith(".ardour"):
- g_data.add_session(filename[0:filename.rfind("/")+1])
- self.update_session_view()
- else:
- raise_error("Not an Ardour session", self.window)
- self.file_sel.destroy()
-
- def add_session_cb(self, window, action, widget):
- if g_data.get_user():
- self.file_sel = gtk.FileSelection("Add Session...")
- self.file_sel.ok_button.connect("clicked", self.add_session_ok_file_btn_clicked)
- self.file_sel.cancel_button.connect("clicked", lambda w: self.file_sel.destroy())
- self.file_sel.connect("destroy", lambda w: self.file_sel.destroy())
- self.file_sel.show()
- else:
- raise_error("Set the user name in the preferences first", self.window)
-
- def create_session_cb(self, window, action, widget):
- if g_data.get_user():
- self.file_sel = gtk.FileSelection("Create Session...")
- self.file_sel.ok_button.connect("clicked", self.create_file_ok_btn_clicked)
- self.file_sel.cancel_button.connect("clicked", lambda w: self.file_sel.destroy())
- self.file_sel.connect("destroy", lambda w: self.file_sel.destroy())
- self.file_sel.show()
- else:
- raise_error("Set the user name in the preferences first", self.window)
-
- def create_file_ok_btn_clicked(self, w):
- filename = self.file_sel.get_filename()
- if len(filename) > 0:
- g_data.create_session(filename)
- self.update_session_view()
- else:
- raise_error("Not an Ardour session", self.window)
- self.file_sel.destroy()
-
- def update_session_view(self):
- self.session_model.clear()
- for session in g_data.get_sessions():
- self.session_model.set(self.session_model.append(), 0, session)
-
- def update_collab_view(self):
- self.collab_model.clear()
- for collab in g_data.get_collabs(self.session):
- self.collab_model.set(self.collab_model.append(), 0, collab)
-
- def update_snap_view(self):
- self.snap_model.clear()
- for snap in g_data.get_snaps(self.session, self.collab):
- self.snap_model.set(self.snap_model.append(), 0, snap)
-
- def cb_session_selection_changed(self, selection_object):
- selected = []
- selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
- for x in selected:
- self.session = self.session_model[x][0]
- self.selected_type = "session"
- self.update_collab_view()
-
- def cb_collab_selection_changed(self, selection_object):
- selected = []
- selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
- for x in selected:
- self.collab = self.collab_model[x][0]
- self.selected_type = "collab"
- self.update_snap_view()
-
- def cb_snap_selection_changed(self, selection_object):
- selected = []
- selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
- for x in selected:
- self.snap = self.snap_model[x][0]
- self.selected_type = "snap"
-
- def delete_cb(self, window, action, widget):
- if self.selected_type == "session":
- g_data.delete_session(self.session)
- self.session = ""
- self.collab = ""
- self.snap = ""
- elif self.selected_type == "collab":
- g_data.delete_collab(self.session, self.collab)
- self.collab = ""
- self.snap = ""
- elif self.selected_type == "snap":
- g_data.delete_snap(self.session, self.collab, self.snap)
- self.snap = ""
-
- self.update_session_view()
- self.update_collab_view()
- self.update_snap_view()
- self.selected_type = ""
-
- def show_status(self, text):
- mid = self.status_bar.push(self._status_cid, text)
- if self._status_mid:
- self.status_bar.remove(self._status_cid, self._status_mid)
- self._status_mid = mid
-
- def __init__(self):
- self.selected_type = ""
- self.session = ""
- self.collab = g_data.get_user()
- self.snap = ""
-
- self.preferences = 0
- self.add_collab = 0
- self.add_session = 0
-
- self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.window.set_title('Session Exchange')
- self.window.set_size_request(400, 200)
- self.window.connect('destroy', lambda win: gtk.main_quit())
- self.window.set_position(gtk.WIN_POS_MOUSE)
-
- accel_group = gtk.AccelGroup()
- self.window.add_accel_group(accel_group)
-
- main_box = gtk.VBox()
- self.window.add(main_box)
-
- menu_items = (
- ('/_File', None, None, 0, '<Branch>'),
- ('/File/_Add Session...','<control>A', self.add_session_cb, 0, ''),
- ('/File/Create _Session...', '<control>S', self.create_session_cb, 0, ''),
- ('/File/sep1', None, None, 0, '<Separator>'),
- ('/File/_Quit', '<control>Q', gtk.main_quit, 0, '<StockItem>', gtk.STOCK_QUIT),
- ('/_Edit', None, None, 0, '<Branch>' ),
- ('/Edit/Cu_t', '<control>X', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_CUT),
- ('/Edit/_Copy', '<control>C', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_COPY),
- ('/Edit/_Paste', '<control>V', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_PASTE),
- ('/Edit/_Delete', None, self.delete_cb, 0, '<StockItem>', gtk.STOCK_DELETE),
- ('/Edit/sep1', None, None, 0, '<Separator>'),
- ('/Edit/Add Colla_borator...','<control>B', self.add_collaborator_cb,0,''),
- ('/Edit/_Fetch Snapshot','<control>F', self.fetch_snapshot_cb,0,''),
- ('/Edit/sep1', None, None, 0, '<Separator>'),
- ('/Edit/_Preferences...','<control>P', self.preferences_cb, 0, '')
- )
-
- #need to hold a reference to the item_factory or the menubar will disappear.
- self.item_factory = gtk.ItemFactory(gtk.MenuBar, '<main>', accel_group)
- self.item_factory.create_items(menu_items, self.window)
- main_box.pack_start(self.item_factory.get_widget('<main>'), False)
-
- pane1 = gtk.HPaned()
- pane2 = gtk.HPaned()
- pane1.pack2(pane2, True, False)
-
- scroll1 = gtk.ScrolledWindow()
- scroll1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- pane1.pack1(scroll1, True, False)
- scroll2 = gtk.ScrolledWindow()
- scroll2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- pane2.pack1(scroll2, True, False)
- scroll3 = gtk.ScrolledWindow()
- scroll3.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- pane2.pack2(scroll3, True, False)
-
- self.session_model = gtk.ListStore(gobject.TYPE_STRING)
- view1 = gtk.TreeView(self.session_model)
- column1 = gtk.TreeViewColumn('Sessions', gtk.CellRendererText(), text=0)
- view1.append_column(column1)
- self.session_selection = view1.get_selection()
- self.session_selection.connect("changed", self.cb_session_selection_changed)
- scroll1.add(view1)
-
- self.update_session_view()
-
- self.collab_model = gtk.ListStore(gobject.TYPE_STRING)
- view2 = gtk.TreeView(self.collab_model)
- column2 = gtk.TreeViewColumn('Collaborators', gtk.CellRendererText(), text=0)
- view2.append_column(column2)
- self.collab_selection = view2.get_selection()
- self.collab_selection.connect("changed", self.cb_collab_selection_changed)
- scroll2.add(view2)
-
- self.snap_model = gtk.ListStore(gobject.TYPE_STRING)
- view3 = gtk.TreeView(self.snap_model)
- column3 = gtk.TreeViewColumn('Snapshots', gtk.CellRendererText(), text=0)
- view3.append_column(column3)
- self.snap_selection = view3.get_selection()
- self.snap_selection.connect("changed", self.cb_snap_selection_changed)
- scroll3.add(view3)
-
- main_box.pack_start(pane1, True, True)
-
- self.status_bar = gtk.Statusbar()
- main_box.pack_start(self.status_bar, False)
- self._status_cid = self.status_bar.get_context_id('display')
- self._status_mid = ''
-
- self.window.show_all()
+ def menuitem_cb(self, window, action, widget):
+ print self, window, action, widget
+
+ def add_collaborator_cb(self, window, action, widget):
+ if self.session:
+ self.add_session = AddCollaborator(self.session)
+
+ def fetch_snapshot_cb(self, window, action, widget):
+ if self.session and self.collab and self.collab != g_data.get_user():
+ client = ExchangeClientFactory(self.session, self.collab, self.snap, g_data.debug_mode)
+ reactor.connectTCP(g_data.get_collab_ip(self.session, self.collab), g_data.port, client)
+
+ def preferences_cb(self, window, action, widget):
+ self.preferences = Preferences()
+
+ def add_session_ok_file_btn_clicked(self, w):
+ filename = self.file_sel.get_filename()
+ if filename.endswith(".ardour"):
+ g_data.add_session(filename[0:filename.rfind("/")+1])
+ self.update_session_view()
+ else:
+ raise_error("Not an Ardour session", self.window)
+ self.file_sel.destroy()
+
+ def add_session_cb(self, window, action, widget):
+ if g_data.get_user():
+ self.file_sel = gtk.FileSelection("Add Session...")
+ self.file_sel.ok_button.connect("clicked", self.add_session_ok_file_btn_clicked)
+ self.file_sel.cancel_button.connect("clicked", lambda w: self.file_sel.destroy())
+ self.file_sel.connect("destroy", lambda w: self.file_sel.destroy())
+ self.file_sel.show()
+ else:
+ raise_error("Set the user name in the preferences first", self.window)
+
+ def create_session_cb(self, window, action, widget):
+ if g_data.get_user():
+ self.file_sel = gtk.FileSelection("Create Session...")
+ self.file_sel.ok_button.connect("clicked", self.create_file_ok_btn_clicked)
+ self.file_sel.cancel_button.connect("clicked", lambda w: self.file_sel.destroy())
+ self.file_sel.connect("destroy", lambda w: self.file_sel.destroy())
+ self.file_sel.show()
+ else:
+ raise_error("Set the user name in the preferences first", self.window)
+
+ def create_file_ok_btn_clicked(self, w):
+ filename = self.file_sel.get_filename()
+ if len(filename) > 0:
+ g_data.create_session(filename)
+ self.update_session_view()
+ else:
+ raise_error("Not an Ardour session", self.window)
+ self.file_sel.destroy()
+
+ def update_session_view(self):
+ self.session_model.clear()
+ for session in g_data.get_sessions():
+ self.session_model.set(self.session_model.append(), 0, session)
+
+ def update_collab_view(self):
+ self.collab_model.clear()
+ for collab in g_data.get_collabs(self.session):
+ self.collab_model.set(self.collab_model.append(), 0, collab)
+
+ def update_snap_view(self):
+ self.snap_model.clear()
+ for snap in g_data.get_snaps(self.session, self.collab):
+ self.snap_model.set(self.snap_model.append(), 0, snap)
+
+ def cb_session_selection_changed(self, selection_object):
+ selected = []
+ selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
+ for x in selected:
+ self.session = self.session_model[x][0]
+ self.selected_type = "session"
+ self.update_collab_view()
+
+ def cb_collab_selection_changed(self, selection_object):
+ selected = []
+ selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
+ for x in selected:
+ self.collab = self.collab_model[x][0]
+ self.selected_type = "collab"
+ self.update_snap_view()
+
+ def cb_snap_selection_changed(self, selection_object):
+ selected = []
+ selection_object.selected_foreach(lambda model, path, iter, sel = selected: sel.append(path))
+ for x in selected:
+ self.snap = self.snap_model[x][0]
+ self.selected_type = "snap"
+
+ def delete_cb(self, window, action, widget):
+ if self.selected_type == "session":
+ g_data.delete_session(self.session)
+ self.session = ""
+ self.collab = ""
+ self.snap = ""
+ elif self.selected_type == "collab":
+ g_data.delete_collab(self.session, self.collab)
+ self.collab = ""
+ self.snap = ""
+ elif self.selected_type == "snap":
+ g_data.delete_snap(self.session, self.collab, self.snap)
+ self.snap = ""
+
+ self.update_session_view()
+ self.update_collab_view()
+ self.update_snap_view()
+ self.selected_type = ""
+
+ def show_status(self, text):
+ mid = self.status_bar.push(self._status_cid, text)
+ if self._status_mid:
+ self.status_bar.remove(self._status_cid, self._status_mid)
+ self._status_mid = mid
+
+ def __init__(self):
+ self.selected_type = ""
+ self.session = ""
+ self.collab = g_data.get_user()
+ self.snap = ""
+
+ self.preferences = 0
+ self.add_collab = 0
+ self.add_session = 0
+
+ self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ self.window.set_title('Session Exchange')
+ self.window.set_size_request(400, 200)
+ self.window.connect('destroy', lambda win: gtk.main_quit())
+ self.window.set_position(gtk.WIN_POS_MOUSE)
+
+ accel_group = gtk.AccelGroup()
+ self.window.add_accel_group(accel_group)
+
+ main_box = gtk.VBox()
+ self.window.add(main_box)
+
+ menu_items = (
+ ('/_File', None, None, 0, '<Branch>'),
+ ('/File/_Add Session...','<control>A', self.add_session_cb, 0, ''),
+ ('/File/Create _Session...', '<control>S', self.create_session_cb, 0, ''),
+ ('/File/sep1', None, None, 0, '<Separator>'),
+ ('/File/_Quit', '<control>Q', gtk.main_quit, 0, '<StockItem>', gtk.STOCK_QUIT),
+ ('/_Edit', None, None, 0, '<Branch>' ),
+ ('/Edit/Cu_t', '<control>X', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_CUT),
+ ('/Edit/_Copy', '<control>C', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_COPY),
+ ('/Edit/_Paste', '<control>V', self.menuitem_cb, 0, '<StockItem>', gtk.STOCK_PASTE),
+ ('/Edit/_Delete', None, self.delete_cb, 0, '<StockItem>', gtk.STOCK_DELETE),
+ ('/Edit/sep1', None, None, 0, '<Separator>'),
+ ('/Edit/Add Colla_borator...','<control>B', self.add_collaborator_cb,0,''),
+ ('/Edit/_Fetch Snapshot','<control>F', self.fetch_snapshot_cb,0,''),
+ ('/Edit/sep1', None, None, 0, '<Separator>'),
+ ('/Edit/_Preferences...','<control>P', self.preferences_cb, 0, '')
+ )
+
+ #need to hold a reference to the item_factory or the menubar will disappear.
+ self.item_factory = gtk.ItemFactory(gtk.MenuBar, '<main>', accel_group)
+ self.item_factory.create_items(menu_items, self.window)
+ main_box.pack_start(self.item_factory.get_widget('<main>'), False)
+
+ pane1 = gtk.HPaned()
+ pane2 = gtk.HPaned()
+ pane1.pack2(pane2, True, False)
+
+ scroll1 = gtk.ScrolledWindow()
+ scroll1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ pane1.pack1(scroll1, True, False)
+ scroll2 = gtk.ScrolledWindow()
+ scroll2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ pane2.pack1(scroll2, True, False)
+ scroll3 = gtk.ScrolledWindow()
+ scroll3.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ pane2.pack2(scroll3, True, False)
+
+ self.session_model = gtk.ListStore(gobject.TYPE_STRING)
+ view1 = gtk.TreeView(self.session_model)
+ column1 = gtk.TreeViewColumn('Sessions', gtk.CellRendererText(), text=0)
+ view1.append_column(column1)
+ self.session_selection = view1.get_selection()
+ self.session_selection.connect("changed", self.cb_session_selection_changed)
+ scroll1.add(view1)
+
+ self.update_session_view()
+
+ self.collab_model = gtk.ListStore(gobject.TYPE_STRING)
+ view2 = gtk.TreeView(self.collab_model)
+ column2 = gtk.TreeViewColumn('Collaborators', gtk.CellRendererText(), text=0)
+ view2.append_column(column2)
+ self.collab_selection = view2.get_selection()
+ self.collab_selection.connect("changed", self.cb_collab_selection_changed)
+ scroll2.add(view2)
+
+ self.snap_model = gtk.ListStore(gobject.TYPE_STRING)
+ view3 = gtk.TreeView(self.snap_model)
+ column3 = gtk.TreeViewColumn('Snapshots', gtk.CellRendererText(), text=0)
+ view3.append_column(column3)
+ self.snap_selection = view3.get_selection()
+ self.snap_selection.connect("changed", self.cb_snap_selection_changed)
+ scroll3.add(view3)
+
+ main_box.pack_start(pane1, True, True)
+
+ self.status_bar = gtk.Statusbar()
+ main_box.pack_start(self.status_bar, False)
+ self._status_cid = self.status_bar.get_context_id('display')
+ self._status_mid = ''
+
+ self.window.show_all()