Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • xfce/thunar
  • alexxcons/thunar
  • lastonestanding/thunar
  • StormByte/thunar
  • Manideep/thunar
  • ikem-krueger/thunar
  • Levitating/thunar
  • correctmost/thunar
  • ncfavier/thunar
  • sgn/thunar
  • aslezar/thunar
  • drsudo/thunar
  • prertik/thunar
  • entwicklerseite/thunar
  • sarahjjust/thunar
  • joebonrichie/thunar
  • raultel/thunar
  • Zetta1_Reid0/thunar
  • RAZOR_99/thunar
  • konsolebox/thunar
  • sulincix/thunar
  • bobby285271/thunar
  • jensenr30/thunar
  • radioactiveman/thunar
  • psydbernz/thunar-contrib
  • landry/thunar
  • stealthninja/thunar
  • kressb-gitlab/thunar
  • keszybz/thunar
29 results
Show changes
Showing
with 474 additions and 317 deletions
......@@ -23,7 +23,6 @@
#endif
#include <glib/gi18n-lib.h>
#include <thunar-sbr/thunar-sbr-enum-types.h>
......@@ -88,6 +87,8 @@ thunar_sbr_date_mode_get_type (void)
void
thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin)
{
/* clang-format off */
static const GEnumValue case_renamer_mode_values[] =
{
{ THUNAR_SBR_CASE_RENAMER_MODE_LOWER, "THUNAR_SBR_CASE_RENAMER_MODE_LOWER", N_ ("lowercase"), },
......@@ -142,6 +143,8 @@ thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin)
{ 0, NULL, NULL, },
};
/* clang-format on */
case_renamer_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrCaseRenamerMode", case_renamer_mode_values);
insert_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrInsertMode", insert_mode_values);
number_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrNumberMode", number_mode_values);
......@@ -149,7 +152,3 @@ thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin)
text_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrTextMode", text_mode_values);
date_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrDateMode", date_mode_values);
}
......@@ -44,7 +44,8 @@ typedef enum
THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER,
} ThunarSbrCaseRenamerMode;
GType thunar_sbr_case_renamer_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_case_renamer_mode_get_type (void) G_GNUC_CONST;
#define THUNAR_SBR_TYPE_INSERT_MODE (thunar_sbr_insert_mode_get_type ())
......@@ -62,7 +63,8 @@ typedef enum
THUNAR_SBR_INSERT_MODE_OVERWRITE,
} ThunarSbrInsertMode;
GType thunar_sbr_insert_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_insert_mode_get_type (void) G_GNUC_CONST;
#define THUNAR_SBR_TYPE_NUMBER_MODE (thunar_sbr_number_mode_get_type ())
......@@ -88,7 +90,8 @@ typedef enum
THUNAR_SBR_NUMBER_MODE_ABC,
} ThunarSbrNumberMode;
GType thunar_sbr_number_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_number_mode_get_type (void) G_GNUC_CONST;
#define THUNAR_SBR_TYPE_OFFSET_MODE (thunar_sbr_offset_mode_get_type ())
......@@ -107,7 +110,8 @@ typedef enum
THUNAR_SBR_OFFSET_MODE_RIGHT,
} ThunarSbrOffsetMode;
GType thunar_sbr_offset_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_offset_mode_get_type (void) G_GNUC_CONST;
#define THUNAR_SBR_TYPE_TEXT_MODE (thunar_sbr_text_mode_get_type ())
......@@ -129,7 +133,8 @@ typedef enum
THUNAR_SBR_TEXT_MODE_NT,
} ThunarSbrTextMode;
GType thunar_sbr_text_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_text_mode_get_type (void) G_GNUC_CONST;
#define THUNAR_SBR_TYPE_DATE_MODE (thunar_sbr_date_mode_get_type ())
......@@ -153,10 +158,12 @@ typedef enum
#endif
} ThunarSbrDateMode;
GType thunar_sbr_date_mode_get_type (void) G_GNUC_CONST;
GType
thunar_sbr_date_mode_get_type (void) G_GNUC_CONST;
void thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin);
void
thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin);
G_END_DECLS;
......
......@@ -22,9 +22,8 @@
#include <config.h>
#endif
#include <thunar-sbr/thunar-sbr-insert-renamer.h>
#include <libxfce4util/libxfce4util.h>
#include <thunar-sbr/thunar-sbr-insert-renamer.h>
......@@ -40,19 +39,23 @@ enum
static void thunar_sbr_insert_renamer_finalize (GObject *object);
static void thunar_sbr_insert_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void thunar_sbr_insert_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static gchar *thunar_sbr_insert_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void
thunar_sbr_insert_renamer_finalize (GObject *object);
static void
thunar_sbr_insert_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_insert_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static gchar *
thunar_sbr_insert_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
......@@ -194,6 +197,7 @@ thunar_sbr_insert_renamer_init (ThunarSbrInsertRenamer *insert_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
label = gtk_label_new_with_mnemonic (_("_At position:"));
gtk_label_set_xalign (GTK_LABEL (label), 1.0f);
......@@ -224,6 +228,7 @@ thunar_sbr_insert_renamer_init (ThunarSbrInsertRenamer *insert_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
combo = gtk_combo_box_text_new ();
klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
......@@ -318,7 +323,7 @@ thunar_sbr_insert_renamer_set_property (GObject *object,
static gchar*
static gchar *
thunar_sbr_insert_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
......@@ -379,7 +384,7 @@ thunar_sbr_insert_renamer_process (ThunarxRenamer *renamer,
*
* Return value: the newly allocated #ThunarSbrInsertRenamer.
**/
ThunarSbrInsertRenamer*
ThunarSbrInsertRenamer *
thunar_sbr_insert_renamer_new (void)
{
return g_object_new (THUNAR_SBR_TYPE_INSERT_RENAMER,
......@@ -535,7 +540,7 @@ thunar_sbr_insert_renamer_set_offset_mode (ThunarSbrInsertRenamer *insert_rename
*
* Return value: the text for @insert_renamer.
**/
const gchar*
const gchar *
thunar_sbr_insert_renamer_get_text (ThunarSbrInsertRenamer *insert_renamer)
{
g_return_val_if_fail (THUNAR_SBR_IS_INSERT_RENAMER (insert_renamer), NULL);
......@@ -571,5 +576,3 @@ thunar_sbr_insert_renamer_set_text (ThunarSbrInsertRenamer *insert_renamer,
g_object_notify (G_OBJECT (insert_renamer), "text");
}
}
......@@ -28,33 +28,44 @@ G_BEGIN_DECLS;
typedef struct _ThunarSbrInsertRenamerClass ThunarSbrInsertRenamerClass;
typedef struct _ThunarSbrInsertRenamer ThunarSbrInsertRenamer;
#define THUNAR_SBR_TYPE_INSERT_RENAMER (thunar_sbr_insert_renamer_get_type ())
#define THUNAR_SBR_INSERT_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamer))
#define THUNAR_SBR_INSERT_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamerClass))
#define THUNAR_SBR_IS_INSERT_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER))
#define THUNAR_SBR_TYPE_INSERT_RENAMER (thunar_sbr_insert_renamer_get_type ())
#define THUNAR_SBR_INSERT_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamer))
#define THUNAR_SBR_INSERT_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamerClass))
#define THUNAR_SBR_IS_INSERT_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER))
#define THUNAR_SBR_IS_INSERT_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_INSERT_RENAMER))
#define THUNAR_SBR_INSERT_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamerClass))
#define THUNAR_SBR_INSERT_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_INSERT_RENAMER, ThunarSbrInsertRenamerClass))
GType thunar_sbr_insert_renamer_get_type (void) G_GNUC_CONST;
void thunar_sbr_insert_renamer_register_type (ThunarxProviderPlugin *plugin);
GType
thunar_sbr_insert_renamer_get_type (void) G_GNUC_CONST;
void
thunar_sbr_insert_renamer_register_type (ThunarxProviderPlugin *plugin);
ThunarSbrInsertRenamer *thunar_sbr_insert_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrInsertRenamer *
thunar_sbr_insert_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrInsertMode thunar_sbr_insert_renamer_get_mode (ThunarSbrInsertRenamer *insert_renamer);
void thunar_sbr_insert_renamer_set_mode (ThunarSbrInsertRenamer *insert_renamer,
ThunarSbrInsertMode mode);
ThunarSbrInsertMode
thunar_sbr_insert_renamer_get_mode (ThunarSbrInsertRenamer *insert_renamer);
void
thunar_sbr_insert_renamer_set_mode (ThunarSbrInsertRenamer *insert_renamer,
ThunarSbrInsertMode mode);
guint thunar_sbr_insert_renamer_get_offset (ThunarSbrInsertRenamer *insert_renamer);
void thunar_sbr_insert_renamer_set_offset (ThunarSbrInsertRenamer *insert_renamer,
guint offset);
guint
thunar_sbr_insert_renamer_get_offset (ThunarSbrInsertRenamer *insert_renamer);
void
thunar_sbr_insert_renamer_set_offset (ThunarSbrInsertRenamer *insert_renamer,
guint offset);
ThunarSbrOffsetMode thunar_sbr_insert_renamer_get_offset_mode (ThunarSbrInsertRenamer *insert_renamer);
void thunar_sbr_insert_renamer_set_offset_mode (ThunarSbrInsertRenamer *insert_renamer,
ThunarSbrOffsetMode offset_mode);
ThunarSbrOffsetMode
thunar_sbr_insert_renamer_get_offset_mode (ThunarSbrInsertRenamer *insert_renamer);
void
thunar_sbr_insert_renamer_set_offset_mode (ThunarSbrInsertRenamer *insert_renamer,
ThunarSbrOffsetMode offset_mode);
const gchar *thunar_sbr_insert_renamer_get_text (ThunarSbrInsertRenamer *insert_renamer);
void thunar_sbr_insert_renamer_set_text (ThunarSbrInsertRenamer *insert_renamer,
const gchar *text);
const gchar *
thunar_sbr_insert_renamer_get_text (ThunarSbrInsertRenamer *insert_renamer);
void
thunar_sbr_insert_renamer_set_text (ThunarSbrInsertRenamer *insert_renamer,
const gchar *text);
G_END_DECLS;
......
......@@ -32,9 +32,8 @@
#include <string.h>
#endif
#include <thunar-sbr/thunar-sbr-number-renamer.h>
#include <libxfce4util/libxfce4util.h>
#include <thunar-sbr/thunar-sbr-number-renamer.h>
......@@ -50,21 +49,27 @@ enum
static void thunar_sbr_number_renamer_finalize (GObject *object);
static void thunar_sbr_number_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void thunar_sbr_number_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void thunar_sbr_number_renamer_realize (GtkWidget *widget);
static gchar *thunar_sbr_number_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer);
static void
thunar_sbr_number_renamer_finalize (GObject *object);
static void
thunar_sbr_number_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_number_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_number_renamer_realize (GtkWidget *widget);
static gchar *
thunar_sbr_number_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void
thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer);
......@@ -75,9 +80,9 @@ struct _ThunarSbrNumberRenamerClass
struct _ThunarSbrNumberRenamer
{
ThunarxRenamer __parent__;
ThunarxRenamer __parent__;
GtkWidget *start_entry;
GtkWidget *start_entry;
ThunarSbrNumberMode mode;
gchar *start;
......@@ -203,6 +208,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
number_renamer->start_entry = gtk_entry_new ();
gtk_entry_set_max_length (GTK_ENTRY (number_renamer->start_entry), 8);
......@@ -225,6 +231,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
label = gtk_label_new_with_mnemonic (_("Text _Format:"));
gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);
......@@ -246,6 +253,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
entry = gtk_entry_new ();
gtk_entry_set_width_chars (GTK_ENTRY (entry), 12);
......@@ -266,6 +274,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
}
......@@ -364,7 +373,7 @@ thunar_sbr_number_renamer_realize (GtkWidget *widget)
static gchar*
static gchar *
thunar_sbr_number_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
......@@ -389,8 +398,8 @@ thunar_sbr_number_renamer_process (ThunarxRenamer *renamer,
/* "start" property must be 'a', 'b', 'c', etc. */
start = *number_renamer->start;
invalid = (strlen (number_renamer->start) != 1
|| g_ascii_tolower (start) < 'a'
|| g_ascii_tolower (start) > 'z');
|| g_unichar_tolower (start) < 'a'
|| g_unichar_tolower (start) > 'z');
}
/* check if we have invalid settings */
......@@ -470,8 +479,8 @@ thunar_sbr_number_renamer_process (ThunarxRenamer *renamer,
static void
thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer)
{
gboolean invalid = TRUE;
gchar *endp;
gboolean invalid = TRUE;
gchar *endp;
/* check whether "start" is valid for the "mode" */
if (number_renamer->mode < THUNAR_SBR_NUMBER_MODE_ABC)
......@@ -484,8 +493,8 @@ thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer)
{
/* "start" property must be 'a', 'b', 'c', etc. */
invalid = (strlen (number_renamer->start) != 1
|| g_ascii_tolower (*number_renamer->start) < 'a'
|| g_ascii_tolower (*number_renamer->start) > 'z');
|| g_unichar_tolower (*number_renamer->start) < 'a'
|| g_unichar_tolower (*number_renamer->start) > 'z');
}
/* check if the start entry is realized */
......@@ -493,9 +502,9 @@ thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer)
{
/* highlight invalid input by using theme specific colors */
if (G_UNLIKELY (invalid))
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (number_renamer->start_entry)), "error");
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (number_renamer->start_entry)), "error");
else
gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET (number_renamer->start_entry)), "error");
gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET (number_renamer->start_entry)), "error");
}
/* notify everybody that we have a new state */
......@@ -511,7 +520,7 @@ thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer)
*
* Return value: the newly allocated #ThunarSbrNumberRenamer.
**/
ThunarSbrNumberRenamer*
ThunarSbrNumberRenamer *
thunar_sbr_number_renamer_new (void)
{
return g_object_new (THUNAR_SBR_TYPE_NUMBER_RENAMER,
......@@ -575,7 +584,7 @@ thunar_sbr_number_renamer_set_mode (ThunarSbrNumberRenamer *number_renamer,
*
* Return value: the start for @number_renamer.
**/
const gchar*
const gchar *
thunar_sbr_number_renamer_get_start (ThunarSbrNumberRenamer *number_renamer)
{
g_return_val_if_fail (THUNAR_SBR_IS_NUMBER_RENAMER (number_renamer), NULL);
......@@ -622,7 +631,7 @@ thunar_sbr_number_renamer_set_start (ThunarSbrNumberRenamer *number_renamer,
*
* Return value: the text for @number_renamer.
**/
const gchar*
const gchar *
thunar_sbr_number_renamer_get_text (ThunarSbrNumberRenamer *number_renamer)
{
g_return_val_if_fail (THUNAR_SBR_IS_NUMBER_RENAMER (number_renamer), NULL);
......@@ -704,7 +713,3 @@ thunar_sbr_number_renamer_set_text_mode (ThunarSbrNumberRenamer *number_renamer,
g_object_notify (G_OBJECT (number_renamer), "text-mode");
}
}
......@@ -28,33 +28,44 @@ G_BEGIN_DECLS;
typedef struct _ThunarSbrNumberRenamerClass ThunarSbrNumberRenamerClass;
typedef struct _ThunarSbrNumberRenamer ThunarSbrNumberRenamer;
#define THUNAR_SBR_TYPE_NUMBER_RENAMER (thunar_sbr_number_renamer_get_type ())
#define THUNAR_SBR_NUMBER_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamer))
#define THUNAR_SBR_NUMBER_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamerClass))
#define THUNAR_SBR_IS_NUMBER_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER))
#define THUNAR_SBR_TYPE_NUMBER_RENAMER (thunar_sbr_number_renamer_get_type ())
#define THUNAR_SBR_NUMBER_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamer))
#define THUNAR_SBR_NUMBER_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamerClass))
#define THUNAR_SBR_IS_NUMBER_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER))
#define THUNAR_SBR_IS_NUMBER_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_NUMBER_RENAMER))
#define THUNAR_SBR_NUMBER_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamerClass))
#define THUNAR_SBR_NUMBER_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_NUMBER_RENAMER, ThunarSbrNumberRenamerClass))
GType thunar_sbr_number_renamer_get_type (void) G_GNUC_CONST;
void thunar_sbr_number_renamer_register_type (ThunarxProviderPlugin *plugin);
GType
thunar_sbr_number_renamer_get_type (void) G_GNUC_CONST;
void
thunar_sbr_number_renamer_register_type (ThunarxProviderPlugin *plugin);
ThunarSbrNumberRenamer *thunar_sbr_number_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrNumberRenamer *
thunar_sbr_number_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrNumberMode thunar_sbr_number_renamer_get_mode (ThunarSbrNumberRenamer *number_renamer);
void thunar_sbr_number_renamer_set_mode (ThunarSbrNumberRenamer *number_renamer,
ThunarSbrNumberMode mode);
ThunarSbrNumberMode
thunar_sbr_number_renamer_get_mode (ThunarSbrNumberRenamer *number_renamer);
void
thunar_sbr_number_renamer_set_mode (ThunarSbrNumberRenamer *number_renamer,
ThunarSbrNumberMode mode);
const gchar *thunar_sbr_number_renamer_get_start (ThunarSbrNumberRenamer *number_renamer);
void thunar_sbr_number_renamer_set_start (ThunarSbrNumberRenamer *number_renamer,
const gchar *start);
const gchar *
thunar_sbr_number_renamer_get_start (ThunarSbrNumberRenamer *number_renamer);
void
thunar_sbr_number_renamer_set_start (ThunarSbrNumberRenamer *number_renamer,
const gchar *start);
const gchar *thunar_sbr_number_renamer_get_text (ThunarSbrNumberRenamer *number_renamer);
void thunar_sbr_number_renamer_set_text (ThunarSbrNumberRenamer *number_renamer,
const gchar *text);
const gchar *
thunar_sbr_number_renamer_get_text (ThunarSbrNumberRenamer *number_renamer);
void
thunar_sbr_number_renamer_set_text (ThunarSbrNumberRenamer *number_renamer,
const gchar *text);
ThunarSbrTextMode thunar_sbr_number_renamer_get_text_mode (ThunarSbrNumberRenamer *number_renamer);
void thunar_sbr_number_renamer_set_text_mode (ThunarSbrNumberRenamer *number_renamer,
ThunarSbrTextMode text_mode);
ThunarSbrTextMode
thunar_sbr_number_renamer_get_text_mode (ThunarSbrNumberRenamer *number_renamer);
void
thunar_sbr_number_renamer_set_text_mode (ThunarSbrNumberRenamer *number_renamer,
ThunarSbrTextMode text_mode);
G_END_DECLS;
......
......@@ -23,19 +23,22 @@
#endif
#include <thunar-sbr/thunar-sbr-case-renamer.h>
#include <thunar-sbr/thunar-sbr-date-renamer.h>
#include <thunar-sbr/thunar-sbr-insert-renamer.h>
#include <thunar-sbr/thunar-sbr-number-renamer.h>
#include <thunar-sbr/thunar-sbr-provider.h>
#include <thunar-sbr/thunar-sbr-remove-renamer.h>
#include <thunar-sbr/thunar-sbr-replace-renamer.h>
#include <thunar-sbr/thunar-sbr-date-renamer.h>
G_MODULE_EXPORT void thunar_extension_initialize (ThunarxProviderPlugin *plugin);
G_MODULE_EXPORT void thunar_extension_shutdown (void);
G_MODULE_EXPORT void thunar_extension_list_types (const GType **types,
gint *n_types);
G_MODULE_EXPORT void
thunar_extension_initialize (ThunarxProviderPlugin *plugin);
G_MODULE_EXPORT void
thunar_extension_shutdown (void);
G_MODULE_EXPORT void
thunar_extension_list_types (const GType **types,
gint *n_types);
......@@ -95,5 +98,3 @@ thunar_extension_list_types (const GType **types,
*types = type_list;
*n_types = G_N_ELEMENTS (type_list);
}
......@@ -23,17 +23,19 @@
#endif
#include <thunar-sbr/thunar-sbr-case-renamer.h>
#include <thunar-sbr/thunar-sbr-date-renamer.h>
#include <thunar-sbr/thunar-sbr-insert-renamer.h>
#include <thunar-sbr/thunar-sbr-number-renamer.h>
#include <thunar-sbr/thunar-sbr-provider.h>
#include <thunar-sbr/thunar-sbr-remove-renamer.h>
#include <thunar-sbr/thunar-sbr-replace-renamer.h>
#include <thunar-sbr/thunar-sbr-date-renamer.h>
static void thunar_sbr_provider_renamer_provider_init (ThunarxRenamerProviderIface *iface);
static GList *thunar_sbr_provider_get_renamers (ThunarxRenamerProvider *renamer_provider);
static void
thunar_sbr_provider_renamer_provider_init (ThunarxRenamerProviderIface *iface);
static GList *
thunar_sbr_provider_get_renamers (ThunarxRenamerProvider *renamer_provider);
......@@ -79,7 +81,7 @@ thunar_sbr_provider_init (ThunarSbrProvider *sbr_provider)
static GList*
static GList *
thunar_sbr_provider_get_renamers (ThunarxRenamerProvider *renamer_provider)
{
GList *renamers = NULL;
......
......@@ -28,15 +28,17 @@ G_BEGIN_DECLS;
typedef struct _ThunarSbrProviderClass ThunarSbrProviderClass;
typedef struct _ThunarSbrProvider ThunarSbrProvider;
#define THUNAR_SBR_TYPE_PROVIDER (thunar_sbr_provider_get_type ())
#define THUNAR_SBR_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProvider))
#define THUNAR_SBR_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProviderClass))
#define THUNAR_SBR_IS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_PROVIDER))
#define THUNAR_SBR_TYPE_PROVIDER (thunar_sbr_provider_get_type ())
#define THUNAR_SBR_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProvider))
#define THUNAR_SBR_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProviderClass))
#define THUNAR_SBR_IS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_PROVIDER))
#define THUNAR_SBR_IS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_PROVIDER))
#define THUNAR_SBR_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProviderClass))
#define THUNAR_SBR_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_PROVIDER, ThunarSbrProviderClass))
GType thunar_sbr_provider_get_type (void) G_GNUC_CONST;
void thunar_sbr_provider_register_type (ThunarxProviderPlugin *plugin);
GType
thunar_sbr_provider_get_type (void) G_GNUC_CONST;
void
thunar_sbr_provider_register_type (ThunarxProviderPlugin *plugin);
G_END_DECLS;
......
......@@ -22,8 +22,7 @@
#include <config.h>
#endif
#include <exo/exo.h>
#include <libxfce4util/libxfce4util.h>
#include <thunar-sbr/thunar-sbr-remove-renamer.h>
......@@ -40,20 +39,25 @@ enum
static void thunar_sbr_remove_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void thunar_sbr_remove_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void thunar_sbr_remove_renamer_realize (GtkWidget *widget);
static gchar *thunar_sbr_remove_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void thunar_sbr_remove_renamer_update (ThunarSbrRemoveRenamer *remove_renamer);
static void
thunar_sbr_remove_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_remove_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_remove_renamer_realize (GtkWidget *widget);
static gchar *
thunar_sbr_remove_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void
thunar_sbr_remove_renamer_update (ThunarSbrRemoveRenamer *remove_renamer);
......@@ -197,6 +201,7 @@ thunar_sbr_remove_renamer_init (ThunarSbrRemoveRenamer *remove_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
combo = gtk_combo_box_text_new ();
klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
......@@ -232,6 +237,7 @@ thunar_sbr_remove_renamer_init (ThunarSbrRemoveRenamer *remove_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
combo = gtk_combo_box_text_new ();
klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
......@@ -325,7 +331,7 @@ thunar_sbr_remove_renamer_realize (GtkWidget *widget)
static gchar*
static gchar *
thunar_sbr_remove_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
......@@ -344,9 +350,11 @@ thunar_sbr_remove_renamer_process (ThunarxRenamer *renamer,
/* determine the offsets for this file name */
end_offset = (remove_renamer->end_offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT)
? remove_renamer->end_offset : (text_length - remove_renamer->end_offset);
? remove_renamer->end_offset
: (text_length - remove_renamer->end_offset);
start_offset = (remove_renamer->start_offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT)
? remove_renamer->start_offset : (text_length - remove_renamer->start_offset);
? remove_renamer->start_offset
: (text_length - remove_renamer->start_offset);
/* check if anything should be removed */
if (G_UNLIKELY (start_offset >= end_offset || end_offset > text_length))
......@@ -376,9 +384,11 @@ thunar_sbr_remove_renamer_update (ThunarSbrRemoveRenamer *remove_renamer)
{
/* check if start and end offset make sense */
end_offset = (remove_renamer->end_offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT)
? remove_renamer->end_offset : (G_MAXUINT - remove_renamer->end_offset);
? remove_renamer->end_offset
: (G_MAXUINT - remove_renamer->end_offset);
start_offset = (remove_renamer->start_offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT)
? remove_renamer->start_offset : (G_MAXUINT - remove_renamer->start_offset);
? remove_renamer->start_offset
: (G_MAXUINT - remove_renamer->start_offset);
/* highlight invalid input by using theme specific colors */
if (G_UNLIKELY (start_offset >= end_offset))
......@@ -406,7 +416,7 @@ thunar_sbr_remove_renamer_update (ThunarSbrRemoveRenamer *remove_renamer)
*
* Return value: the newly allocated #ThunarSbrRemoveRenamer.
**/
ThunarSbrRemoveRenamer*
ThunarSbrRemoveRenamer *
thunar_sbr_remove_renamer_new (void)
{
return g_object_new (THUNAR_SBR_TYPE_REMOVE_RENAMER,
......@@ -597,5 +607,3 @@ thunar_sbr_remove_renamer_set_start_offset_mode (ThunarSbrRemoveRenamer *remove_
g_object_notify (G_OBJECT (remove_renamer), "start-offset-mode");
}
}
......@@ -28,33 +28,44 @@ G_BEGIN_DECLS;
typedef struct _ThunarSbrRemoveRenamerClass ThunarSbrRemoveRenamerClass;
typedef struct _ThunarSbrRemoveRenamer ThunarSbrRemoveRenamer;
#define THUNAR_SBR_TYPE_REMOVE_RENAMER (thunar_sbr_remove_renamer_get_type ())
#define THUNAR_SBR_REMOVE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamer))
#define THUNAR_SBR_REMOVE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamerClass))
#define THUNAR_SBR_IS_REMOVE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER))
#define THUNAR_SBR_TYPE_REMOVE_RENAMER (thunar_sbr_remove_renamer_get_type ())
#define THUNAR_SBR_REMOVE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamer))
#define THUNAR_SBR_REMOVE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamerClass))
#define THUNAR_SBR_IS_REMOVE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER))
#define THUNAR_SBR_IS_REMOVE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_REMOVE_RENAMER))
#define THUNAR_SBR_REMOVE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamerClass))
#define THUNAR_SBR_REMOVE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_REMOVE_RENAMER, ThunarSbrRemoveRenamerClass))
GType thunar_sbr_remove_renamer_get_type (void) G_GNUC_CONST;
void thunar_sbr_remove_renamer_register_type (ThunarxProviderPlugin *plugin);
GType
thunar_sbr_remove_renamer_get_type (void) G_GNUC_CONST;
void
thunar_sbr_remove_renamer_register_type (ThunarxProviderPlugin *plugin);
ThunarSbrRemoveRenamer *thunar_sbr_remove_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrRemoveRenamer *
thunar_sbr_remove_renamer_new (void) G_GNUC_MALLOC;
guint thunar_sbr_remove_renamer_get_end_offset (ThunarSbrRemoveRenamer *remove_renamer);
void thunar_sbr_remove_renamer_set_end_offset (ThunarSbrRemoveRenamer *remove_renamer,
guint end_offset);
guint
thunar_sbr_remove_renamer_get_end_offset (ThunarSbrRemoveRenamer *remove_renamer);
void
thunar_sbr_remove_renamer_set_end_offset (ThunarSbrRemoveRenamer *remove_renamer,
guint end_offset);
ThunarSbrOffsetMode thunar_sbr_remove_renamer_get_end_offset_mode (ThunarSbrRemoveRenamer *remove_renamer);
void thunar_sbr_remove_renamer_set_end_offset_mode (ThunarSbrRemoveRenamer *remove_renamer,
ThunarSbrOffsetMode end_offset_mode);
ThunarSbrOffsetMode
thunar_sbr_remove_renamer_get_end_offset_mode (ThunarSbrRemoveRenamer *remove_renamer);
void
thunar_sbr_remove_renamer_set_end_offset_mode (ThunarSbrRemoveRenamer *remove_renamer,
ThunarSbrOffsetMode end_offset_mode);
guint thunar_sbr_remove_renamer_get_start_offset (ThunarSbrRemoveRenamer *remove_renamer);
void thunar_sbr_remove_renamer_set_start_offset (ThunarSbrRemoveRenamer *remove_renamer,
guint start_offset);
guint
thunar_sbr_remove_renamer_get_start_offset (ThunarSbrRemoveRenamer *remove_renamer);
void
thunar_sbr_remove_renamer_set_start_offset (ThunarSbrRemoveRenamer *remove_renamer,
guint start_offset);
ThunarSbrOffsetMode thunar_sbr_remove_renamer_get_start_offset_mode (ThunarSbrRemoveRenamer *remove_renamer);
void thunar_sbr_remove_renamer_set_start_offset_mode (ThunarSbrRemoveRenamer *remove_renamer,
ThunarSbrOffsetMode start_offset_mode);
ThunarSbrOffsetMode
thunar_sbr_remove_renamer_get_start_offset_mode (ThunarSbrRemoveRenamer *remove_renamer);
void
thunar_sbr_remove_renamer_set_start_offset_mode (ThunarSbrRemoveRenamer *remove_renamer,
ThunarSbrOffsetMode start_offset_mode);
G_END_DECLS;
......
......@@ -34,9 +34,8 @@
#include <pcre2.h>
#endif
#include <thunar-sbr/thunar-sbr-replace-renamer.h>
#include <libxfce4util/libxfce4util.h>
#include <thunar-sbr/thunar-sbr-replace-renamer.h>
......@@ -52,24 +51,31 @@ enum
static void thunar_sbr_replace_renamer_finalize (GObject *object);
static void thunar_sbr_replace_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void thunar_sbr_replace_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void thunar_sbr_replace_renamer_realize (GtkWidget *widget);
static gchar *thunar_sbr_replace_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
static void
thunar_sbr_replace_renamer_finalize (GObject *object);
static void
thunar_sbr_replace_renamer_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_replace_renamer_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void
thunar_sbr_replace_renamer_realize (GtkWidget *widget);
static gchar *
thunar_sbr_replace_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
guint idx);
#ifdef HAVE_PCRE2
static gchar *thunar_sbr_replace_renamer_pcre_exec (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *text);
static void thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer);
static gchar *
thunar_sbr_replace_renamer_pcre_exec (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *text);
static void
thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer);
#endif
......@@ -89,12 +95,12 @@ struct _ThunarSbrReplaceRenamer
gchar *replacement;
/* TRUE if PCRE is available and supports UTF-8 */
gint utf8_regexp_supported;
gint utf8_regexp_supported;
/* PCRE compiled pattern */
#ifdef HAVE_PCRE2
pcre2_code *pcre_pattern;
gint pcre_capture_count;
pcre2_code *pcre_pattern;
gint pcre_capture_count;
#endif
};
......@@ -194,11 +200,11 @@ thunar_sbr_replace_renamer_init (ThunarSbrReplaceRenamer *replace_renamer)
#ifdef HAVE_PCRE2
/* check if PCRE supports UTF-8 */
if (pcre2_config (PCRE2_CONFIG_COMPILED_WIDTHS, &pcre2_compiled_widths) >= 0)
{
/* bit0 indicates 8-bit support. bit1 and bit2 indicate 16-bit and 32-bit support respectively. */
if ((pcre2_compiled_widths & (1 << 0)) != 0)
replace_renamer->utf8_regexp_supported = TRUE;
}
{
/* bit0 indicates 8-bit support. bit1 and bit2 indicate 16-bit and 32-bit support respectively. */
if ((pcre2_compiled_widths & (1 << 0)) != 0)
replace_renamer->utf8_regexp_supported = TRUE;
}
#endif
grid = gtk_grid_new ();
......@@ -227,6 +233,7 @@ thunar_sbr_replace_renamer_init (ThunarSbrReplaceRenamer *replace_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
button = gtk_check_button_new_with_mnemonic (_("Regular _Expression"));
g_object_bind_property (G_OBJECT (button), "active", G_OBJECT (replace_renamer), "regexp", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
......@@ -257,6 +264,7 @@ thunar_sbr_replace_renamer_init (ThunarSbrReplaceRenamer *replace_renamer)
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
atk_relation_set_add (relations, relation);
g_object_unref (G_OBJECT (relation));
g_object_unref (relations);
button = gtk_check_button_new_with_mnemonic (_("C_ase Sensitive Search"));
g_object_bind_property (G_OBJECT (button), "active", G_OBJECT (replace_renamer), "case-sensitive", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
......@@ -370,7 +378,7 @@ thunar_sbr_replace_renamer_realize (GtkWidget *widget)
static gchar*
static gchar *
tsrr_replace (const gchar *text,
const gchar *pattern,
const gchar *replacement,
......@@ -418,7 +426,7 @@ tsrr_replace (const gchar *text,
static gchar*
static gchar *
thunar_sbr_replace_renamer_process (ThunarxRenamer *renamer,
ThunarxFileInfo *file,
const gchar *text,
......@@ -450,21 +458,21 @@ thunar_sbr_replace_renamer_process (ThunarxRenamer *renamer,
#ifdef HAVE_PCRE2
static gchar*
static gchar *
thunar_sbr_replace_renamer_pcre_exec (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *subject)
{
GString *result;
int error;
PCRE2_SIZE erroffset;
gchar output[1024];
pcre2_code *compiled_pattern;
PCRE2_SIZE outlen;
int n_substitutions; /* number of substitutions that were carried out */
GString *result;
int error;
PCRE2_SIZE erroffset;
gchar output[1024];
pcre2_code *compiled_pattern;
PCRE2_SIZE outlen;
int n_substitutions; /* number of substitutions that were carried out */
result = g_string_sized_new (32);
compiled_pattern = pcre2_compile_8 ((PCRE2_SPTR)replace_renamer->pattern,
compiled_pattern = pcre2_compile_8 ((PCRE2_SPTR) replace_renamer->pattern,
PCRE2_ZERO_TERMINATED,
0,
&error,
......@@ -475,25 +483,25 @@ thunar_sbr_replace_renamer_pcre_exec (ThunarSbrReplaceRenamer *replace_renamer,
pcre2_jit_compile (compiled_pattern, PCRE2_JIT_COMPLETE);
outlen = sizeof (output) / sizeof(PCRE2_UCHAR);
outlen = sizeof (output) / sizeof (PCRE2_UCHAR);
n_substitutions = pcre2_substitute (compiled_pattern,
(PCRE2_SPTR)subject,
(PCRE2_SPTR) subject,
PCRE2_ZERO_TERMINATED,
0,
PCRE2_SUBSTITUTE_GLOBAL | PCRE2_SUBSTITUTE_EXTENDED,
0,
0,
(PCRE2_SPTR)replace_renamer->replacement,
(PCRE2_SPTR) replace_renamer->replacement,
PCRE2_ZERO_TERMINATED,
(PCRE2_UCHAR *)output,
(PCRE2_UCHAR *) output,
&outlen);
if (n_substitutions < 0)
{
PCRE2_UCHAR buffer[256];
pcre2_get_error_message (error, buffer, sizeof(buffer));
g_warning ("PCRE2 substitution failed at offset %d: %s\n", (int)erroffset, buffer);
pcre2_get_error_message (error, buffer, sizeof (buffer));
g_warning ("PCRE2 substitution failed at offset %d: %s\n", (int) erroffset, buffer);
return g_strdup (subject);
}
......@@ -526,13 +534,13 @@ thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer
pcre2_code_free (replace_renamer->pcre_pattern);
/* try to compile the new pattern */
replace_renamer->pcre_pattern = pcre2_compile ((PCRE2_SPTR)replace_renamer->pattern, PCRE2_ZERO_TERMINATED, 0, &error, &erroffset, 0);
replace_renamer->pcre_pattern = pcre2_compile ((PCRE2_SPTR) replace_renamer->pattern, PCRE2_ZERO_TERMINATED, 0, &error, &erroffset, 0);
if (replace_renamer->pcre_pattern == NULL)
{
PCRE2_UCHAR buffer[256];
pcre2_get_error_message (error, buffer, sizeof(buffer));
g_warning ("PCRE2 compilation failed at offset %d: %s\n", (int)erroffset, buffer);
pcre2_get_error_message (error, buffer, sizeof (buffer));
g_warning ("PCRE2 compilation failed at offset %d: %s\n", (int) erroffset, buffer);
}
}
......@@ -584,7 +592,7 @@ thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer
*
* Return value: the newly allocated #ThunarSbrReplaceRenamer.
**/
ThunarSbrReplaceRenamer*
ThunarSbrReplaceRenamer *
thunar_sbr_replace_renamer_new (void)
{
return g_object_new (THUNAR_SBR_TYPE_REPLACE_RENAMER,
......@@ -658,7 +666,7 @@ thunar_sbr_replace_renamer_set_case_sensitive (ThunarSbrReplaceRenamer *replace_
*
* Return value: the search pattern for @replace_renamer.
**/
const gchar*
const gchar *
thunar_sbr_replace_renamer_get_pattern (ThunarSbrReplaceRenamer *replace_renamer)
{
g_return_val_if_fail (THUNAR_SBR_IS_REPLACE_RENAMER (replace_renamer), NULL);
......@@ -767,7 +775,7 @@ thunar_sbr_replace_renamer_set_regexp (ThunarSbrReplaceRenamer *replace_renamer,
*
* Return value: the replacement for @replace_renamer.
**/
const gchar*
const gchar *
thunar_sbr_replace_renamer_get_replacement (ThunarSbrReplaceRenamer *replace_renamer)
{
g_return_val_if_fail (THUNAR_SBR_IS_REPLACE_RENAMER (replace_renamer), NULL);
......@@ -804,6 +812,3 @@ thunar_sbr_replace_renamer_set_replacement (ThunarSbrReplaceRenamer *replace_ren
g_object_notify (G_OBJECT (replace_renamer), "replacement");
}
}
......@@ -28,33 +28,44 @@ G_BEGIN_DECLS;
typedef struct _ThunarSbrReplaceRenamerClass ThunarSbrReplaceRenamerClass;
typedef struct _ThunarSbrReplaceRenamer ThunarSbrReplaceRenamer;
#define THUNAR_SBR_TYPE_REPLACE_RENAMER (thunar_sbr_replace_renamer_get_type ())
#define THUNAR_SBR_REPLACE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamer))
#define THUNAR_SBR_REPLACE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamerClass))
#define THUNAR_SBR_IS_REPLACE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER))
#define THUNAR_SBR_TYPE_REPLACE_RENAMER (thunar_sbr_replace_renamer_get_type ())
#define THUNAR_SBR_REPLACE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamer))
#define THUNAR_SBR_REPLACE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamerClass))
#define THUNAR_SBR_IS_REPLACE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER))
#define THUNAR_SBR_IS_REPLACE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_REPLACE_RENAMER))
#define THUNAR_SBR_REPLACE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamerClass))
#define THUNAR_SBR_REPLACE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_REPLACE_RENAMER, ThunarSbrReplaceRenamerClass))
GType thunar_sbr_replace_renamer_get_type (void) G_GNUC_CONST;
void thunar_sbr_replace_renamer_register_type (ThunarxProviderPlugin *plugin);
GType
thunar_sbr_replace_renamer_get_type (void) G_GNUC_CONST;
void
thunar_sbr_replace_renamer_register_type (ThunarxProviderPlugin *plugin);
ThunarSbrReplaceRenamer *thunar_sbr_replace_renamer_new (void) G_GNUC_MALLOC;
ThunarSbrReplaceRenamer *
thunar_sbr_replace_renamer_new (void) G_GNUC_MALLOC;
gboolean thunar_sbr_replace_renamer_get_case_sensitive (ThunarSbrReplaceRenamer *replace_renamer);
void thunar_sbr_replace_renamer_set_case_sensitive (ThunarSbrReplaceRenamer *replace_renamer,
gboolean case_sensitive);
gboolean
thunar_sbr_replace_renamer_get_case_sensitive (ThunarSbrReplaceRenamer *replace_renamer);
void
thunar_sbr_replace_renamer_set_case_sensitive (ThunarSbrReplaceRenamer *replace_renamer,
gboolean case_sensitive);
const gchar *thunar_sbr_replace_renamer_get_pattern (ThunarSbrReplaceRenamer *replace_renamer);
void thunar_sbr_replace_renamer_set_pattern (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *pattern);
const gchar *
thunar_sbr_replace_renamer_get_pattern (ThunarSbrReplaceRenamer *replace_renamer);
void
thunar_sbr_replace_renamer_set_pattern (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *pattern);
gboolean thunar_sbr_replace_renamer_get_regexp (ThunarSbrReplaceRenamer *replace_renamer);
void thunar_sbr_replace_renamer_set_regexp (ThunarSbrReplaceRenamer *replace_renamer,
gboolean regexp);
gboolean
thunar_sbr_replace_renamer_get_regexp (ThunarSbrReplaceRenamer *replace_renamer);
void
thunar_sbr_replace_renamer_set_regexp (ThunarSbrReplaceRenamer *replace_renamer,
gboolean regexp);
const gchar *thunar_sbr_replace_renamer_get_replacement (ThunarSbrReplaceRenamer *replace_renamer);
void thunar_sbr_replace_renamer_set_replacement (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *replacement);
const gchar *
thunar_sbr_replace_renamer_get_replacement (ThunarSbrReplaceRenamer *replace_renamer);
void
thunar_sbr_replace_renamer_set_replacement (ThunarSbrReplaceRenamer *replace_renamer,
const gchar *replacement);
G_END_DECLS;
......
......@@ -17,12 +17,16 @@ thunar_sendto_email_SOURCES = \
main.c
thunar_sendto_email_CFLAGS = \
$(EXO_CFLAGS) \
$(GIO_CFLAGS) \
$(GTK_CFLAGS) \
$(LIBXFCE4UI_CFLAGS) \
$(LIBXFCE4UTIL_CFLAGS) \
$(PLATFORM_CFLAGS)
thunar_sendto_email_LDADD = \
$(EXO_LIBS) \
$(GIO_LIBS) \
$(GTK_LIBS) \
$(LIBXFCE4UI_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
$(PLATFORM_LDFLAGS)
......@@ -32,11 +36,14 @@ desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
%.desktop.in: %.desktop.in.in
sed -e "s,\@HELPERDIR\@,$(HELPER_PATH_PREFIX),g" < $< > $@
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
%.desktop: %.desktop.in Makefile
$(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
EXTRA_DIST = \
$(desktop_in_in_files) \
README.md
README.md \
meson.build \
$(NULL)
DISTCLEANFILES = \
$(desktop_in_files) \
......
Thunar Sendto Email (thunar-sendto-email)
=========================================
Thunar-sendto-email is an extension to Thunar, which adds an additional entry to the "Send To" sub menu, named "Mail Recipient", that starts the mail composer and attaches the selected files (using the exo-open mechanism).
Thunar-sendto-email is an extension to Thunar, which adds an additional entry to the "Send To" sub menu, named "Mail Recipient", that starts the mail composer and attaches the selected files (using the xfce-open mechanism).
The extension uses the zip command to compress folders prior to sending them to the mail client, since most mail clients cannot handle directories as attachments. For regular files, larger than 200KiB, the extension prompts the user whether to compress the files (using the zip command) prior to sending them to the mail client.
......@@ -54,14 +54,11 @@
#include <unistd.h>
#endif
#include <gio/gio.h>
#include <glib.h>
#include <glib/gstdio.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
#include <exo/exo.h>
#include <libxfce4ui/libxfce4ui.h>
#include <libxfce4util/libxfce4util.h>
......@@ -161,20 +158,20 @@ tse_file_is_archive (GFileInfo *file_info)
const gchar *content_type;
guint n;
/* determine the content type */
content_type = g_file_info_get_content_type (file_info);
content_type = g_file_info_get_attribute_string (file_info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE);
if (content_type == NULL)
{
return FALSE;
}
{
return FALSE;
}
for (n = 0; n < G_N_ELEMENTS (TSE_MIME_TYPES); ++n)
{
/* check if this mime type matches */
if (g_content_type_is_a (content_type, TSE_MIME_TYPES[n]))
{
/* yep, that's a match then */
return TRUE;
/* check if this mime type matches */
if (g_content_type_is_a (content_type, TSE_MIME_TYPES[n]))
{
/* yep, that's a match then */
return TRUE;
}
}
}
return FALSE;
}
......@@ -182,13 +179,13 @@ tse_file_is_archive (GFileInfo *file_info)
static gint
tse_ask_compress (GList *infos)
{
TseData *tse_data;
GtkWidget *message;
guint64 total_size = 0;
GList *lp;
gint response = TSE_RESPONSE_PLAIN;
gint n_archives = 0;
gint n_infos = 0;
TseData *tse_data;
GtkWidget *message;
guint64 total_size = 0;
GList *lp;
gint response = TSE_RESPONSE_PLAIN;
gint n_archives = 0;
gint n_infos = 0;
/* check the file infos */
for (lp = infos; lp != NULL; lp = lp->next, ++n_infos)
......@@ -264,18 +261,18 @@ tse_child_watch (GPid pid,
gint status,
gpointer user_data)
{
g_object_set_data (G_OBJECT (user_data), I_("tse-child-status"), GINT_TO_POINTER (status));
g_object_set_data (G_OBJECT (user_data), I_ ("tse-child-status"), GINT_TO_POINTER (status));
gtk_dialog_response (GTK_DIALOG (user_data), GTK_RESPONSE_YES);
}
static gboolean
tse_progress_cb(gpointer user_data)
tse_progress_cb (gpointer user_data)
{
GtkWidget *pulse = user_data;
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(pulse));
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pulse));
return TRUE;
}
......@@ -304,7 +301,7 @@ tse_progress (const gchar *working_directory,
/* allocate the progress dialog */
dialog = gtk_dialog_new_with_buttons (_("Compressing files..."),
NULL, 0,
_("_Cancel"), GTK_RESPONSE_CANCEL,
_("_Cancel"), GTK_RESPONSE_CANCEL,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, -1);
......@@ -349,7 +346,7 @@ tse_progress (const gchar *working_directory,
if (response == GTK_RESPONSE_YES)
{
/* check if the command failed */
status = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), I_("tse-child-status")));
status = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), I_ ("tse-child-status")));
if (!WIFEXITED (status) || WEXITSTATUS (status) != 0)
{
/* tell the user that the command failed */
......@@ -378,7 +375,7 @@ tse_progress (const gchar *working_directory,
#ifndef HAVE_MKDTEMP
static gchar*
static gchar *
mkdtemp (gchar *tmpl)
{
static const gchar LETTERS[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
......@@ -400,7 +397,8 @@ mkdtemp (gchar *tmpl)
{
/* fill in the random bits */
for (j = 0, v = value; j < 6; ++j)
tmpl[(len - 6) + j] = LETTERS[v % 62]; v /= 62;
tmpl[(len - 6) + j] = LETTERS[v % 62];
v /= 62;
/* try to create the directory */
if (g_mkdir (tmpl, 0700) == 0)
......@@ -420,20 +418,20 @@ static gboolean
tse_compress (GList *infos,
gchar **zipfile_return)
{
TseData *tse_data;
gboolean succeed = TRUE;
GError *error = NULL;
GFile *parent;
GFile *parent_parent;
gchar **argv;
gchar *base_name;
gchar *zipfile;
gchar *tmppath;
gchar *tmpdir;
gchar *path;
gchar *dot;
GList *lp;
gint n;
TseData *tse_data;
gboolean succeed = TRUE;
GError *error = NULL;
GFile *parent;
GFile *parent_parent;
gchar **argv;
gchar *base_name;
gchar *zipfile;
gchar *tmppath;
gchar *tmpdir;
gchar *path;
gchar *dot;
GList *lp;
gint n;
/* create a temporary directory */
tmpdir = g_strdup ("/tmp/thunar-sendto-email.XXXXXX");
......@@ -538,9 +536,7 @@ tse_compress (GList *infos,
if (G_LIKELY (error != NULL))
{
/* tell the user that we failed to compress the file(s) */
tse_error (error, ngettext ("Failed to compress %d file",
"Failed to compress %d files",
g_list_length (infos)),
tse_error (error, ngettext ("Failed to compress %d file", "Failed to compress %d files", g_list_length (infos)),
g_list_length (infos));
g_error_free (error);
}
......@@ -571,18 +567,18 @@ tse_compress (GList *infos,
int
main (int argc, char **argv)
{
GFileInfo *info;
TseData *tse_data;
GFile *file;
GFile *parent;
GString *mailto;
GError *error = NULL;
GList *infos = NULL;
gchar **attachments = NULL;
gchar *zipfile = NULL;
GList *lp;
gint response;
gint n;
GFileInfo *info;
TseData *tse_data;
GFile *file;
GFile *parent;
GString *mailto;
GError *error = NULL;
GList *infos = NULL;
gchar **attachments = NULL;
gchar *zipfile = NULL;
GList *lp;
gint response;
gint n;
/* setup translation domain */
xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
......@@ -630,10 +626,7 @@ main (int argc, char **argv)
/* try to determine the info */
info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
G_FILE_ATTRIBUTE_STANDARD_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "," G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_STANDARD_TYPE "," G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
G_FILE_QUERY_INFO_NONE, NULL, &error);
/* check if we failed */
......@@ -687,7 +680,7 @@ main (int argc, char **argv)
g_strfreev (attachments);
/* open the mail composer */
if (!exo_execute_preferred_application ("MailReader", mailto->str, NULL, NULL, &error))
if (!xfce_execute_preferred_application ("MailReader", mailto->str, NULL, NULL, &error))
{
/* tell the user that we failed */
tse_error (error, _("Failed to compose new email"));
......@@ -710,4 +703,3 @@ main (int argc, char **argv)
return EXIT_SUCCESS;
}
executable(
'thunar-sendto-email',
[
'main.c',
],
c_args: [
'-DG_LOG_DOMAIN="@0@"'.format('thunar-sendto-email'),
],
include_directories: [
include_directories('..' / '..'),
],
dependencies: [
glib,
gtk,
libxfce4ui,
libxfce4util,
],
install: true,
install_dir: helper_path_prefix / 'Thunar',
)
desktop_in = configure_file(
configuration: configuration_data({
'HELPERDIR': helper_path_prefix,
}),
input: 'thunar-sendto-email.desktop.in.in',
output: 'thunar-sendto-email.desktop.in',
install: false,
)
i18n.merge_file(
input: desktop_in,
output: 'thunar-sendto-email.desktop',
po_dir: '..' / '..' / 'po',
type: 'desktop',
install: true,
install_dir: get_option('prefix') / get_option('datadir') / 'Thunar' / 'sendto',
)
[Desktop Entry]
Type=Application
Version=1.0
_Name=Mail Recipient
Name=Mail Recipient
Icon=mail-send
Exec=@HELPERDIR@/Thunar/thunar-sendto-email %F
......@@ -36,9 +36,9 @@ libthunar_tpa_la_LDFLAGS = \
desktopdir = $(datadir)/xfce4/panel/plugins
desktop_in_files = thunar-tpa.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
%.desktop: %.desktop.in Makefile
$(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
if MAINTAINER_MODE
BUILT_SOURCES = \
thunar-tpa-bindings.c \
thunar-tpa-bindings.h
......@@ -49,12 +49,13 @@ DISTCLEANFILES = \
thunar-tpa-bindings.c thunar-tpa-bindings.h: $(srcdir)/thunar-tpa-bindings.xml Makefile
$(AM_V_GEN) gdbus-codegen --generate-c-code thunar-tpa-bindings --c-namespace thunarTPA --interface-prefix org.xfce. $(srcdir)/thunar-tpa-bindings.xml
endif
EXTRA_DIST = \
$(desktop_in_files) \
thunar-tpa-bindings.xml \
README.md
README.md \
meson.build \
$(NULL)
CLEANFILES = \
$(desktop_DATA)
......
plugin_sources = [
'thunar-tpa.c',
]
plugin_sources += gnome.gdbus_codegen(
'thunar-tpa-bindings',
sources: 'thunar-tpa-bindings.xml',
interface_prefix: 'org.xfce',
namespace: 'thunarTPA',
install_header: false,
)
plugin_install_subdir = 'xfce4' / 'panel' / 'plugins'
shared_module(
'thunar-tpa',
plugin_sources,
gnu_symbol_visibility: 'hidden',
c_args: [
'-DG_LOG_DOMAIN="@0@"'.format('libthunar-tpa'),
],
include_directories: [
include_directories('..'),
include_directories('..' / '..'),
],
dependencies: [
glib,
gtk,
libxfce4ui,
libxfce4util,
libxfce4panel,
],
install: true,
install_dir: get_option('prefix') / get_option('libdir') / plugin_install_subdir,
)
i18n.merge_file(
input: 'thunar-tpa.desktop.in',
output: 'thunar-tpa.desktop',
po_dir: '..' / '..' / 'po',
type: 'desktop',
install: true,
install_dir: get_option('prefix') / get_option('datadir') / plugin_install_subdir,
)