コード例 #1
0
static void
ide_file_settings_child_notify (IdeFileSettings *self,
                                GParamSpec      *pspec,
                                IdeFileSettings *child)
{
  g_assert (IDE_IS_FILE_SETTINGS (self));
  g_assert (pspec != NULL);
  g_assert (IDE_IS_FILE_SETTINGS (child));

  if (pspec->owner_type == IDE_TYPE_FILE_SETTINGS)
    g_object_notify_by_pspec (G_OBJECT (self), pspec);
}
コード例 #2
0
guint
ide_file_settings_get_tab_width (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->tab_width;
}
コード例 #3
0
GtkSourceNewlineType
ide_file_settings_get_newline_type (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->newline_type;
}
コード例 #4
0
const gchar *
ide_file_settings_get_encoding (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), NULL);

  return priv->encoding;
}
コード例 #5
0
gboolean
ide_file_settings_get_trim_trailing_whitespace (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), FALSE);

  return priv->trim_trailing_whitespace;
}
コード例 #6
0
IdeIndentStyle
ide_file_settings_get_indent_style (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->indent_style;
}
コード例 #7
0
guint
ide_file_settings_get_right_margin_position (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 80);

  return priv->right_margin_position;
}
コード例 #8
0
/**
 * ide_file_settings_get_settled:
 * @self: An #IdeFileSettings.
 *
 * Gets the #IdeFileSettings:settled property.
 *
 * This property is %TRUE when all of the children file settings have completed loading.
 *
 * Some file setting implementations require that various I/O be performed on disk in
 * the background. This property will change to %TRUE when all of the settings have
 * been loaded.
 *
 * Normally, this is not a problem, since the editor will respond to changes and update them
 * accordingly. However, if you are writing a tool that prints the file settings
 * (such as ide-list-file-settings), you probably want to wait until the values have
 * settled.
 *
 * Returns: %TRUE if all the settings have loaded.
 *
 * Since: 3.32
 */
gboolean
ide_file_settings_get_settled (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), FALSE);

  return (priv->unsettled_count == 0);
}
コード例 #9
0
/**
 * ide_file_settings_get_file:
 * @self: An #IdeFileSettings.
 *
 * Retrieves the underlying file that @self refers to.
 *
 * This may be used by #IdeFileSettings implementations to discover additional
 * information about the settings. For example, a modeline parser might load
 * some portion of the file looking for modelines. An editorconfig
 * implementation might look for ".editorconfig" files.
 *
 * Returns: (transfer none): An #IdeFile.
 */
IdeFile *
ide_file_settings_get_file (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), NULL);

  return priv->file;
}
コード例 #10
0
static void
ide_file_settings_set_language (IdeFileSettings *self,
                                const gchar     *language)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  priv->language = g_intern_string (language);
}
コード例 #11
0
static void
_ide_file_settings_append (IdeFileSettings *self,
                           IdeFileSettings *child)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (IDE_IS_FILE_SETTINGS (child));

  g_signal_connect_object (child,
                           "notify",
                           G_CALLBACK (ide_file_settings_child_notify),
                           self,
                           G_CONNECT_SWAPPED);

  if (priv->children == NULL)
    priv->children = g_ptr_array_new_with_free_func (g_object_unref);

  g_ptr_array_add (priv->children, g_object_ref (child));
}
コード例 #12
0
static void
ide_file_settings_set_file (IdeFileSettings *self,
                            IdeFile         *file)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (IDE_IS_FILE (file));

  if (ide_set_weak_pointer (&priv->file, file))
    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_FILE]);
}
コード例 #13
0
static void
ide_file_settings_set_file (IdeFileSettings *self,
                            GFile           *file)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (G_IS_FILE (file));
  g_return_if_fail (priv->file == NULL);

  priv->file = g_object_ref (file);
}
コード例 #14
0
void
ide_file_settings_set_encoding (IdeFileSettings *self,
                                const gchar     *encoding)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  if (priv->encoding != encoding)
    {
      g_free (priv->encoding);
      priv->encoding = g_strdup (encoding);
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_ENCODING]);
    }
}
コード例 #15
0
void
ide_file_settings_set_tab_width (IdeFileSettings *self,
                                 guint            tab_width)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (tab_width > 0);
  g_return_if_fail (tab_width < 32);

  if (priv->tab_width != tab_width)
    {
      priv->tab_width = tab_width;
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_TAB_WIDTH]);
    }
}
コード例 #16
0
void
ide_file_settings_set_newline_type (IdeFileSettings      *self,
                                    GtkSourceNewlineType  newline_type)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (newline_type >= GTK_SOURCE_NEWLINE_TYPE_LF);
  g_return_if_fail (newline_type <= GTK_SOURCE_NEWLINE_TYPE_CR_LF);

  if (priv->newline_type != newline_type)
    {
      priv->newline_type = newline_type;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_NEWLINE_TYPE]);
    }
}
コード例 #17
0
void
ide_file_settings_set_indent_style (IdeFileSettings *self,
                                    IdeIndentStyle   indent_style)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (indent_style >= IDE_INDENT_STYLE_SPACES);
  g_return_if_fail (indent_style <= IDE_INDENT_STYLE_TABS);

  if (priv->indent_style != indent_style)
    {
      priv->indent_style = indent_style;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INDENT_STYLE]);
    }
}
コード例 #18
0
void
ide_file_settings_set_right_margin_position (IdeFileSettings *self,
                                             guint            right_margin_position)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (right_margin_position > 0);
  g_return_if_fail (right_margin_position <= 1000);

  if (priv->right_margin_position != right_margin_position)
    {
      priv->right_margin_position = right_margin_position;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_RIGHT_MARGIN_POSITION]);
    }
}
コード例 #19
0
void
ide_file_settings_set_trim_trailing_whitespace (IdeFileSettings *self,
                                                gboolean         trim_trailing_whitespace)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  trim_trailing_whitespace = !!trim_trailing_whitespace;

  if (priv->trim_trailing_whitespace != trim_trailing_whitespace)
    {
      priv->trim_trailing_whitespace = trim_trailing_whitespace;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_TRIM_TRAILING_WHITESPACE]);
    }
}
コード例 #20
0
void
ide_file_settings_set_indent_width (IdeFileSettings *self,
                                    gint             indent_width)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (indent_width >= -1);
  g_return_if_fail (indent_width < 32);

  if (priv->indent_width != indent_width)
    {
      priv->indent_width = indent_width;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INDENT_WIDTH]);
    }
}
コード例 #21
0
void
ide_file_settings_set_insert_trailing_newline (IdeFileSettings *self,
                                               gboolean         insert_trailing_newline)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  insert_trailing_newline = !!insert_trailing_newline;

  if (priv->insert_trailing_newline != insert_trailing_newline)
    {
      priv->insert_trailing_newline = insert_trailing_newline;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INSERT_TRAILING_NEWLINE]);
    }
}
コード例 #22
0
static void
ide_file_settings__init_cb (GObject      *object,
                            GAsyncResult *result,
                            gpointer      user_data)
{
  g_autoptr(IdeFileSettings) self = user_data;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);
  GAsyncInitable *initable = (GAsyncInitable *)object;
  g_autoptr(GError) error = NULL;

  g_assert (IDE_IS_FILE_SETTINGS (self));
  g_assert (G_IS_ASYNC_INITABLE (initable));

  if (!g_async_initable_init_finish (initable, result, &error))
    g_warning ("%s", error->message);

  if (--priv->unsettled_count == 0)
    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SETTLED]);
}
コード例 #23
0
ファイル: ide-file.c プロジェクト: badwolfie/gnome-builder
static void
ide_file__file_settings_settled_cb (IdeFileSettings *file_settings,
                                    GParamSpec      *pspec,
                                    gpointer         user_data)
{
  g_autoptr(GTask) task = user_data;
  IdeFile *self;

  IDE_ENTRY;

  g_assert (IDE_IS_FILE_SETTINGS (file_settings));
  g_assert (G_IS_TASK (task));
  self = g_task_get_source_object (task);
  g_assert (IDE_IS_FILE (self));

  g_signal_handlers_disconnect_by_func (file_settings,
                                        G_CALLBACK (ide_file__file_settings_settled_cb),
                                        task);
  g_set_object (&self->file_settings, file_settings);
  g_task_return_pointer (task, g_object_ref (file_settings), g_object_unref);

  IDE_EXIT;
}