began adding new add window. Will finish it later tonight...
-Jonathan
Этот коммит содержится в:
родитель
d2d6cd224a
Коммит
1bf4926ff7
@ -8,7 +8,8 @@ bin_PROGRAMS = mime-type-capplet
|
||||
|
||||
mime_type_capplet_SOURCES = mime-type-capplet.c\
|
||||
mime-data.h mime-data.c edit-window.c\
|
||||
edit-window.h mime-info.c mime-info.h
|
||||
edit-window.h mime-info.c mime-info.h \
|
||||
new-mime-window.h new-mime-window.c
|
||||
|
||||
mime_type_capplet_LDADD = ../../control-center/libcapplet.la \
|
||||
$(GNOME_LIBDIR) $(ORB_LIBS) \
|
||||
|
@ -145,7 +145,7 @@ initialize_main_win ()
|
||||
gtk_box_pack_start (GTK_BOX (hbox), main_win->regexp2_label, FALSE, FALSE, 0);
|
||||
|
||||
/* Actions box */
|
||||
frame = gtk_frame_new (_("Mime-Type Actions"));
|
||||
frame = gtk_frame_new (_("Mime Type Actions"));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
table = gtk_table_new (3, 2, FALSE);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), GNOME_PAD_SMALL);
|
||||
|
@ -13,16 +13,19 @@
|
||||
#include "edit-window.h"
|
||||
#include "mime-data.h"
|
||||
#include "mime-info.h"
|
||||
#include "new-mime-window.h"
|
||||
/* Prototypes */
|
||||
static void mime_fill_from_file (const char *filename);
|
||||
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);
|
||||
static void add_to_key (char *mime_type, char *def);
|
||||
static void add_to_key (char *mime_type, char *def, GHashTable *table);
|
||||
static char *get_priority (char *def, int *priority);
|
||||
|
||||
|
||||
/* Global variables */
|
||||
static char *current_lang;
|
||||
static GHashTable *mime_types = NULL;
|
||||
static GHashTable *initial_user_mime_types = NULL;
|
||||
static GHashTable *user_mime_types = NULL;
|
||||
static GtkWidget *clist = NULL;
|
||||
|
||||
/* Initialization functions */
|
||||
@ -48,14 +51,14 @@ get_priority (char *def, int *priority)
|
||||
return def;
|
||||
}
|
||||
static void
|
||||
add_to_key (char *mime_type, char *def)
|
||||
add_to_key (char *mime_type, char *def, GHashTable *table)
|
||||
{
|
||||
int priority = 1;
|
||||
char *s, *p, *ext;
|
||||
int used;
|
||||
MimeInfo *info;
|
||||
|
||||
info = g_hash_table_lookup (mime_types, (const void *) mime_type);
|
||||
info = g_hash_table_lookup (table, (const void *) mime_type);
|
||||
if (info == NULL) {
|
||||
info = g_malloc (sizeof (MimeInfo));
|
||||
info->mime_type = g_strdup (mime_type);
|
||||
@ -68,7 +71,7 @@ add_to_key (char *mime_type, char *def)
|
||||
info->ext_readable[0] = NULL;
|
||||
info->ext_readable[1] = NULL;
|
||||
info->keys = gnome_mime_get_keys (mime_type);
|
||||
g_hash_table_insert (mime_types, mime_type, info);
|
||||
g_hash_table_insert (table, mime_type, info);
|
||||
}
|
||||
if (strncmp (def, "ext", 3) == 0){
|
||||
char *tokp;
|
||||
@ -111,7 +114,7 @@ add_to_key (char *mime_type, char *def)
|
||||
}
|
||||
}
|
||||
static void
|
||||
mime_fill_from_file (const char *filename)
|
||||
mime_fill_from_file (const char *filename, gboolean init_user)
|
||||
{
|
||||
FILE *f;
|
||||
char buf [1024];
|
||||
@ -152,8 +155,11 @@ mime_fill_from_file (const char *filename)
|
||||
|
||||
if (*p == 0)
|
||||
continue;
|
||||
|
||||
add_to_key (current_key, p);
|
||||
add_to_key (current_key, p, mime_types);
|
||||
if (init_user) {
|
||||
add_to_key (current_key, p, initial_user_mime_types);
|
||||
add_to_key (current_key, p, user_mime_types);
|
||||
}
|
||||
used = TRUE;
|
||||
}
|
||||
} else {
|
||||
@ -182,7 +188,7 @@ mime_load_from_dir (const char *mime_info_dir, gboolean system_dir)
|
||||
return;
|
||||
if (system_dir) {
|
||||
filename = g_concat_dir_and_file (mime_info_dir, "gnome.mime");
|
||||
mime_fill_from_file (filename);
|
||||
mime_fill_from_file (filename, FALSE);
|
||||
g_free (filename);
|
||||
}
|
||||
while ((dent = readdir (dir)) != NULL){
|
||||
@ -200,12 +206,12 @@ mime_load_from_dir (const char *mime_info_dir, gboolean system_dir)
|
||||
continue;
|
||||
|
||||
filename = g_concat_dir_and_file (mime_info_dir, dent->d_name);
|
||||
mime_fill_from_file (filename);
|
||||
mime_fill_from_file (filename, FALSE);
|
||||
g_free (filename);
|
||||
}
|
||||
if (!system_dir) {
|
||||
filename = g_concat_dir_and_file (mime_info_dir, "user.mime");
|
||||
mime_fill_from_file (filename);
|
||||
mime_fill_from_file (filename, TRUE);
|
||||
g_free (filename);
|
||||
}
|
||||
closedir (dir);
|
||||
@ -285,6 +291,11 @@ edit_clicked ()
|
||||
if (mi)
|
||||
launch_edit_window (mi);
|
||||
}
|
||||
void
|
||||
add_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
launch_new_mime_window ();
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
get_mime_clist (void)
|
||||
@ -318,6 +329,8 @@ init_mime_type (void)
|
||||
char *mime_info_dir;
|
||||
|
||||
mime_types = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
initial_user_mime_types = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
user_mime_types = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
mime_info_dir = gnome_unconditional_datadir_file ("mime-info");
|
||||
mime_load_from_dir (mime_info_dir, TRUE);
|
||||
|
@ -19,6 +19,6 @@ typedef struct {
|
||||
|
||||
GtkWidget *get_mime_clist (void);
|
||||
void init_mime_type (void);
|
||||
|
||||
void add_clicked (GtkWidget *widget, gpointer data);
|
||||
|
||||
#endif
|
||||
|
@ -103,7 +103,7 @@ release_key_and_value (gpointer key, gpointer value, gpointer user_data)
|
||||
static gboolean
|
||||
remove_this_key (gpointer key, gpointer value, gpointer user_data)
|
||||
{
|
||||
if (strcmp (key, user_data) == 0){
|
||||
if (strcmp ((gchar *)key, (gchar *)user_data) == 0){
|
||||
g_free (key);
|
||||
g_free (value);
|
||||
return TRUE;
|
||||
|
@ -20,6 +20,19 @@ static void ok_callback ();
|
||||
static void cancel_callback ();
|
||||
static void help_callback ();
|
||||
GtkWidget *capplet;
|
||||
GtkWidget *delete_button;
|
||||
|
||||
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
|
||||
try_callback ()
|
||||
@ -56,15 +69,22 @@ init_mime_capplet ()
|
||||
GtkWidget *button;
|
||||
|
||||
capplet = capplet_widget_new ();
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), GNOME_PAD_SMALL);
|
||||
gtk_container_add (GTK_CONTAINER (capplet), hbox);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), get_mime_clist (), TRUE, TRUE, 0);
|
||||
vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_add (GTK_CONTAINER (capplet), vbox);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), get_mime_clist (), TRUE, TRUE, 0);
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
button = gtk_button_new_with_label (_("Edit"));
|
||||
gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
|
||||
button = left_aligned_button (_("Add..."));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
add_clicked, NULL);
|
||||
button = left_aligned_button (_("Edit..."));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
edit_clicked, NULL);
|
||||
delete_button = left_aligned_button (_("Delete"));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), delete_button, FALSE, FALSE, 0);
|
||||
gtk_widget_show_all (capplet);
|
||||
gtk_signal_connect(GTK_OBJECT(capplet), "try",
|
||||
GTK_SIGNAL_FUNC(try_callback), NULL);
|
||||
|
109
gnome/mime-type/new-mime-window.c
Обычный файл
109
gnome/mime-type/new-mime-window.c
Обычный файл
@ -0,0 +1,109 @@
|
||||
#include "new-mime-window.h"
|
||||
|
||||
static GtkWidget *add_dialog = NULL;
|
||||
|
||||
/*Public functions */
|
||||
void
|
||||
launch_new_mime_window (void)
|
||||
{
|
||||
GtkWidget *mime_entry;
|
||||
GtkWidget *label;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *ext_entry;
|
||||
GtkWidget *regex1_entry;
|
||||
GtkWidget *regex2_entry;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *vbox;
|
||||
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"));
|
||||
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);
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), hbox, FALSE, FALSE, 0);
|
||||
label = gtk_label_new (_("Mime Type:"));
|
||||
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);
|
||||
mime_entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), mime_entry, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), hbox, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (_("Extensions"));
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), frame, FALSE, FALSE, 0);
|
||||
vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL);
|
||||
label = gtk_label_new (_("Type in the extensions for this mime-type.\nFor example: .html, .htm"));
|
||||
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);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Extension:")), FALSE, FALSE, 0);
|
||||
ext_entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), ext_entry, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (_("Regular Expresions"));
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), frame, FALSE, FALSE, 0);
|
||||
vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL);
|
||||
label = gtk_label_new (_("You can set up two regular expressions here to identify the Mime Type\nby. These fields are optional."));
|
||||
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);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), GNOME_PAD_SMALL);
|
||||
/* gtk_container_set_border_width (GTK_CONTAINER (table), GNOME_PAD_SMALL);*/
|
||||
label = gtk_label_new (_("First Regular Expression: "));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 0, 1,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
regex1_entry = gtk_entry_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
regex1_entry,
|
||||
1, 2, 0, 1);
|
||||
label = gtk_label_new (_("Second Regular Expression: "));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 1, 2,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
regex2_entry = gtk_entry_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
regex2_entry,
|
||||
1, 2, 1, 2);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_widget_show_all (GNOME_DIALOG (add_dialog)->vbox);
|
||||
switch (gnome_dialog_run (GNOME_DIALOG (add_dialog))) {
|
||||
case 0:
|
||||
|
||||
case 1:
|
||||
gtk_widget_destroy (add_dialog);
|
||||
default:;
|
||||
}
|
||||
add_dialog = NULL;
|
||||
}
|
||||
void
|
||||
hide_new_mime_window (void)
|
||||
{
|
||||
if (add_dialog != NULL)
|
||||
gtk_widget_hide (add_dialog);
|
||||
}
|
||||
void
|
||||
show_new_mime_window (void)
|
||||
{
|
||||
if (add_dialog != NULL)
|
||||
gtk_widget_show (add_dialog);
|
||||
}
|
14
gnome/mime-type/new-mime-window.h
Обычный файл
14
gnome/mime-type/new-mime-window.h
Обычный файл
@ -0,0 +1,14 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
|
||||
/* Copyright (C) 1998 Redhat Software Inc.
|
||||
* Authors: Jonathan Blandford <jrb@redhat.com>
|
||||
*/
|
||||
#include "mime-data.h"
|
||||
#ifndef _NEW_MIME_WINDOW_H_
|
||||
#define _NEW_MIME_WINDOW_H_
|
||||
|
||||
void launch_new_mime_window (void);
|
||||
void hide_new_mime_window (void);
|
||||
void show_new_mime_window (void);
|
||||
|
||||
#endif
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user