Hrm. Changed some things. Dunno.

SVN revision: 2388
This commit is contained in:
Tom Gilbert 2000-03-30 22:34:01 +00:00
parent 24e0223f68
commit 3bce8ee503
6 changed files with 211 additions and 211 deletions

213
file.c
View File

@ -8,122 +8,123 @@
#include <glib.h>
#include "file.h"
char *
homedir(int uid)
char *
homedir (int uid)
{
char *s;
char *s;
static int usr_uid = -1;
static char *usr_s = NULL;
struct passwd *pwd;
static int usr_uid = -1;
static char *usr_s = NULL;
struct passwd *pwd;
if (usr_uid < 0)
usr_uid = getuid();
if ((uid == usr_uid) && (usr_s))
{
return (g_strdup(usr_s));
}
pwd = getpwuid(uid);
if (pwd)
{
s = g_strdup(pwd->pw_dir);
if (uid == usr_uid)
usr_s = g_strdup(s);
return (s);
}
return (g_strdup((getenv("TMPDIR") == NULL) ? "/tmp" : getenv("TMPDIR")));
if (usr_uid < 0)
usr_uid = getuid ();
if ((uid == usr_uid) && (usr_s))
{
return (g_strdup (usr_s));
}
pwd = getpwuid (uid);
if (pwd)
{
s = g_strdup (pwd->pw_dir);
if (uid == usr_uid)
usr_s = g_strdup (s);
return (s);
}
return (g_strdup
((getenv ("TMPDIR") == NULL) ? "/tmp" : getenv ("TMPDIR")));
}
char *
field(char *s, int field)
char *
field (char *s, int field)
{
char buf[4096];
char buf[4096];
buf[0] = 0;
fword(s, field + 1, buf);
if (buf[0])
{
if ((!strcmp(buf, "NULL")) || (!strcmp(buf, "(null)")))
return (NULL);
return (g_strdup(buf));
}
return NULL;
buf[0] = 0;
fword (s, field + 1, buf);
if (buf[0])
{
if ((!strcmp (buf, "NULL")) || (!strcmp (buf, "(null)")))
return (NULL);
return (g_strdup (buf));
}
return NULL;
}
void
fword(char *s, int num, char *wd)
fword (char *s, int num, char *wd)
{
char *cur, *start, *end;
int count, inword, inquote, len;
char *cur, *start, *end;
int count, inword, inquote, len;
if (!s)
return;
if (!wd)
return;
*wd = 0;
if (num <= 0)
return;
cur = s;
count = 0;
inword = 0;
inquote = 0;
start = NULL;
end = NULL;
while ((*cur) && (count < num))
{
if (inword)
{
if (inquote)
{
if (*cur == '"')
{
inquote = 0;
inword = 0;
end = cur;
count++;
}
}
else
{
if (isspace(*cur))
{
end = cur;
inword = 0;
count++;
}
}
}
else
{
if (!isspace(*cur))
{
if (*cur == '"')
{
inquote = 1;
start = cur + 1;
}
else
start = cur;
inword = 1;
}
}
if (count == num)
break;
cur++;
}
if (!start)
return;
if (!end)
end = cur;
if (end <= start)
return;
len = (int)(end - start);
if (len > 4000)
len = 4000;
if (len > 0)
{
strncpy(wd, start, len);
wd[len] = 0;
}
return;
if (!s)
return;
if (!wd)
return;
*wd = 0;
if (num <= 0)
return;
cur = s;
count = 0;
inword = 0;
inquote = 0;
start = NULL;
end = NULL;
while ((*cur) && (count < num))
{
if (inword)
{
if (inquote)
{
if (*cur == '"')
{
inquote = 0;
inword = 0;
end = cur;
count++;
}
}
else
{
if (isspace (*cur))
{
end = cur;
inword = 0;
count++;
}
}
}
else
{
if (!isspace (*cur))
{
if (*cur == '"')
{
inquote = 1;
start = cur + 1;
}
else
start = cur;
inword = 1;
}
}
if (count == num)
break;
cur++;
}
if (!start)
return;
if (!end)
end = cur;
if (end <= start)
return;
len = (int) (end - start);
if (len > 4000)
len = 4000;
if (len > 0)
{
strncpy (wd, start, len);
wd[len] = 0;
}
return;
}

6
file.h
View File

@ -1,3 +1,3 @@
char *field(char *s, int field);
void fword(char *s, int num, char *wd);
char *homedir(int uid);
char *field (char *s, int field);
void fword (char *s, int num, char *wd);
char *homedir (int uid);

96
menus.c
View File

@ -14,71 +14,71 @@
#include "menus.h"
#include "viewer.h"
GtkWidget *
CreateBarSubMenu(GtkWidget * menu, char *szName)
GtkWidget *
CreateBarSubMenu (GtkWidget * menu, char *szName)
{
GtkWidget *menuitem;
GtkWidget *submenu;
GtkWidget *menuitem;
GtkWidget *submenu;
menuitem = gtk_menu_item_new_with_label(szName);
gtk_menu_bar_append(GTK_MENU_BAR(menu), menuitem);
gtk_widget_show(menuitem);
submenu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
menuitem = gtk_menu_item_new_with_label (szName);
gtk_menu_bar_append (GTK_MENU_BAR (menu), menuitem);
gtk_widget_show (menuitem);
submenu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
return submenu;
return submenu;
}
GtkWidget *
CreateRightAlignBarSubMenu(GtkWidget * menu, char *szName)
GtkWidget *
CreateRightAlignBarSubMenu (GtkWidget * menu, char *szName)
{
GtkWidget *menuitem;
GtkWidget *submenu;
GtkWidget *menuitem;
GtkWidget *submenu;
menuitem = gtk_menu_item_new_with_label(szName);
gtk_menu_item_right_justify(GTK_MENU_ITEM(menuitem));
gtk_menu_bar_append(GTK_MENU_BAR(menu), menuitem);
gtk_widget_show(menuitem);
submenu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
menuitem = gtk_menu_item_new_with_label (szName);
gtk_menu_item_right_justify (GTK_MENU_ITEM (menuitem));
gtk_menu_bar_append (GTK_MENU_BAR (menu), menuitem);
gtk_widget_show (menuitem);
submenu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
return submenu;
return submenu;
}
GtkWidget *
CreateMenuItem(GtkWidget * menu, char *szName, char *szAccel, char *szTip,
GtkSignalFunc func, gpointer data)
GtkWidget *
CreateMenuItem (GtkWidget * menu, char *szName, char *szAccel, char *szTip,
GtkSignalFunc func, gpointer data)
{
GtkWidget *menuitem;
GtkWidget *menuitem;
if (szName && strlen(szName))
{
menuitem = gtk_menu_item_new_with_label(szName);
gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
GTK_SIGNAL_FUNC(func), data);
}
else
{
menuitem = gtk_menu_item_new();
}
if (szName && strlen (szName))
{
menuitem = gtk_menu_item_new_with_label (szName);
gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
GTK_SIGNAL_FUNC (func), data);
}
else
{
menuitem = gtk_menu_item_new ();
}
gtk_menu_append(GTK_MENU(menu), menuitem);
gtk_widget_show(menuitem);
gtk_menu_append (GTK_MENU (menu), menuitem);
gtk_widget_show (menuitem);
if (szAccel && szAccel[0] == '^')
{
gtk_widget_add_accelerator(menuitem, "activate", accel_group,
szAccel[1], GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
}
if (szAccel && szAccel[0] == '^')
{
gtk_widget_add_accelerator (menuitem, "activate", accel_group,
szAccel[1], GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
}
if (szTip && strlen(szTip))
{
gtk_tooltips_set_tip(tooltips, menuitem, szTip, NULL);
}
if (szTip && strlen (szTip))
{
gtk_tooltips_set_tip (tooltips, menuitem, szTip, NULL);
}
return menuitem;
return menuitem;
}

10
menus.h
View File

@ -1,5 +1,5 @@
GtkWidget *CreateBarSubMenu(GtkWidget * menu, char *szName);
GtkWidget *CreateRightAlignBarSubMenu(GtkWidget * menu, char *szName);
GtkWidget *CreateMenuItem(GtkWidget * menu, char *szName,
char *szAccel, char *szTip,
GtkSignalFunc func, gpointer data);
GtkWidget *CreateBarSubMenu (GtkWidget * menu, char *szName);
GtkWidget *CreateRightAlignBarSubMenu (GtkWidget * menu, char *szName);
GtkWidget *CreateMenuItem (GtkWidget * menu, char *szName,
char *szAccel, char *szTip,
GtkSignalFunc func, gpointer data);

View File

@ -75,9 +75,7 @@ load_new_menu_from_disk (char *file_to_load, GtkCTreeNode * my_parent)
NULL, text, 5, NULL, NULL,
NULL, NULL, FALSE, FALSE);
if (!strcasecmp (act, "menu"))
{
load_new_menu_from_disk (params, current);
}
load_new_menu_from_disk (params, current);
if (txt)
g_free (txt);
@ -108,6 +106,7 @@ load_menus_from_disk (void)
char s[4096];
GtkCTreeNode *parent = NULL;
/* currently hardcoded, but not a big issue to change later */
sprintf (buf, "%s/.enlightenment/file.menu", homedir (getuid ()));
menufile = fopen (buf, "r");
if (!menufile)
@ -175,10 +174,8 @@ load_menus_from_disk (void)
5, NULL, NULL, NULL, NULL, FALSE,
FALSE);
if (!strcmp (act, "menu"))
{
load_new_menu_from_disk (params, current);
}
if (!strcasecmp (act, "menu"))
load_new_menu_from_disk (params, current);
if (txt)
g_free (txt);
@ -202,24 +199,21 @@ void
selection_made (GtkCTree * my_ctree, GList * node, gint column,
gpointer user_data)
{
static int first = 1;
gchar *col1 = NULL;
gchar *col2 = NULL;
gchar *col3 = NULL;
gchar *source = NULL;
GtkCTreeNode *last_node = NULL;
if (user_data)
if (first)
{
my_ctree = NULL;
column = 0;
node = NULL;
gtk_widget_set_sensitive (GTK_WIDGET (txt_exec), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (txt_icon), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (txt_description), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (btn_browse), TRUE);
first = 0;
}
gtk_widget_set_sensitive (GTK_WIDGET (txt_exec), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (txt_icon), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (txt_description), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (btn_browse), TRUE);
last_node = GTK_CTREE_NODE ((GTK_CLIST (ctree)->selection)->data);
gtk_ctree_node_get_text (GTK_CTREE (ctree), GTK_CTREE_NODE (last_node), 0,
&col1);
@ -237,6 +231,12 @@ selection_made (GtkCTree * my_ctree, GList * node, gint column,
gtk_label_set_text (GTK_LABEL (lbl_params), "Submenu");
else
gtk_label_set_text (GTK_LABEL (lbl_params), "Executes");
return;
user_data = NULL;
my_ctree = NULL;
column = 0;
node = NULL;
}
GtkWidget *
@ -287,7 +287,8 @@ create_main_window (void)
CreateMenuItem (menu, "Quit", "", "Quit Without Saving", quit_cb,
"quit program");
menu = CreateRightAlignBarSubMenu (menubar, "Help");
/* I hate right aligned menus =) It just puts stuff out of the way */
menu = CreateBarSubMenu (menubar, "Help");
menuitem = CreateMenuItem (menu, "About", "", "About E Menu Editor",
NULL, "about");
menuitem = CreateMenuItem (menu, "Documentation", "",
@ -430,6 +431,7 @@ create_main_window (void)
return win;
}
/* Stick the contents of the entries into the tree */
void
entries_to_ctree (GtkWidget * widget, gpointer user_data)
{
@ -495,8 +497,8 @@ delete_entry (GtkWidget * widget, gpointer user_data)
{
if (GTK_CLIST (ctree)->selection)
gtk_ctree_remove_node (GTK_CTREE (ctree),
gtk_ctree_node_nth (GTK_CTREE (ctree),
GTK_CLIST (ctree)->focus_row));
GTK_CTREE_NODE (GTK_CLIST (ctree)->selection->
data));
return;
widget = NULL;
user_data = NULL;
@ -733,11 +735,11 @@ main (int argc, char *argv[])
GtkWidget *main_win;
gtk_set_locale ();
gtk_init (&argc, &argv);
gdk_imlib_init ();
/* gdk_imlib_init (); */
tooltips = gtk_tooltips_new ();
accel_group = gtk_accel_group_new ();
gtk_widget_push_visual (gdk_imlib_get_visual ());
gtk_widget_push_colormap (gdk_imlib_get_colormap ());
/* gtk_widget_push_visual (gdk_imlib_get_visual ()); */
/* gtk_widget_push_colormap (gdk_imlib_get_colormap ()); */
main_win = create_main_window ();
gtk_signal_connect (GTK_OBJECT (main_win), "destroy",
GTK_SIGNAL_FUNC (on_exit_application), NULL);
@ -812,7 +814,8 @@ ok_dialog (gchar * message)
dialog_window = gtk_dialog_new ();
gtk_window_set_transient_for (GTK_WINDOW (dialog_window), GTK_WINDOW (win));
gtk_window_set_position(GTK_WINDOW (dialog_window), GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_set_position (GTK_WINDOW (dialog_window),
GTK_WIN_POS_CENTER_ALWAYS);
gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed), &dialog_window);

View File

@ -1,38 +1,34 @@
GtkWidget *create_main_window(void);
void on_exit_application(GtkWidget * widget, gpointer user_data);
void load_menus_from_disk(void);
void load_new_menu_from_disk(char *file_to_load,
GtkWidget *create_main_window (void);
void on_exit_application (GtkWidget * widget, gpointer user_data);
void load_menus_from_disk (void);
void load_new_menu_from_disk (char *file_to_load, GtkCTreeNode * my_parent);
void selection_made (GtkCTree * my_ctree, GList * node,
gint column, gpointer user_data);
GtkCTreeNode * my_parent);
void selection_made(GtkCTree * my_ctree, GList * node,
gint column, gpointer user_data);
GtkTooltips *tooltips;
GtkAccelGroup *accel_group;
void save_menus(GtkWidget * widget, gpointer user_data);
gint write_menu(GNode * node, gchar * filename);
void write_menu_title(GNode * node, FILE * fp);
gint write_menu_entry(GNode * node, FILE * fp);
gboolean tree_to_gnode(GtkCTree * ctree,
guint depth,
GNode * gnode, GtkCTreeNode * cnode,
gpointer data);
void quit_cb(GtkWidget * widget, gpointer user_data);
GtkTooltips *tooltips;
GtkAccelGroup *accel_group;
void save_menus (GtkWidget * widget, gpointer user_data);
gint write_menu (GNode * node, gchar * filename);
void write_menu_title (GNode * node, FILE * fp);
gint write_menu_entry (GNode * node, FILE * fp);
gboolean tree_to_gnode (GtkCTree * ctree,
guint depth,
GNode * gnode, GtkCTreeNode * cnode, gpointer data);
void quit_cb (GtkWidget * widget, gpointer user_data);
struct entry_data
{
gchar *desc;
gchar *icon;
gchar *params;
gchar *desc;
gchar *icon;
gchar *params;
};
void delete_entry (GtkWidget * widget, gpointer user_data);
void insert_entry (GtkWidget * widget, gpointer user_data);
void entries_to_ctree (GtkWidget * widget, gpointer user_data);
void destroy_node_data (GNode *node);
void destroy_node_data (GNode * node);
void save_menus_quit (GtkWidget * widget, gpointer user_data);
void real_save_menus (gint exit);
void cb_icon_browse (GtkWidget * widget, gpointer user_data);
void cb_icon_browse_ok (GtkWidget * widget, gpointer user_data);
void cb_icon_browse_cancel (GtkWidget * widget, gpointer user_data);
void destroy_dlg_cb (GtkWidget *widget, gpointer user_data);
void destroy_dlg_cb (GtkWidget * widget, gpointer user_data);
void ok_dialog (gchar * message);