Пример #1
0
static gboolean
gb_vim_command_vsplit (GtkWidget      *active_widget,
                       const gchar    *command,
                       const gchar    *options,
                       GError        **error)
{
  IdeWorkbench *workbench;
  IdeContext *context;
  IdeVcs *vcs;
  GFile *workdir;
  GFile *file = NULL;
  gchar *file_path;
  SplitCallbackData *split_callback_data;
  GVariant *variant;

  g_assert (GTK_IS_WIDGET (active_widget));

  if (!IDE_IS_LAYOUT_VIEW (active_widget))
    return gb_vim_set_no_view_error (error);

  if (ide_str_empty0 (options))
    {
      variant = g_variant_new_string ("");
      ide_widget_action (GTK_WIDGET (active_widget), "view-stack", "split-left", variant);
    }
  else
    {
      if (!(workbench = ide_widget_get_workbench (active_widget)) ||
          !(context = ide_workbench_get_context (workbench)) ||
          !(vcs = ide_context_get_vcs (context)) ||
          !(workdir = ide_vcs_get_working_directory (vcs)))
        {
          g_set_error (error,
                       GB_VIM_ERROR,
                       GB_VIM_ERROR_NOT_SOURCE_VIEW,
                       _("Failed to locate working directory"));
          return FALSE;
        }

      file_path = g_strdup (options);

      if (!g_path_is_absolute (file_path))
        file_path = g_build_filename (g_file_get_path (workdir), file_path, NULL);

      file = g_file_new_for_path (file_path);

      split_callback_data = g_slice_new (SplitCallbackData);
      split_callback_data->active_widget = g_object_ref (active_widget);
      split_callback_data->file_path = file_path;

      ide_workbench_open_files_async (workbench, &file, 1, "editor", IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND, NULL, gb_vim_command_vsplit_cb, split_callback_data);

      g_clear_object (&file);
    }

  return TRUE;
}
Пример #2
0
static gboolean
gb_vim_command_split (GtkWidget      *active_widget,
                      const gchar    *command,
                      const gchar    *options,
                      GError        **error)
{
  g_assert (GTK_IS_WIDGET (active_widget));

  if (IDE_IS_LAYOUT_VIEW (active_widget))
    ide_widget_action (GTK_WIDGET (active_widget), "view-stack", "split-down", NULL);
  else
    return gb_vim_set_no_view_error (error);

  return TRUE;
}
Пример #3
0
static gboolean
gb_vim_command_vsplit (GtkWidget    *active_widget,
                       const gchar  *command,
                       const gchar  *options,
                       GError      **error)
{
  GVariant *variant;

  g_assert (GTK_IS_WIDGET (active_widget));

  if (!IDE_IS_PAGE (active_widget))
    return gb_vim_set_no_view_error (error);

  if (ide_str_empty0 (options))
    {
      variant = g_variant_new_string ("");
      dzl_gtk_widget_action (GTK_WIDGET (active_widget), "frame", "open-in-new-frame", variant);

      return TRUE;
    }
  else
    return load_split_async (active_widget, options, gb_vim_command_vsplit_cb, error);
}
Пример #4
0
static gboolean
gb_vim_command_split (GtkWidget    *active_widget,
                      const gchar  *command,
                      const gchar  *options,
                      GError      **error)
{
  GVariant *variant;

  g_assert (GTK_IS_WIDGET (active_widget));

  if (!IDE_IS_LAYOUT_VIEW (active_widget))
    return gb_vim_set_no_view_error (error);

  if (dzl_str_empty0 (options))
    {
      variant = g_variant_new_string ("");
      dzl_gtk_widget_action (GTK_WIDGET (active_widget), "layoutstack", "split-view", variant);

      return TRUE;
    }
  else
    return load_split_async (active_widget, options, gb_vim_command_split_cb, error);
}