wm-properties: Cosmetic cleanup mime-type: more work. Syncing with home
wm-properties: Cosmetic cleanup mime-type: more work. Syncing with home 'puter
This commit is contained in:
parent
3c19d104a6
commit
d39d48db95
8 changed files with 159 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
|||
1999-04-09 Jonathan Blandford <jrb@redhat.com>
|
||||
|
||||
* capplets/wm-properties/wm-properties-capplet.c (wm_setup):
|
||||
Prettified the capplet a little.
|
||||
|
||||
1999-04-10 Alex Roberts <bse@dial.pipex.com>
|
||||
|
||||
* capplets/screensaver-properties/screensaver-desktops/: Added
|
||||
|
@ -11,7 +16,6 @@
|
|||
HAVE_REDHAT_XSCREENSAVER_RPM (i forget who told me about that,
|
||||
someone in #Gnome..)
|
||||
|
||||
|
||||
1999-04-03 Ettore Perazzoli <ettore@comm2000.it>
|
||||
|
||||
* capplets/wm-properties/wm-properties-capplet.c
|
||||
|
|
|
@ -11,6 +11,5 @@ void launch_edit_window (MimeInfo *mi);
|
|||
void initialize_main_win_vals (void);
|
||||
void hide_edit_window (void);
|
||||
void show_edit_window (void);
|
||||
void edit_clicked (void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,11 @@
|
|||
#include "mime-data.h"
|
||||
#include "mime-info.h"
|
||||
#include "new-mime-window.h"
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
/* Prototypes */
|
||||
static void mime_fill_from_file (const char *filename, gboolean init_user);
|
||||
static void mime_load_from_dir (const char *mime_info_dir, gboolean system_dir);
|
||||
|
@ -57,7 +62,7 @@ add_to_key (char *mime_type, char *def, GHashTable *table)
|
|||
char *s, *p, *ext;
|
||||
int used;
|
||||
MimeInfo *info;
|
||||
|
||||
|
||||
info = g_hash_table_lookup (table, (const void *) mime_type);
|
||||
if (info == NULL) {
|
||||
info = g_malloc (sizeof (MimeInfo));
|
||||
|
@ -341,3 +346,121 @@ init_mime_type (void)
|
|||
g_free (mime_info_dir);
|
||||
init_mime_info ();
|
||||
}
|
||||
void
|
||||
add_new_mime_type (gchar *mime_type, gchar *ext, gchar *regexp1, gchar *regexp2)
|
||||
{
|
||||
gchar *temp;
|
||||
MimeInfo *mi;
|
||||
/* first we make sure that the information is good */
|
||||
|
||||
/* passed check, now we add it. */
|
||||
if (ext) {
|
||||
temp = g_strconcat ("ext: ", ext, NULL);
|
||||
add_to_key (mime_type, temp, user_mime_types);
|
||||
mi = (MimeInfo *) g_hash_table_lookup (user_mime_types, mime_type);
|
||||
mi->ext_readable[0] = g_strdup (ext);
|
||||
g_free (temp);
|
||||
}
|
||||
if (regexp1) {
|
||||
temp = g_strconcat ("regex: ", regexp1, NULL);
|
||||
add_to_key (mime_type, temp, user_mime_types);
|
||||
g_free (temp);
|
||||
}
|
||||
if (regexp2) {
|
||||
temp = g_strconcat ("regex,2: ", regexp2, NULL);
|
||||
add_to_key (mime_type, temp, user_mime_types);
|
||||
g_free (temp);
|
||||
}
|
||||
}
|
||||
static void
|
||||
write_mime_foreach (gpointer mime_type, gpointer info, gpointer data)
|
||||
{
|
||||
gchar *buf;
|
||||
MimeInfo *mi = (MimeInfo *) info;
|
||||
g_print ("in write_mime_foreach:%s:\n", (gchar *) mime_type);
|
||||
fwrite ((char *) mi->mime_type, 1, strlen ((char *) mi->mime_type), (FILE *) data);
|
||||
fwrite ("\n", 1, 1, (FILE *) data);
|
||||
if (mi->ext_readable[0]) {
|
||||
fwrite ("\text: ", 1, strlen ("\text: "), (FILE *) data);
|
||||
fwrite (mi->ext_readable[0], 1,
|
||||
strlen (mi->ext_readable[0]),
|
||||
(FILE *) data);
|
||||
fwrite ("\n", 1, 1, (FILE *) data);
|
||||
}
|
||||
if (mi->regex_readable[0]) {
|
||||
fwrite ("\tregex: ", 1, strlen ("\tregex: "), (FILE *) data);
|
||||
fwrite (mi->regex_readable[0], 1,
|
||||
strlen (mi->regex_readable[0]),
|
||||
(FILE *) data);
|
||||
fwrite ("\n", 1, 1, (FILE *) data);
|
||||
}
|
||||
if (mi->regex_readable[1]) {
|
||||
fwrite ("\tregex,2: ", 1, strlen ("\tregex,2: "), (FILE *) data);
|
||||
fwrite (mi->regex_readable[1], 1,
|
||||
strlen (mi->regex_readable[1]),
|
||||
(FILE *) data);
|
||||
fwrite ("\n", 1, 1, (FILE *) data);
|
||||
}
|
||||
fwrite ("\n", 1, 1, (FILE *) data);
|
||||
}
|
||||
|
||||
static void
|
||||
run_error (gchar *message)
|
||||
{
|
||||
GtkWidget *error_box;
|
||||
|
||||
error_box = gnome_message_box_new (
|
||||
message,
|
||||
GNOME_MESSAGE_BOX_ERROR,
|
||||
GNOME_STOCK_BUTTON_OK,
|
||||
NULL);
|
||||
gnome_dialog_run_and_close (GNOME_DIALOG (error_box));
|
||||
}
|
||||
static void
|
||||
write_mime (GHashTable *hash)
|
||||
{
|
||||
struct stat s;
|
||||
gchar *dirname, *filename;
|
||||
FILE *file;
|
||||
GtkWidget *error_box;
|
||||
|
||||
dirname = g_concat_dir_and_file (gnome_util_user_home (), ".gnome/mime-info");
|
||||
if ((stat (dirname, &s) < 0) || !(S_ISDIR (s.st_mode))){
|
||||
if (errno == ENOENT) {
|
||||
if (mkdir (dirname, S_IRWXU) < 0) {
|
||||
run_error ("We are unable to create the directory\n"
|
||||
"~/.gnome/mime-info\n\n"
|
||||
"We will not be able to save the state.");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
run_error ("We are unable to access the directory\n"
|
||||
"~/.gnome/mime-info\n\n"
|
||||
"We will not be able to save the state.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
filename = g_concat_dir_and_file (dirname, "user.mime");
|
||||
|
||||
remove (filename);
|
||||
file = fopen (filename, "w");
|
||||
if (file == NULL) {
|
||||
run_error (_("Cannot create the file\n~/.gnome/mime-info/user.mime\n\n"
|
||||
"We will not be able to save the state"));
|
||||
return;
|
||||
}
|
||||
g_hash_table_foreach (hash, write_mime_foreach, file);
|
||||
g_hash_table_foreach (hash, write_mime_foreach, file);
|
||||
fclose (file);
|
||||
}
|
||||
|
||||
void write_user_mime (void)
|
||||
{
|
||||
write_mime (user_mime_types);
|
||||
}
|
||||
|
||||
void write_initial_mime (void)
|
||||
{
|
||||
write_mime (initial_user_mime_types);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,5 +20,9 @@ typedef struct {
|
|||
GtkWidget *get_mime_clist (void);
|
||||
void init_mime_type (void);
|
||||
void add_clicked (GtkWidget *widget, gpointer data);
|
||||
void edit_clicked ();
|
||||
void add_new_mime_type (gchar *mime_type, gchar *ext, gchar *regexp1, gchar *regexp2);
|
||||
void write_user_mime (void);
|
||||
void write_initial_mime (void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -13,5 +13,4 @@ void set_mime_key_value (gchar *mime_type, gchar *key, gchar *value);
|
|||
const char * local_mime_get_value (const char *mime_type, char *key);
|
||||
void write_user_keys (void);
|
||||
void write_initial_keys (void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -38,11 +38,13 @@ static void
|
|||
try_callback ()
|
||||
{
|
||||
write_user_keys ();
|
||||
write_user_mime ();
|
||||
}
|
||||
static void
|
||||
revert_callback ()
|
||||
{
|
||||
write_initial_keys ();
|
||||
write_initial_mime ();
|
||||
discard_mime_info ();
|
||||
initialize_main_win_vals ();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "new-mime-window.h"
|
||||
|
||||
#include "capplet-widget.h"
|
||||
static GtkWidget *add_dialog = NULL;
|
||||
extern GtkWidget *capplet;
|
||||
|
||||
/*Public functions */
|
||||
void
|
||||
|
@ -17,7 +18,7 @@ launch_new_mime_window (void)
|
|||
GtkWidget *table;
|
||||
|
||||
add_dialog = gnome_dialog_new (_("Add Mime Type"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL);
|
||||
label = gtk_label_new (_("Add a new Mime Type\n\nFor example: image/png"));
|
||||
label = gtk_label_new (_("Add a new Mime Type\nFor example: image/tiff; text/x-scheme"));
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
||||
|
@ -88,7 +89,13 @@ launch_new_mime_window (void)
|
|||
gtk_widget_show_all (GNOME_DIALOG (add_dialog)->vbox);
|
||||
switch (gnome_dialog_run (GNOME_DIALOG (add_dialog))) {
|
||||
case 0:
|
||||
|
||||
capplet_widget_state_changed (CAPPLET_WIDGET (capplet),
|
||||
TRUE);
|
||||
add_new_mime_type (gtk_entry_get_text (GTK_ENTRY (mime_entry)),
|
||||
gtk_entry_get_text (GTK_ENTRY (ext_entry)),
|
||||
gtk_entry_get_text (GTK_ENTRY (regex1_entry)),
|
||||
gtk_entry_get_text (GTK_ENTRY (regex2_entry)));
|
||||
|
||||
case 1:
|
||||
gtk_widget_destroy (add_dialog);
|
||||
default:;
|
||||
|
|
|
@ -117,6 +117,17 @@ gboolean restart_pending = FALSE;
|
|||
*/
|
||||
gboolean in_fill = FALSE;
|
||||
|
||||
static GtkWidget *
|
||||
left_aligned_button (gchar *label)
|
||||
{
|
||||
GtkWidget *button = gtk_button_new_with_label (label);
|
||||
gtk_misc_set_alignment (GTK_MISC (GTK_BIN (button)->child),
|
||||
0.0, 0.5);
|
||||
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child),
|
||||
GNOME_PAD_SMALL, 0);
|
||||
|
||||
return button;
|
||||
}
|
||||
static void
|
||||
restart_label_update (void)
|
||||
{
|
||||
|
@ -992,17 +1003,17 @@ wm_setup (void)
|
|||
util_vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), util_vbox, FALSE, FALSE, 0);
|
||||
|
||||
add_button = gtk_button_new_with_label (_("Add"));
|
||||
add_button = left_aligned_button (_("Add..."));
|
||||
gtk_signal_connect (GTK_OBJECT (add_button), "clicked",
|
||||
GTK_SIGNAL_FUNC (add_dialog), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (util_vbox), add_button, FALSE, FALSE, 0);
|
||||
|
||||
edit_button = gtk_button_new_with_label (_("Edit"));
|
||||
edit_button = left_aligned_button (_("Edit..."));
|
||||
gtk_signal_connect (GTK_OBJECT (edit_button), "clicked",
|
||||
GTK_SIGNAL_FUNC (edit_dialog), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (util_vbox), edit_button, FALSE, FALSE, 0);
|
||||
|
||||
delete_button = gtk_button_new_with_label (_("Delete"));
|
||||
delete_button = left_aligned_button (_("Delete"));
|
||||
gtk_signal_connect (GTK_OBJECT (delete_button), "clicked",
|
||||
GTK_SIGNAL_FUNC (delete), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (util_vbox), delete_button, FALSE, FALSE, 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue