[beast: 4/12] BST: adjust to use Item.get_project() and Item.[un]group_undo()



commit ccf38801708838ec9c7520e0b94d364e5db3a0fe
Author: Tim Janik <timj gnu org>
Date:   Thu Sep 7 03:53:07 2017 +0200

    BST: adjust to use Item.get_project() and Item.[un]group_undo()
    
    Signed-off-by: Tim Janik <timj gnu org>

 beast-gtk/bstapp.cc            |    4 ++--
 beast-gtk/bstbusmixer.cc       |    4 ++--
 beast-gtk/bstcanvassource.cc   |    6 +++---
 beast-gtk/bsteventrollctrl.cc  |   24 ++++++++++++------------
 beast-gtk/bstparam.cc          |   10 +++++-----
 beast-gtk/bstparamview.cc      |    8 ++++----
 beast-gtk/bstpartdialog.cc     |   11 +++++------
 beast-gtk/bstpatterncolumns.cc |   12 ++++++------
 beast-gtk/bstpianorollctrl.cc  |   24 ++++++++++++------------
 beast-gtk/bstsnetrouter.cc     |    4 ++--
 beast-gtk/bsttrackrollctrl.cc  |   12 ++++++------
 beast-gtk/bsttrackview.cc      |   19 ++++++++++---------
 12 files changed, 69 insertions(+), 69 deletions(-)
---
diff --git a/beast-gtk/bstapp.cc b/beast-gtk/bstapp.cc
index b3bf070..3495966 100644
--- a/beast-gtk/bstapp.cc
+++ b/beast-gtk/bstapp.cc
@@ -888,12 +888,12 @@ app_action_exec (gpointer data,
       bst_file_dialog_popup_save_instrument (self, self->project, bst_app_get_current_super (self));
       break;
     case BST_ACTION_NEW_SONG:
-      bse_item_group_undo (self->project.proxy_id(), "Create Song");
+      self->project.group_undo ("Create Song");
       {
         Bse::SongH song = self->project.create_song ("");
         song.ensure_master_bus();
       }
-      bse_item_ungroup_undo (self->project.proxy_id());
+      self->project.ungroup_undo();
       self->select_unseen_super = TRUE;
       break;
     case BST_ACTION_NEW_CSYNTH:
diff --git a/beast-gtk/bstbusmixer.cc b/beast-gtk/bstbusmixer.cc
index 7d46d98..4253f7c 100644
--- a/beast-gtk/bstbusmixer.cc
+++ b/beast-gtk/bstbusmixer.cc
@@ -176,14 +176,14 @@ bus_mixer_action_exec (gpointer data,
     {
     case ACTION_ADD_BUS:
       {
-        bse_item_group_undo (song.proxy_id(), "Create Bus");
+        song.group_undo ("Create Bus");
         Bse::BusH bus = song.create_bus();
         if (bus)
           {
             bus.ensure_output();
             bst_item_view_select (iview, bus.proxy_id());
           }
-        bse_item_ungroup_undo (song.proxy_id());
+        song.ungroup_undo();
       }
       break;
     case ACTION_DELETE_BUS:
diff --git a/beast-gtk/bstcanvassource.cc b/beast-gtk/bstcanvassource.cc
index 3868c7b..0c0dade 100644
--- a/beast-gtk/bstcanvassource.cc
+++ b/beast-gtk/bstcanvassource.cc
@@ -194,7 +194,7 @@ bst_canvas_source_destroy (GtkObject *object)
   if (csource->in_move)
     {
       csource->in_move = FALSE;
-      bse_item_ungroup_undo (csource->source.proxy_id());
+      csource->source.ungroup_undo();
     }
 
   while (csource->channel_hints)
@@ -928,7 +928,7 @@ bst_canvas_source_event (GnomeCanvasItem *item,
               csource->move_dx = x;
               csource->move_dy = y;
               csource->in_move = TRUE;
-              bse_item_group_undo (csource->source.proxy_id(), "Move");
+              csource->source.group_undo ("Move");
             }
          gdk_cursor_destroy (fleur);
          handled = TRUE;
@@ -977,7 +977,7 @@ bst_canvas_source_event (GnomeCanvasItem *item,
     case GDK_BUTTON_RELEASE:
       if (bst_mouse_button_move (event) && csource->in_move)
        {
-          bse_item_ungroup_undo (csource->source.proxy_id());
+          csource->source.ungroup_undo();
          csource->in_move = FALSE;
          gnome_canvas_item_ungrab (item, event->button.time);
          handled = TRUE;
diff --git a/beast-gtk/bsteventrollctrl.cc b/beast-gtk/bsteventrollctrl.cc
index e8b6636..448fc39 100644
--- a/beast-gtk/bsteventrollctrl.cc
+++ b/beast-gtk/bsteventrollctrl.cc
@@ -264,13 +264,13 @@ bst_event_roll_controller_clear (BstEventRollController *self)
 
   Bse::PartH part = self->eroll->part;
   const Bse::PartControlSeq &cseq = part.list_selected_controls (CONTROL_TYPE (self));
-  bse_item_group_undo (part.proxy_id(), "Clear Selection");
+  part.group_undo ("Clear Selection");
   for (size_t i = 0; i < cseq.size(); i++)
     {
       const Bse::PartControl &pctrl = cseq[i];
       part.delete_event (pctrl.id);
     }
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 void
@@ -280,14 +280,14 @@ bst_event_roll_controller_cut (BstEventRollController *self)
 
   Bse::PartH part = self->eroll->part;
   const Bse::PartControlSeq &cseq = part.list_selected_controls (CONTROL_TYPE (self));
-  bse_item_group_undo (part.proxy_id(), "Cut Selection");
+  part.group_undo ("Cut Selection");
   for (size_t i = 0; i < cseq.size(); i++)
     {
       const Bse::PartControl &pctrl = cseq[i];
       part.delete_event (pctrl.id);
     }
   bst_event_roll_controller_set_clipboard (cseq);
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 gboolean
@@ -318,7 +318,7 @@ bst_event_roll_controller_paste (BstEventRollController *self)
       const Bse::PartControl &pctrl = (*cseq)[i];
       ctick = MIN (ctick, uint (pctrl.tick));
     }
-  bse_item_group_undo (part.proxy_id(), "Paste Clipboard");
+  part.group_undo ("Paste Clipboard");
   part.deselect_controls (0, self->eroll->max_ticks, CONTROL_TYPE (self));
   for (size_t i = 0; i < cseq->size(); i++)
     {
@@ -327,7 +327,7 @@ bst_event_roll_controller_paste (BstEventRollController *self)
       if (id)
         part.select_event (id);
     }
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 gboolean
@@ -435,7 +435,7 @@ move_group_motion (BstEventRollController *self,
   new_tick = bst_event_roll_controller_quantize (self, drag->current_tick);
   delta_tick = self->obj_tick;
   delta_tick -= new_tick;
-  bse_item_group_undo (part.proxy_id(), "Move Selection");
+  part.group_undo ("Move Selection");
   for (size_t i = 0; i < self->sel_cseq.size(); i++)
     {
       const Bse::PartControl &pctrl = self->sel_cseq[i];
@@ -444,7 +444,7 @@ move_group_motion (BstEventRollController *self,
     }
   if (drag->type == GXK_DRAG_DONE)
     self->sel_cseq.clear();
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 static void
@@ -501,7 +501,7 @@ align_motion (BstEventRollController *self,
       Bse::PartH part = self->eroll->part;
       guint tick, duration, i;
 
-      bse_item_group_undo (part.proxy_id(), "Align Control Events");
+      part.group_undo ("Align Control Events");
       bst_event_roll_segment_tick_range (self->eroll, &tick, &duration);
       const Bse::PartControlSeq &cseq = part.list_controls (tick, duration, CONTROL_TYPE (self));
       for (i = 0; i < cseq.size(); i++)
@@ -511,7 +511,7 @@ align_motion (BstEventRollController *self,
           part.change_control (pctrl.id, pctrl.tick, CONTROL_TYPE (self), v);
         }
       bst_event_roll_clear_segment (self->eroll);
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
     }
 }
 
@@ -584,11 +584,11 @@ resize_motion (BstEventRollController *self,
   /* apply new control event size */
   if (drag->current_value != self->obj_value)
     {
-      bse_item_group_undo (part.proxy_id(), "Resize Control Event");
+      part.group_undo ("Resize Control Event");
       self->obj_value = drag->current_value;
       if (part.change_control (self->obj_id, self->obj_tick, CONTROL_TYPE (self), self->obj_value) != 
Bse::Error::NONE)
         drag->state = GXK_DRAG_ERROR;
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
     }
 }
 
diff --git a/beast-gtk/bstparam.cc b/beast-gtk/bstparam.cc
index 26e98e9..b73ba40 100644
--- a/beast-gtk/bstparam.cc
+++ b/beast-gtk/bstparam.cc
@@ -256,18 +256,18 @@ static void
 proxy_binding_start_grouping (GxkParam *param)
 {
   SfiProxy proxy = param->bdata[0].v_long;
-  gchar *ustr = g_strconcat ("Modify ", g_param_spec_get_nick (param->pspec), NULL);
-  if (proxy)
-    bse_item_group_undo (proxy, ustr);
-  g_free (ustr);
+  Bse::ItemH item = Bse::ItemH::down_cast (bse_server.from_proxy (proxy));
+  if (item)
+    item.group_undo (string_format ("Modify %s", g_param_spec_get_nick (param->pspec)));
 }
 
 static void
 proxy_binding_stop_grouping (GxkParam *param)
 {
   SfiProxy proxy = param->bdata[0].v_long;
+  Bse::ItemH item = Bse::ItemH::down_cast (bse_server.from_proxy (proxy));
   if (proxy)
-    bse_item_ungroup_undo (proxy);
+    item.ungroup_undo();
 }
 
 static gboolean
diff --git a/beast-gtk/bstparamview.cc b/beast-gtk/bstparamview.cc
index 90c4536..5952768 100644
--- a/beast-gtk/bstparamview.cc
+++ b/beast-gtk/bstparamview.cc
@@ -171,11 +171,11 @@ bst_param_view_apply_defaults (BstParamView *self)
 
   if (self->item)
     {
-      GSList *slist;
-      bse_item_group_undo (self->item, "Reset to defaults");
-      for (slist = self->params; slist; slist = slist->next)
+      Bse::ItemH item = Bse::ItemH::down_cast (bse_server.from_proxy (self->item));
+      item.group_undo ("Reset to defaults");
+      for (GSList *slist = self->params; slist; slist = slist->next)
         gxk_param_apply_default ((GxkParam*) slist->data);
-      bse_item_ungroup_undo (self->item);
+      item.ungroup_undo();
     }
 }
 
diff --git a/beast-gtk/bstpartdialog.cc b/beast-gtk/bstpartdialog.cc
index aa68dd2..2c0eedc 100644
--- a/beast-gtk/bstpartdialog.cc
+++ b/beast-gtk/bstpartdialog.cc
@@ -271,8 +271,7 @@ bst_part_dialog_set_part (BstPartDialog *self, Bse::PartH part)
       self->project = Bse::ProjectH();
     }
 
-  SfiProxy projectid = part ? bse_item_get_project (part.proxy_id()) : 0;
-  Bse::ProjectH project = Bse::ProjectH::down_cast (bse_server.from_proxy (projectid));
+  Bse::ProjectH project = part ? part.get_project() : Bse::ProjectH();
   if (project)
     {
       bst_window_sync_title_to_proxy (GXK_DIALOG (self), part.proxy_id(), "%s");
@@ -327,7 +326,7 @@ part_dialog_run_script_proc (gpointer data, size_t action_id)
   Bse::PartH part = self->proll->part;
 
   bst_procedure_exec_auto (cat.otype.c_str(),
-                           "project", SFI_TYPE_PROXY, bse_item_get_project (part.proxy_id()),
+                           "project", SFI_TYPE_PROXY, part.get_project().proxy_id(),
                            "part", SFI_TYPE_PROXY, part.proxy_id(),
                            NULL);
 }
@@ -399,13 +398,13 @@ part_dialog_action_exec (gpointer data,
       bst_event_roll_controller_paste (self->ectrl);
       break;
     case ACTION_UNDO:
-      bse_item_undo (self->proll->part.proxy_id());
+      self->proll->part.get_project().undo();
       break;
     case ACTION_REDO:
-      bse_item_redo (self->proll->part.proxy_id());
+      self->proll->part.get_project().redo();
       break;
     case ACTION_CLEAR_UNDO:
-      bse_item_clear_undo (self->proll->part.proxy_id());
+      self->proll->part.get_project().clear_undo();
       break;
     default:
       break;
diff --git a/beast-gtk/bstpatterncolumns.cc b/beast-gtk/bstpatterncolumns.cc
index 977ca03..5caa3dd 100644
--- a/beast-gtk/bstpatterncolumns.cc
+++ b/beast-gtk/bstpatterncolumns.cc
@@ -187,13 +187,13 @@ pattern_column_note_key_event (BstPatternColumn       *column,
   switch (action)
     {
     case BST_PATTERN_REMOVE_EVENTS:
-      bse_item_group_undo (part.proxy_id(), "Remove Events");
+      part.group_undo ("Remove Events");
       for (i = 0; i < pseq.size(); i++)
         part.delete_event (pseq[i].id);
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
       return TRUE;
     case BST_PATTERN_SET_NOTE:
-      bse_item_group_undo (part.proxy_id(), "Set Note");
+      part.group_undo ("Set Note");
       if (pseq.size() == 1)
         {
           const Bse::PartNote *pnote = &pseq[0];
@@ -203,7 +203,7 @@ pattern_column_note_key_event (BstPatternColumn       *column,
         part.insert_note (column->num, tick, duration, SFI_NOTE_CLAMP (iparam), 0, +1);
       else
         bst_gui_error_bell (pview);
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
       return TRUE;
     default: ;
     }
@@ -498,10 +498,10 @@ pattern_column_event_key_event (BstPatternColumn       *column,
   pattern_column_event_to_string (column, buffer, pctrl, placeholder, &ivalue);
   if (action == BST_PATTERN_REMOVE_EVENTS)
     {
-      bse_item_group_undo (part.proxy_id(), "Remove Events");
+      part.group_undo ("Remove Events");
       for (size_t i = 0; i < cseq.size(); i++)
         part.delete_event (cseq[i].id);
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
       handled = TRUE;
     }
   else if (action == BST_PATTERN_SET_DIGIT &&   /* insertions */
diff --git a/beast-gtk/bstpianorollctrl.cc b/beast-gtk/bstpianorollctrl.cc
index addf475..db2aa61 100644
--- a/beast-gtk/bstpianorollctrl.cc
+++ b/beast-gtk/bstpianorollctrl.cc
@@ -345,13 +345,13 @@ bst_piano_roll_controller_clear (BstPianoRollController *self)
   assert_return (self != NULL);
   Bse::PartH part = self->proll->part;
   Bse::PartNoteSeq pseq = part.list_selected_notes();
-  bse_item_group_undo (part.proxy_id(), "Clear Selection");
+  part.group_undo ("Clear Selection");
   for (size_t i = 0; i < pseq.size(); i++)
     {
       const Bse::PartNote *pnote = &pseq[i];
       part.delete_event (pnote->id);
     }
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 void
@@ -361,14 +361,14 @@ bst_piano_roll_controller_cut (BstPianoRollController *self)
 
   Bse::PartH part = self->proll->part;
   Bse::PartNoteSeq pseq = part.list_selected_notes();
-  bse_item_group_undo (part.proxy_id(), "Cut Selection");
+  part.group_undo ("Cut Selection");
   for (size_t i = 0; i < pseq.size(); i++)
     {
       const Bse::PartNote *pnote = &pseq[i];
       part.delete_event (pnote->id);
     }
   bst_piano_roll_controller_set_clipboard (&pseq);
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 gboolean
@@ -394,7 +394,7 @@ bst_piano_roll_controller_paste (BstPianoRollController *self)
       guint i, paste_tick, ctick = self->proll->max_ticks;
       gint cnote = 0;
       gint paste_note;
-      bse_item_group_undo (part.proxy_id(), "Paste Clipboard");
+      part.group_undo ("Paste Clipboard");
       part.deselect_notes (0, self->proll->max_ticks, self->proll->min_note, self->proll->max_note);
       bst_piano_roll_get_paste_pos (self->proll, &paste_tick, &paste_note);
       paste_tick = bst_piano_roll_controller_quantize (self, paste_tick);
@@ -417,7 +417,7 @@ bst_piano_roll_controller_paste (BstPianoRollController *self)
               part.select_event (id);
             }
        }
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
     }
 }
 
@@ -556,7 +556,7 @@ move_group_motion (BstPianoRollController *self, BstPianoRollDrag *drag)
   delta_note = old_note;
   delta_tick -= new_tick;
   delta_note -= new_note;
-  bse_item_group_undo (part.proxy_id(), "Move Selection");
+  part.group_undo ("Move Selection");
   for (size_t i = 0; i < self->sel_pseq.size(); i++)
     {
       const Bse::PartNote *pnote = &self->sel_pseq[i];
@@ -568,7 +568,7 @@ move_group_motion (BstPianoRollController *self, BstPianoRollDrag *drag)
     }
   if (drag->type == GXK_DRAG_DONE)
     self->sel_pseq.clear();
-  bse_item_ungroup_undo (part.proxy_id());
+  part.ungroup_undo();
 }
 
 static void
@@ -591,7 +591,7 @@ move_motion (BstPianoRollController *self,
       !check_hoverlap (part, new_tick, self->obj_duration, drag->current_note,
                       self->obj_tick, note_changed ? 0 : self->obj_duration))
     {
-      bse_item_group_undo (part.proxy_id(), "Move Note");
+      part.group_undo ("Move Note");
       if (part.delete_event (self->obj_id) != Bse::Error::NONE)
         drag->state = GXK_DRAG_ERROR;
       else
@@ -603,7 +603,7 @@ move_motion (BstPianoRollController *self,
          if (!self->obj_id)
            drag->state = GXK_DRAG_ERROR;
        }
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
     }
 }
 
@@ -658,7 +658,7 @@ resize_motion (BstPianoRollController *self,
       !check_hoverlap (part, new_tick, new_duration, self->obj_note,
                       self->obj_tick, self->obj_duration))
     {
-      bse_item_group_undo (part.proxy_id(), "Resize Note");
+      part.group_undo ("Resize Note");
       if (self->obj_id)
        {
          Bse::Error error = part.delete_event (self->obj_id);
@@ -675,7 +675,7 @@ resize_motion (BstPianoRollController *self,
          if (!self->obj_id)
            drag->state = GXK_DRAG_ERROR;
        }
-      bse_item_ungroup_undo (part.proxy_id());
+      part.ungroup_undo();
     }
 }
 
diff --git a/beast-gtk/bstsnetrouter.cc b/beast-gtk/bstsnetrouter.cc
index 09fbc90..eac5320 100644
--- a/beast-gtk/bstsnetrouter.cc
+++ b/beast-gtk/bstsnetrouter.cc
@@ -766,11 +766,11 @@ bst_snet_router_event (GtkWidget *widget,
           Bse::Error error = self->snet.can_create_source (ad.entity);
           if (error == 0)
             {
-              bse_item_group_undo (self->snet.proxy_id(), "Create Module");
+              self->snet.group_undo ("Create Module");
               SfiProxy module = self->snet.create_source (ad.entity).proxy_id();
               Bse::SourceH sourceh = Bse::SourceH::down_cast (bse_server.from_proxy (module));
               sourceh.set_pos (self->world_x / BST_CANVAS_SOURCE_PIXEL_SCALE, self->world_y / 
-BST_CANVAS_SOURCE_PIXEL_SCALE);
-              bse_item_ungroup_undo (self->snet.proxy_id());
+              self->snet.ungroup_undo();
             }
           if (BST_SNET_EDIT_FALLBACK)
             gxk_action_group_select (self->canvas_tool, ROUTER_TOOL_EDIT);
diff --git a/beast-gtk/bsttrackrollctrl.cc b/beast-gtk/bsttrackrollctrl.cc
index 37ed490..9bc6172 100644
--- a/beast-gtk/bsttrackrollctrl.cc
+++ b/beast-gtk/bsttrackrollctrl.cc
@@ -425,13 +425,13 @@ insert_start (BstTrackRollController *self,
        {
          SfiProxy songid = bse_item_get_parent (drag->current_track.proxy_id());
           Bse::SongH song = Bse::SongH::down_cast (bse_server.from_proxy (songid));
-          bse_item_group_undo (song.proxy_id(), "Insert part");
+          song.group_undo ("Insert part");
           Bse::PartH part = song.create_part();
          if (part && track.insert_part (tick, part) > 0)
            gxk_status_set (GXK_STATUS_DONE, _("Insert Part"), NULL);
          else
            gxk_status_set (GXK_STATUS_ERROR, _("Insert Part"), _("Lost Part"));
-          bse_item_ungroup_undo (song.proxy_id());
+          song.ungroup_undo ();
          drag->state = GXK_DRAG_HANDLED;
        }
       else
@@ -454,12 +454,12 @@ delete_start (BstTrackRollController *self,
   if (self->obj_part)  /* got part to delete */
     {
       Bse::SongH song = Bse::SongH::down_cast (bse_server.from_proxy (self->song));
-      bse_item_group_undo (song.proxy_id(), "Delete Part");
+      song.group_undo ("Delete Part");
       Bse::TrackH track = self->obj_track;
       track.remove_tick (self->obj_tick);
       if (!song.find_any_track_for_part (self->obj_part))
         song.remove_part (self->obj_part);
-      bse_item_ungroup_undo (song.proxy_id());
+      song.ungroup_undo();
       gxk_status_set (GXK_STATUS_DONE, _("Delete Part"), NULL);
     }
   else
@@ -514,7 +514,7 @@ move_motion (BstTrackRollController *self, BstTrackRollDrag *drag)
   if (new_tick != self->obj_tick || self->obj_track != drag->current_track)
     {
       Bse::TrackH track = drag->current_track;
-      bse_item_group_undo (track.proxy_id(), "Move part");
+      track.group_undo ("Move part");
       if (track.insert_part (new_tick, self->obj_part) > 0)
        {
          if (!self->skip_deletion)
@@ -529,7 +529,7 @@ move_motion (BstTrackRollController *self, BstTrackRollDrag *drag)
          gxk_status_set (GXK_STATUS_PROGRESS, action, NULL);
        }
       /* else gxk_status_set (GXK_STATUS_ERROR, "Move Part", Bse::error_blurb (error)); */
-      bse_item_ungroup_undo (track.proxy_id());
+      track.ungroup_undo();
     }
 }
 
diff --git a/beast-gtk/bsttrackview.cc b/beast-gtk/bsttrackview.cc
index 8ead85e..578a3c2 100644
--- a/beast-gtk/bsttrackview.cc
+++ b/beast-gtk/bsttrackview.cc
@@ -286,13 +286,14 @@ track_view_synth_popup (BstTrackView         *self,
   if (strpath)
     {
       gint row = gxk_tree_spath_index0 (strpath);
-      SfiProxy item = bst_item_view_get_proxy (BST_ITEM_VIEW (self), row);
-      if (bse_item_editable_property (item, "snet"))
+      SfiProxy itemid = bst_item_view_get_proxy (BST_ITEM_VIEW (self), row);
+      if (bse_item_editable_property (itemid, "snet"))
         {
-          BsePropertyCandidates *pc = bse_item_get_property_candidates (item, "snet");
+          BsePropertyCandidates *pc = bse_item_get_property_candidates (itemid, "snet");
           SynthPopup sdata = { self, pcell, };
-          Bse::ProjectH project = Bse::ProjectH::down_cast (bse_server.from_proxy (bse_item_get_project 
(item)));
-          GtkWidget *dialog = bst_track_synth_dialog_popup (self, item,
+          Bse::ItemH item = Bse::ItemH::down_cast (bse_server.from_proxy (itemid));
+          Bse::ProjectH project = item.get_project();
+          GtkWidget *dialog = bst_track_synth_dialog_popup (self, itemid,
                                                             pc->label, pc->tooltip, pc->items,
                                                             _("Available Waves"),
                                                             _("List of available waves to choose a track 
instrument from"),
@@ -732,7 +733,7 @@ track_view_action_exec (gpointer data,
     {
       SfiProxy item;
     case ACTION_ADD_TRACK:
-      bse_item_group_undo (song.proxy_id(), "Add Track");
+      song.group_undo ("Add Track");
       track = song.create_track();
       if (track)
        {
@@ -742,12 +743,12 @@ track_view_action_exec (gpointer data,
          bst_item_view_select (item_view, track.proxy_id());
           track.ensure_output();
        }
-      bse_item_ungroup_undo (song.proxy_id());
+      song.ungroup_undo();
       break;
     case ACTION_DELETE_TRACK:
       item = bst_item_view_get_current (item_view);
       track = Bse::TrackH::down_cast (bse_server.from_proxy (item));
-      bse_item_group_undo (song.proxy_id(), "Delete Track");
+      song.group_undo ("Delete Track");
       Bse::PartSeq pseq = track.list_parts_uniq();
       song.remove_track (track);
       for (const auto &part : pseq)
@@ -756,7 +757,7 @@ track_view_action_exec (gpointer data,
           if (!song.find_any_track_for_part (p))
             song.remove_part (p);
         }
-      bse_item_ungroup_undo (song.proxy_id());
+      song.ungroup_undo();
       break;
     }
   gxk_widget_update_actions_downwards (self);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]