+RHCE
[www.jankratochvil.net.git] / project / gladewsrc / glade-0.5.7-writesource.diff
1 diff -ru -x *.pot -x cat-id-tbl* glade-0.5.7-orig/glade/main.c glade-0.5.7/glade/main.c
2 --- glade-0.5.7-orig/glade/main.c       Wed Dec 22 17:01:00 1999
3 +++ glade-0.5.7/glade/main.c    Sun Mar 12 20:44:11 2000
4 @@ -36,14 +36,31 @@
5  static void parse_command_line (int argc,
6                                 char *argv[],
7                                 GladeProjectWindow *project_window);
8 +static void post_command_line (GladeProjectWindow *project_window);
9  static void usage (void);
10  
11  
12 +/* Currently we handle only command-line arguments an XML file to load
13 +   and request for source build.
14 +   For Gnome we have to use popt, even though we have no options. */
15 +
16 +static gchar *arg_filename=NULL;
17 +static int arg_write_source=0;
18 +
19  #ifdef USE_GNOME
20  static poptContext pctx;
21  
22  static struct poptOption options[] = {
23    {
24 +    "writesource",
25 +    'w',
26 +    0,
27 +    &arg_write_source,
28 +    0,
29 +    N_("Whether to automatically (and only) build the source files"),
30 +    NULL
31 +  },
32 +  {
33      NULL,
34      '\0',
35      0,
36 @@ -95,6 +112,7 @@
37    glade_show_property_editor ();
38  
39    parse_command_line (argc, argv, project_window);
40 +  post_command_line (project_window);
41    if (current_project == NULL)
42      glade_project_new ();
43  
44 @@ -104,15 +122,44 @@
45    return 0;
46  }
47  
48 +static void
49 +post_command_line (GladeProjectWindow *project_window)
50 +{
51 +  gchar *directory;
52 +  GladeProject *project;
53 +  GladeError *error;
54 +
55 +  if (arg_filename)
56 +    {
57 +      directory = g_get_current_dir ();
58 +      arg_filename = glade_util_make_absolute_path (directory, arg_filename);
59 +      glade_project_window_open_project (project_window, arg_filename);
60 +      g_free (directory);
61 +      g_free (arg_filename);
62 +    }
63 +  if (arg_write_source)
64 +    {
65 +      if (!arg_filename) {
66 +        fprintf(stderr,_("Project name not specified, requited for \"--writesource\" option.\n"));
67 +       exit(1);
68 +        }
69 +      project = glade_project_view_get_project (GLADE_PROJECT_VIEW (project_window->project_view));
70 +      g_return_if_fail (project != NULL);
71 +      error = glade_project_write_source (project);
72 +      if (error) {
73 +       fprintf(stderr,_("Error writing source, use GUI to fix it.\n"));
74 +       glade_error_free (error);
75 +       exit(1);
76 +       }
77 +      exit(0);
78 +    }
79 +}
80  
81 -/* Currently the only command-line argument we handle is an XML file to load.
82 -   For Gnome we have to use popt, even though we have no options. */
83  #ifdef USE_GNOME
84  static void
85  parse_command_line (int argc, char *argv[],
86                     GladeProjectWindow *project_window)
87  {
88 -  gchar *filename = NULL, *directory;
89    const gchar **args;
90    gint i;
91  
92 @@ -120,22 +167,13 @@
93  
94    for (i = 0; args && args[i]; i++)
95      {
96 -      if (filename == NULL)
97 -       filename = (gchar*) args[i];
98 -      else
99 -       usage ();
100 +    if (arg_filename == NULL)
101 +      arg_filename = (gchar*) args[i];
102 +    else
103 +      usage ();
104      }
105  
106    poptFreeContext (pctx);
107 -
108 -  if (filename)
109 -    {
110 -      directory = g_get_current_dir ();
111 -      filename = glade_util_make_absolute_path (directory, filename);
112 -      glade_project_window_open_project (project_window, filename);
113 -      g_free (directory);
114 -      g_free (filename);
115 -    }
116  }
117  
118  #else
119 @@ -143,28 +181,18 @@
120  parse_command_line (int argc, char *argv[],
121                     GladeProjectWindow *project_window)
122  {
123 -  gchar *filename = NULL, *directory;
124    gint i;
125  
126    /* GTK parses argc & argv and sets arguments to NULL if it has used them. */
127    for (i = 1; i < argc; i++)
128      {
129 -      if (argv[i])
130 -       {
131 -         if (filename == NULL)
132 -           filename = argv[i];
133 -         else
134 -           usage ();
135 -       }
136 -    }
137 -
138 -  if (filename)
139 -    {
140 -      directory = g_get_current_dir ();
141 -      filename = glade_util_make_absolute_path (directory, filename);
142 -      glade_project_window_open_project (project_window, filename);
143 -      g_free (directory);
144 -      g_free (filename);
145 +      if (!argv[i]) continue;
146 +      if (!strcmp(argv[i],"-w") || !strcmp(argv[i],"--writesource"))
147 +       arg_write_source = 1;
148 +      else if (arg_filename == NULL)
149 +       arg_filename = (gchar*) argv[i];
150 +      else
151 +       usage ();
152      }
153  }
154  #endif
155 @@ -173,6 +201,6 @@
156  static void
157  usage (void)
158  {
159 -  fprintf (stderr, "Usage: glade [filename]\n");
160 +  fprintf (stderr, "Usage: glade [-w|--writesource] [<filename>]\n");
161    exit (0);
162  }