[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Echo ]Recreating the Status Pages once again



Hi,

I was going through the Trac help in search of table styling
capabilities of its wiki to improve the Icon Theme Status page [1]. In
the process I came to a conclusion it would be better to include the
tables as raw HTML and that it would be better to split the status page
to more pages. And because the icon naming specifications [2] are
subject to change (in the meaning that new icons can be added) as well
as the icons that are created in addition to the specs and because I am
a little bit lazy, I decided to create a c app that reads list of icons
(provided in a file) and outputs a nicely formatted table in HTML code
to standard output. My C skills are nothing fancy and I didn't take much
thoughts to the algorithm so it is rather just-works type of code...

I put together an example page including the table generated by the code
[3].

The advantages of the new page are better styling capabilities, easier
adding/removing of new icons (in the original, addition of new icon into
the middle of the table would be a lot of work) and automatic picking of
icons from git (if icon is not present, '-' is displayed). It also
displays 16x16, 22x22, 32x32 and 48x48 icons. One disadvantage is that
it contains broken links to SVGs that are not in git yet...

And I attach the c code (in case someone would like to improve it). It
uses nothing outside the standard libraries, so that you can build it
just with gcc generate-status-table.c

Any thoughts, comments, etc.? I can push the source to git if there is a
want (might be good to push icon lists to it as well) for it and create
the rest of the pages.

Thanks,
Martin

References:
[1]
https://hosted.fedoraproject.org/projects/echo-icon-theme/wiki/IconThemeStatus
[2]
http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
[3]
https://hosted.fedoraproject.org/projects/echo-icon-theme/wiki/IconThemeStatus/Actions

#include <stdio.h>

#define COLS 5

int process_table (char *input)
{
//	printf ("%s\n\n", input);

	FILE *fi;
	int i, j;
	char icon_name [COLS][256];
	int aux;
	
	fi = fopen (input, "r");
	if (!fi) 
	{
		fprintf(stderr, "Unable to open input file: %s.\n", input);
		return -1;
	}

	i = 0;

	printf ("<table style=\"border:  none 0;width: 100%; text-align: center;\">\n");	

	do 
	{
		if (i == COLS)
		{
			printf ("\t<tr>\n");
			i = 0;
			for (j = 0; j < COLS; j++)
			{
				printf ("\t\t<td>\n");
				
				printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/16x16/actions/%s.png;hb=HEAD\"; width=\"16px\" height=\"16px\" alt=\"-\"/>\n", icon_name[j]);					
				printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/22x22/actions/%s.png;hb=HEAD\"; width=\"22px\" height=\"22px\" alt=\"-\"/>\n", icon_name[j]);					
				printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/32x32/actions/%s.png;hb=HEAD\"; width=\"32px\" height=\"32px\" alt=\"-\"/>\n", icon_name[j]);					
				printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/48x48/actions/%s.png;hb=HEAD\"; width=\"48px\" height=\"48px\" alt=\"-\"/>\n", icon_name[j]);					
				
				printf ("\t\t</td>\n");
			}
			printf ("\t</tr>\n");

			printf ("\t<tr>\n");
			for (j = 0; j < COLS; j++)
			{
				printf ("\t\t<td>\n");
				
				printf ("\t\t\t<a href=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/scalable/actions/%s.svg;hb=HEAD\";>%s</a>", icon_name[j], icon_name[j]);
			
				printf ("\t\t</td>\n");
			}
			printf ("\t</tr>\n");
			printf ("\t<tr style=\"height: 2em;\"></tr>\n\n");
		}
//		aux = fgetc (fi);
//		printf ("%d", aux);
		fscanf (fi, "%s", icon_name[i]);
		aux = fgetc (fi);
//		printf ("%s\n", icon_name);
		i++;
		
	} while (!(aux == -1));

	i--;
	printf ("\t<tr>\n");
	for (j = 0; j < i; j++)
	{
		printf ("\t\t<td>\n");
		
		printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/16x16/actions/%s.png;hb=HEAD\"; width=\"16px\" height=\"16px\" alt=\"-\"/>\n", icon_name[j]);					
		printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/22x22/actions/%s.png;hb=HEAD\"; width=\"22px\" height=\"22px\" alt=\"-\"/>\n", icon_name[j]);					
		printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/32x32/actions/%s.png;hb=HEAD\"; width=\"32px\" height=\"32px\" alt=\"-\"/>\n", icon_name[j]);					
		printf ("\t\t\t<img src=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/48x48/actions/%s.png;hb=HEAD\"; width=\"48px\" height=\"48px\" alt=\"-\"/>\n", icon_name[j]);					
		
		printf ("\t\t</td>\n");
	}
	printf ("\t</tr>\n");

	printf ("\t<tr>\n");
	for (j = 0; j < i; j++)
	{
		printf ("\t\t<td>\n");
		
		printf ("\t\t\t<a href=\"http://git.fedoraproject.org/?p=hosted/echo-icon-theme;a=blob_plain;f=trunk/Echo/scalable/actions/%s.svg;hb=HEAD\";>%s</a>", icon_name[j], icon_name[j]);
	
		printf ("\t\t</td>\n");
	}
	printf ("\t</tr>\n");
	printf ("\t<tr style=\"height: 2em;\"></tr>\n\n");


	printf ("</table>\n");
	fclose (fi);

	return 0;
}

int main(int argc, char *argv[])
{
	char *input;
	if (argc < 2)
	{
		fprintf(stderr, "Missing argument!\nUsage: generate-status-table <input-file>\n");
		return (1);
	}
	input = argv[1];
	int i = process_table (input);

	return i;
}

Attachment: signature.asc
Description: This is a digitally signed message part


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]