Exemple #1
0
void
zune_font_replace (GdkFont **font, STRPTR fontname)
{
/*  g_print("replacing preset %ld with font %s\n", preset, fontname); */

    if (*font)
	gdk_font_unref(*font);
    if (fontname != NULL && strlen(fontname) > 0)
    {
	*font = gdk_font_load(fontname);
	if (*font)
	{
/*  	    g_print("font loaded\n"); */
	    return;
	}
/*  	g_print("cannot load font\n"); */
    }
    if (__zprefs.fonts[-MUIV_Font_Normal])
    {
	if (fontname != NULL && strlen(fontname) > 0)
	    g_warning("Cannot load font '%s', fallback to window font\n",
		      fontname);
	*font = gdk_font_ref(__zprefs.fonts[-MUIV_Font_Normal]);
    }
    else
    {
	g_warning("Cannot load font '%s', trying 'fixed'\n", fontname);
	*font = gdk_font_load("fixed");
    }
}
Exemple #2
0
GdkFont *
my_font_load (char *fontname)
{
    GdkFont *font;
    char temp[256];

    if (!*fontname)
        fontname = "fixed";
    if (prefs.use_fontset)
        font = gdk_fontset_load (fontname);
    else
        font = gdk_font_load (fontname);
    if (!font)
    {
        snprintf (temp, sizeof (temp), _("Cannot open font:\n\n%s"), fontname);
        gtkutil_simpledialog (temp);
        font = gdk_font_load ("fixed");
        if (!font)
        {
            g_error (_("gdk_font_load failed"));
            gtk_exit (0);
        }
    }
    return font;
}
Exemple #3
0
static GdkFont *findfont(char *name, int size)
{
    GdkFont *font;
    int fi, n, i;

    if (name[0] == '\000')
	return Gfontp[0].font;

    sprintf(&Gbufp[0], name, size);
    for (fi = 0; fi < Gfontn; fi++)
	if (Strcmp(&Gbufp[0], Gfontp[fi].name) == 0)
	    return Gfontp[fi].font;

    if (!(font = gdk_font_load(&Gbufp[0]))) {
	n = strlen(&Gbufp[0]) + 1;
	for (i = 1; i < size; i++) {
	    sprintf(&Gbufp[n], name, size - i);
	    if ((font = gdk_font_load(&Gbufp[n])))
		break;
	    sprintf(&Gbufp[n], name, size + i);
	    if ((font = gdk_font_load(&Gbufp[n])))
		break;
	}
    }
    if (!font)
	font = Gfontp[0].font;

    Gfontp = Marraygrow(Gfontp, (long) (Gfontn + 1) * FONTSIZE);
    Gfontp[Gfontn].name = strdup(&Gbufp[0]);
    Gfontp[Gfontn].font = font;
    Gfontn++;
    return font;
}
Exemple #4
0
gint
wgra_configure(GtkWidget *widget,GdkEventConfigure *ee,gpointer data)
{
  GdkGC *mygc;
  int x,y,cx,xs;
  int i,v;
  long max;
  float fac;
  GdkFont *fn;

  if (wcanvas!=NULL)
    gdk_pixmap_unref(wcanvas);

  mygc=gdk_gc_new(widget->window);

  wcanvas=gdk_pixmap_new(widget->window,x=widget->allocation.width,
			 y=widget->allocation.height,-1);
  gdk_draw_rectangle(wcanvas,widget->style->white_gc,TRUE,0,0,x,y);
  gdk_draw_rectangle(wcanvas,widget->style->black_gc,FALSE,0,0,x-1,y-1);

  max=0;
  for(i=0;i<7;i++)
    if (weekly[i]>max)
      max=weekly[i];

  if (!max) max=1;
  fac=((float)(y-18-16))/((float)max);

  cx=1;
  xs=(x-2)/7;
  fn=gdk_font_load("-*-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*");
  for (i=0;i<7;i++) {
    v=(int)(((float)weekly[i])*fac);
    gdk_rgb_gc_set_foreground(mygc,0xc0c0c0);
    gdk_draw_line(wcanvas,mygc,cx,1,cx,y-2);
    gdk_rgb_gc_set_foreground(mygc,0x004080);
    gdk_draw_rectangle(wcanvas,mygc,TRUE,cx,y-18-v,xs,v);
    gdk_rgb_gc_set_foreground(mygc,0x000000);
    gdk_draw_string(wcanvas,fn,mygc,cx,y-6,wdays[i]);
    cx+=xs;
  }

  gdk_draw_line(wcanvas,widget->style->black_gc,0,y-18,x-1,y-18);

  gdk_rgb_gc_set_foreground(mygc,0xffffff);
  gdk_draw_rectangle(wcanvas,mygc,TRUE,0,0,23*4,13);
  gdk_rgb_gc_set_foreground(mygc,0x000000);
  gdk_draw_rectangle(wcanvas,mygc,FALSE,0,0,23*4,13);

  gdk_font_unref(fn);
  fn=gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");

  gdk_draw_string(wcanvas,fn,mygc,5,10,"weekday summary");

  gdk_font_unref(fn);
  gdk_gc_destroy(mygc);

  return FALSE;
}
Exemple #5
0
void gpk_graph_draw(GtkWidget *widget,               /* plot on this widged */
		   int n,                           /* number of data points */
		   gdouble *xcord, gdouble *ycord,  /* data */
		   gdouble xmn,gdouble ymn,         /* coordinates of corners */
		   gdouble xmx,gdouble ymx,
                   int clear,                       /* clear old plot first */
		   char *title,                     /* add a title (only if clear=1) */
                   GdkColor *color)		    
{
  GdkPixmap **ppixmap;
  GdkPoint *points;
  int i;
  gint16 width,height;
  GdkFont *fixed_font;
  GdkGC *gc;

  gc = gdk_gc_new(widget->window);
  gdk_gc_set_foreground(gc, color);



  if ((ppixmap=findpixmap(widget))) {
    width = widget->allocation.width;
    height = widget->allocation.height;


    if (clear) {
      /* white background */
      gdk_draw_rectangle (*ppixmap,
			  widget->style->white_gc,
			  TRUE,0, 0,width,height);
      /* title */
#ifdef _WIN32
      fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*");
#else
      fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1");
#endif

      gdk_draw_text (*ppixmap,fixed_font,
		     widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
		     0,10,title,strlen(title));
    }
      

    points = g_malloc(n*sizeof(GdkPoint));
    for (i=0; i<n ; i++) {
      points[i].x =.5+  ((xcord[i]-xmn)*(width-1)/(xmx-xmn));
      points[i].y =.5+  ((ycord[i]-ymx)*(height-1)/(ymn-ymx));
    }
    gdk_draw_lines(*ppixmap,gc,points,n);
    g_free(points);
    gpk_redraw(*ppixmap,widget);
  }
  gdk_gc_destroy(gc);
}
Exemple #6
0
/* drawCar
 * Draws a car
 *
 * @return void
 */
void drawCar (int colorCarro, gint xant, gint yant, gint x, gint y, gint width, gint height) {
	GdkRectangle car;
	GdkColor color;
	switch(colorCarro){
		case 1: 
			gdk_color_parse("#FF0000", &color);
			break;
		case 2: 
			gdk_color_parse("#0000FF", &color);
			break;
		case 3: 
			gdk_color_parse("#00FF00", &color);
			break;
		case 4: 
			gdk_color_parse("#000000", &color);
			break;
		case 5:
			gdk_color_parse("#FFFFFF", &color);
			break;
		case 6: 
			gdk_color_parse("#FFFF00", &color);
			break;
		case 7: 
			gdk_color_parse("#FF6600", &color);
			break;
		case 8: 
			gdk_color_parse("#FF33CC", &color);
			break;
		case 9: 
			gdk_color_parse("#6699FF", &color);
			break;
		case 10: 
			gdk_color_parse("#777777", &color);
			break;
	}
	GdkGC* gcont;
	gcont = gdk_gc_new(this.pixMap); 
	gdk_gc_set_rgb_fg_color (gcont, &color);
	gtk_widget_queue_draw_area(this.drawingArea, xant, yant, width, height);
	car.x = x;
	car.y = y;
	car.width = width;
	car.height = height;
	gdk_draw_rectangle(this.pixMap, gcont, TRUE, car.x, car.y, car.width, car.height);
	if (colorCarro==4)
		gdk_draw_string(this.pixMap, gdk_font_load("-*-*-bold-r-normal--*-50-*-*-*-*-iso8859-1"), this.drawingArea->style->white_gc, (car.x+2), (car.y+10), "A1/5");
	else
		gdk_draw_string(this.pixMap, gdk_font_load("-*-*-bold-r-normal--*-50-*-*-*-*-iso8859-1"), this.drawingArea->style->black_gc, (car.x+2), (car.y+10), "A1/5");

	gtk_widget_queue_draw_area(this.drawingArea, car.x, car.y, car.width, car.height);
}
Exemple #7
0
/*
 *	Change font used to display log text, NULL means reset to default
 */
void
GTK_change_log_font(gchar *fontname)
{
#if 0 // old GTK
	GtkRcStyle *rcstyle = gtk_rc_style_new();
#else
	GtkStyle *rcstyle = gtk_style_new(); 
#endif	

//	if (GTK_OBJECT(v9t9_command_log)->flags & GTK_DESTROYED) {//2.0
	if (!v9t9_command_log) {
		g_free(rcstyle);
		return;
	}

	if (fontname && *fontname) {
#if 0 // old GTK
		rcstyle->font_name = fontname;
		gtk_widget_modify_style(v9t9_command_log, rcstyle);
#else
		gtk_style_set_font(rcstyle, gdk_font_load(fontname));
		gtk_widget_set_style(v9t9_command_log, rcstyle);
#endif		
	} else {
		// this is probably too harsh for a cancel
		gtk_widget_restore_default_style(v9t9_command_log);
	}
//	g_free(rcstyle);
}
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GdkFontMetrics_initState
  (JNIEnv *env, jobject obj, jstring fname, jint size)
{
  jintArray array;
  jint *metrics;
  const char *cfname;
  char *xlfd;
  GdkFont *font;
  XFontStruct *xfont;

  cfname = (*env)->GetStringUTFChars (env, fname, NULL);
  xlfd = g_strdup_printf (cfname, (size * 10));
  (*env)->ReleaseStringUTFChars (env, fname, cfname);

  array = (*env)->NewIntArray (env, NUM_METRICS);
  metrics = (*env)->GetIntArrayElements (env, array, NULL);

  gdk_threads_enter ();
  font = gdk_font_load (xlfd);
  xfont = GDK_FONT_XFONT (font);

  metrics[ASCENT]      = font->ascent;
  metrics[MAX_ASCENT]  = xfont->max_bounds.ascent;
  metrics[DESCENT]     = font->descent;
  metrics[MAX_DESCENT] = xfont->max_bounds.descent;
  metrics[MAX_ADVANCE] = xfont->max_bounds.width;
  gdk_threads_leave ();

  g_free (xlfd);
  (*env)->ReleaseIntArrayElements (env, array, metrics, 0);

  NSA_SET_PTR (env, obj, font);

  return array;
}
Exemple #9
0
/* Loads a font.
 *
 * Currently, this function will always return a new font, however, in the future,
 * it may be changed to look up the font in a cache. You should make no assumptions
 * about the initial reference count. */
int
clip_GDK_FONTLOAD(ClipMachine * cm)
{
	ClipVar *cv = _clip_spar(cm,1);
	const gchar *font_name = _clip_parc(cm,2);
	GdkFont *font;
	C_object *cfont;
	CHECKOPT(1,MAP_t); CHECKARG(2,CHARACTER_t);
	font = gdk_font_load(font_name);
	if (font)
	{
//		gdk_font_ref(font);
		cfont = _register_object(cm,font,GDK_OBJECT_FONT,cv,
	       		(coDestructor)gdk_object_font_destructor);
		if (cfont)
                {
                	cfont->ref_count = 1;
			_clip_mclone(cm,RETPTR(cm),&cfont->obj);
                }
                else
                	gdk_font_unref(font);
	}
	return 0;
err:
	return 1;
}
void on_iol_window_show(GtkWidget *widget, gpointer user_data)
{
	char *hdir;
	char string[] = { "input red green blue alpha;\n\n#put your program here\n\noutput red green blue alpha;\n" };
	script_text = GTK_TEXT(user_data);

	script_font = gdk_font_load("-*-courier-medium-r-normal-*-12-*-*-*-*-*-*-*");

	gtk_text_freeze(script_text);
	gtk_text_insert(script_text,script_font,NULL,NULL,string,strlen(string));
	gtk_text_thaw(script_text);

	stay_open = 0;

	hdir = getenv("IOL_SCRIPTS");
	if(hdir == NULL) {
		fprintf(stderr,"IOL: $IOL_SCRIPTS environment variable not set, checking $HOME...\n");
		hdir = getenv("HOME");
		if(hdir == NULL) {
			fprintf(stderr,"IOL: $HOME environment variable not set\n");
			strcpy(default_dir,"/usr");
		} else {
			strncpy(default_dir,hdir,256);
			strncat(default_dir,"/.cinepaint/iol/",256);
			fprintf(stderr,"IOL: using %s as the default directory for scripts\n",default_dir);
		}
	} else {
		strncpy(default_dir,hdir,256);
		strncat(default_dir,"/",256);	/* the file selection dialog needs
						   it to end with a "/" so that it
						   will know it's a directory we
						   want */
	}
}
Exemple #11
0
gint init(GtkWidget *widget)
{
  if (gtk_gl_area_make_current(GTK_GL_AREA(widget))) {
    GdkFont *font;

    /* set viewport */
    glViewport(0,0, widget->allocation.width, widget->allocation.height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0,widget->allocation.width, 0,widget->allocation.height, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    /* generate font display lists */
    fontbase = glGenLists( 128 );
    font = gdk_font_load(fontname);
    if (!font) {
      g_print("Can't load font '%s'\n", fontname);
      gtk_exit(1);
    }

    gdk_gl_use_gdk_font(font, 0, 128, fontbase);
    fontheight = font->ascent+font->descent;
    gdk_font_unref(font);

  }
  return TRUE;
}
Exemple #12
0
static gint SetBaseFont(gtkDesc *gtkd)
{
    gtkd->fontface = 1;
    gtkd->fontsize = 12;
    gtkd->usefixed = 0;

    if(font_htab == NULL) {
	font_htab = g_hash_table_new (g_str_hash, g_str_equal);
    }

    gtkd->font = RGTKLoadFont (gtkd->fontface, gtkd->fontsize);

    if(gtkd->wgc == NULL)
	    return(1);

    if(gtkd->font != NULL) {
	gdk_gc_set_font(gtkd->wgc, gtkd->font);
	return 1;
    }

    gtkd->usefixed = 1;
    gtkd->font = gdk_font_load ("fixed");

    if(gtkd->font != NULL) {
	gdk_gc_set_font(gtkd->wgc, gtkd->font);
	return 1;
    }

    return 0;
}
Exemple #13
0
// Méthode de choix de fonte de caractères
// La syntaxe pour une fonte est : "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"
// Chaque champ peut être remplacé par * si on ne veut pas de valeur particulière
// Les champs sont les suivants :
// - Créateur de la fonte
// - Nom de la famille
// - Graisse :  'bold' ou 'medium' ...
// - Aspect : 'R' pour Roman, 'I' pour italique, 'O' pour oblique ...
// - Largeur : 'normal' ou 'condensed'
// - le chanp suivant est omis => on a -- entre la largeur et la taille
// - Taille : taille en pixels
// - Points : taille en points
// - Résolution en X
// - Résolution en y
// - Espacement :  'p' pour proportionel, 'm' pour monospaced ou 'c' pour matrice de caractère
// - Taille moyenne d'un caractère de la fonte
// - Norme de codage
// - Codage du jeu de caractères
// Cette méthode permet de créer des noms de la forme : 
// "-*-famille-graisse-italique-*--taille-*-*-*-*-*-*-*"
// où graisse peut être 'bold' ou '*'
// et italique peut être ; 'i' ou '*'
// et taille est la valeur passée en paramètre
void Fenetre::choixFonte(const char *famille, int taille, bool grasBool, bool italiqueBool) {
    if (existe) {
      char nom[80];
      gboolean gras = (grasBool ? TRUE : FALSE);
      gboolean italique = (italiqueBool ? TRUE : FALSE);
      strcpy (nom,"-*-"); strcat(nom,famille); 
      if (gras) strcat(nom,"-bold"); else strcat(nom,"-*");
      if (italique) strcat(nom,"-i"); else strcat(nom,"-r");
      strcat(nom,"-*--");
      char t[3]; sprintf(t,"%d",taille); strcat(nom,t);
      strcat(nom,"-*-*-*-*-*-*-*");
      GdkFont* essai; essai=gdk_font_load(nom); 
      if (essai==NULL) {
		  g_print("La fonte %s de taille %d ",famille, taille);
		  if (gras) g_print(" gras ");
		  if (italique) g_print(" italiques ");
		  g_print("n'existe pas : on garde la fonte precedente\n");
		  }
      else fonte=essai;
      traiteEvenements();
	  // Ce qui suit est la version utilisant Pango
/*      strcpy (nom,famille);
      strcat(nom," ");
      if (gras) strcat(nom,"bold ");
      if (italique) strcat(nom,"italic"); 
      strcat(nom," ");
      char t[3]; sprintf(t,"%d",taille); strcat(nom,t);
      PangoFontDescription* descripteur=pango_font_description_from_string(nom);
      fonte=gdk_font_from_description(descripteur);
      traiteEvenements();*/
      }
}
Exemple #14
0
static void
set_font_str(GtkWidget *w, gchar *fontstr)
{
    GdkFont *font;
    gchar   *msg;

    if (determine_use_fontset())
    {
        font = gdk_fontset_load(fontstr);
    }
    else
    {
        font = gdk_font_load(fontstr);
    }
    
    if (font != NULL)
    {
        set_font(w, font);
    }
    else
    {
        msg = g_strdup_printf(_("Can't load font %s"), fontstr);
        set_status_text(msg);
        g_free(msg);
    }   
}
Exemple #15
0
/* Sets the font for a graphics context.
 * (Note that all text-drawing functions in GDK take a font argument;
 * the value set here is used when that argument is NULL.) */
int
clip_GDK_GCSETFONT(ClipMachine * cm)
{
	C_object      *cgc = _fetch_co_arg(cm);
	ClipVar *c;
	GdkFont *font = 0; C_object *cfont;

	CHECKCOBJ(cgc,GDK_IS_GC(cgc)); CHECKARG3(2,CHARACTER_t,MAP_t,NUMERIC_t);
	switch ( _clip_parinfo(cm,2) )
	{
		case CHARACTER_t:
			c = _clip_spar(cm,2);
			font = gdk_font_load(c->s.str.buf);
			break;
		case MAP_t:
		case NUMERIC_t:
			cfont = _fetch_cobject(cm,_clip_spar(cm,2));
			if (cfont)
			{
				font = (GdkFont*)cfont->object;
				cfont->ref_count++;
			}
			break;
		default:
			break;
	}
	if (font)
	{
		gdk_gc_set_font(GDK_GC(cgc->object), font);
		gdk_font_ref (font);
	}
	return 0;
err:
	return 1;
}
Exemple #16
0
static void
gtk_ui_graphics_init(void) {
	offscreen = gdk_pixmap_new(field->window, screensize, screensize, -1);
	stdgc = gdk_gc_new(offscreen);
	gdk_gc_set_exposures(stdgc, FALSE);
	gdk_gc_set_line_attributes(stdgc, 2, GDK_LINE_SOLID, GDK_CAP_ROUND,
				   GDK_JOIN_MITER);
	font = gdk_font_load("fixed");
}
Exemple #17
0
 wxNativeFont wxLoadFont(const wxString& fontSpec)
 {
     // VZ: we should use gdk_fontset_load() instead of gdk_font_load()
     //     here to be able to display Japanese fonts correctly (at least
     //     this is what people report) but unfortunately doing it results
     //     in tons of warnings when using GTK with "normal" European
     //     languages and so we can't always do it and I don't know enough
     //     to determine when should this be done... (FIXME)
     return gdk_font_load( wxConvertWX2MB(fontSpec) );
 }
static void
draw_top_speed (C2NetworkTraffic *nt)
{
	gint x1, x2, y1, y2;
	gint text_width, text_height;
	gint top_speed_kb;
	gint i;
	gfloat pixels_per_byte;
	GdkFont *font;
	gchar *string;
	GtkWidget *widget = GTK_WIDGET (nt);

	/* Allocate the font */
	font = gdk_font_load ("-monotype-arial-bold-r-normal-*-*-110-*-*-p-*-iso8859-1");

	/* Allocate the value that are static */
	x1 = 1;

	/* Calculate which is the top_speed in Kb */
	top_speed_kb = nt->top_speed/1024;

	/* Calculate how many pixels should be drown per byte */
	pixels_per_byte = get_pixels_per_byte (nt);

	for (i = top_speed_kb; i > 0; i--)
	{
		string = g_strdup_printf ("(%d Kb/s)", i);
		
		if (i == top_speed_kb)
		{
			/* Calculate the dimensions of the text */
			text_height = gdk_string_height (font, string);
			text_width = gdk_string_width (font, string);
		} else
		{
			text_height = gdk_string_height (font, string);;
			text_width = 0;
		}

		/* Allocate the dynamic value that we calculated  */
		x2 = widget->allocation.width - text_width - 20;
		y1 = y2 = (text_height/2)+TOP_MARGIN + (pixels_per_byte * ((top_speed_kb-i)*1024));

		gdk_draw_line (nt->pixmap, widget->style->black_gc,
						x1, y1, x2, y2);

		if (i == top_speed_kb)
			gdk_draw_string (nt->pixmap, font, widget->style->black_gc,
							x2+10, y1+(text_height/2), string);

		g_free (string);
	}
}
Exemple #19
0
FontInfo *addFontInfo (char *name)
{
  FontInfo *r;

  r = NULL;
  r = XkNew (FontInfo);
  r->name = XkNewString (name);
  r->next = fontCache;
  r->references = 1;
  r->font = gdk_font_load (r->name);
  if (r->font == NULL)
  {
    /* if the font does not exist replace it with a standard font */
      
    r->font = gdk_font_load ("fixed"); /*** FIXME -> cache this! ***/
  }
    
  assert (r->font != NULL);
    
  fontCache = r;

  return r;
}
Exemple #20
0
static struct font_engine_font_t *font_engine_gdk_font_load(const char *string)
{
GdkFont *f = gdk_font_load(string);

if(f)
	{
	struct font_engine_font_t *fef = calloc_2(1, sizeof(struct font_engine_font_t));
	fef->gdkfont = f;
	fef->ascent = f->ascent;
	fef->descent = f->descent;
	return(fef);
	}
	else
	{
	return(NULL);
	}
}
Exemple #21
0
/**
 * Allocate memory for list status view structure and initialize it with
 * correct values.
 *
 * \todo: All of the values are hardcoded now, but it should be possible to make
 * them used settable through configuration storage. It would mean to refactor
 * the configuration storage though (flag option list won't be sufficient
 * anymore, especially for colors).
 *
 * \return pointer to image display specific data
 */
ViewListStatus* view_lsv_create(ViewGeneric *parent) {
	const ConfigStorage* conf;
	ViewListStatus *result = NULL;
	GdkFont* font = NULL;

	ASSERT( NULL != parent );

	font = gdk_font_load(DEFAULT_FONT_NAME);
	if ( NULL == font ) {
		ERROR_SET(ERROR.INVALID_PARAM);
		ERROR_NOTE("Font %s does not load", DEFAULT_FONT_NAME);
		return  result;
	}

	if ( NULL == ( result = (ViewListStatus*) g_try_malloc0(sizeof(ViewListStatus))) ) {
		ERROR_SET(ERROR.MEMORY_FAILURE);
		return result;
	}

	result->border_size.x = 5;
	result->border_size.y = 2;

	/// \todo for now, we assume that the font is monospace and does not contain
	// wide characters
	result->text_size.x = gdk_char_width(font, 'A');
	result->text_size.y = gdk_char_height(font, 'A');

	result->color.fg.red = 65535;
	result->color.fg.green = 65535;
	result->color.fg.blue = 65535;

	result->color.bg.red = 0;
	result->color.bg.green = 0;
	result->color.bg.blue = 0;

	result->font = font;

	parent->region_hint.y = result->text_size.y + 2 * result->border_size.y;

	return result;
}
Exemple #22
0
static void
gtk_hex_entry_init (GtkHexEntry *hex_entry)
{
	GTK_WIDGET_SET_FLAGS (hex_entry, GTK_CAN_FOCUS);

	/* */
	hex_entry->digits = 8;
	hex_entry->buffer = NULL;

	hex_entry->gc = NULL;
	hex_entry->pixmap = NULL;
	hex_entry->editable = TRUE;
	hex_entry->cursor_position = -1;

	hex_entry->modified = FALSE;
	
	gdk_color_parse ("red",&hex_entry->cursor_color);
	
//	hex_entry->font = gdk_font_load ("fixed");
	hex_entry->font = gdk_font_load ("9x15");
}
Exemple #23
0
static void fp_gtk_ui_create()
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *btnQuit;
	GdkFont *font;

	font = gdk_font_load("-misc-New-medium-r-normal--0-0-0-0-p-0-iso8859-1");
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_container_border_width(GTK_CONTAINER(window), 10);
	g_signal_connect(G_OBJECT(window), "delete_event",
		G_CALLBACK(window_delete_event), NULL);
	g_signal_connect(G_OBJECT(window), "destroy",
		G_CALLBACK(window_destroy), NULL);

	vbox = gtk_vbox_new(FALSE, 10);
	build_control_ui(vbox);
	gtk_container_add(GTK_CONTAINER(window), vbox);
	gtk_window_set_title(GTK_WINDOW(window), "XMUX FP");
	/* show all */
	gtk_widget_show_all(window);
}
Exemple #24
0
GdkFont *GetFontForSize (int fontsize)
{
    if (fontsize > 40)
        fontsize = 40;
    int increment = +1;

    if (fontsize < 2)
        return NULL;

  again:
    if (gdkfont[fontsize] == NULL)
    {
        if (fontsize != 13)
        {
            char *fontname = g_strdup_printf ("*-helvetica-bold-r-normal-*-*-%d0-*", fontsize);

            // char *fontname = g_strdup_printf ("-adobe-helvetica-bold-r-normal--%d-120-75-75-p-70-iso8859-1", fontsize);
            gdkfont[fontsize] = gdk_font_load (fontname);
            g_free (fontname);
        }
        if (gdkfont[fontsize] == NULL)
            gdkfont[fontsize] = (GdkFont *) - 1;
    }
    if (gdkfont[fontsize] == (GdkFont *) - 1)
    {
        fontsize += increment;
        if (fontsize > 40)
        {
            fontsize = 39;
            increment = -1;
        }
        if (fontsize == 0)
            return gdkfont[fontsize];
        goto again;
    }

    return gdkfont[fontsize];
}
Exemple #25
0
gint init(GtkWidget *widget)
{
  /* OpenGL functions can be called only if makecurrent returns true */
  if (gtk_gl_area_make_current(GTK_GL_AREA(widget))) {
#if !defined(WIN32)
    GdkFont *font;
#endif

    /* set viewport */
    glViewport(0,0, widget->allocation.width, widget->allocation.height);

#if !defined(WIN32)
    /* generate font display lists */
    font = gdk_font_load("-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*");
    if (font) {
      fontbase = glGenLists( 128 );
      gdk_gl_use_gdk_font(font, 0, 128, fontbase);
      gdk_font_unref(font);
    }
#endif
  }
  return TRUE;
}
Exemple #26
0
void
apply_cb (GtkWidget * crap, gpointer * nothing)
{
    int x;

    if (this_panel_cb)
	this_panel_cb ();

    /*
     * pack the new font 
     */
    if (fntname != NULL)
    {

/*		if(mud->disp_font_name)
			g_free(mud->disp_font_name);
*/
	mud->disp_font_name = g_strdup (fntname);
    }

/*	g_free(mud->disp_font);	*/
    mud->disp_font = gdk_font_load (mud->disp_font_name);

    /*
     * pack the colors 
     */
    for (x = 0; x < 9; ++x)
    {				/* unrolled. 2 isn't 'nuff for a loop. */
	memcpy (&color[x][0], &ccol[x][0], sizeof (GdkColor));
	memcpy (&color[x][1], &ccol[x][1], sizeof (GdkColor));
    }

    color_save ();
    session_save ();

    return;
}
Exemple #27
0
static wxFont* RwxLoadFont (wxDesc *gtkd, int face, int size)
{
    wxString fontname;
    wxFont *tmp_font;
    int pixelsize;

    if (face < 1 || face > 5)
	face = 1;

    if (size < SMALLEST) size = SMALLEST;

    /* Here's a 1st class fudge: make sure that the Adobe design sizes
       8, 10, 11, 12, 14, 17, 18, 20, 24, 25, 34 can be obtained via
       an integer "size" at 100 dpi, namely 6, 7, 8, 9, 10, 12, 13,
       14, 17, 18, 24 points. It's almost y = x * 100/72, but not
       quite. The constants were found using lm(). --pd */
    if (IS_100DPI) size = (int) R_rint (size * 1.43 - 0.4);

    /* 'size' is the requested size, 'pixelsize' the size of the
       actually allocated font*/
    pixelsize = size;

    tmp_font = new wxFont(pixelsize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);

#if 0
    if(face == 5)
        fontname = wxString::Format(symbolname, pixelsize);
    else
	fontname = wxString::Format(fontname_R6,
				    weight[(face-1)%2],
				    slant[((face-1)/2)%2],
				    pixelsize);

    tmp_font = gdk_font_load(fontname);

    if (!tmp_font) {
	static int near[]=
	{14,14,14,17,17,18,20,20,20,20,24,24,24,25,25,25,25};
	/* 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  */
	
	/* If ADOBE_SIZE(pixelsize) is true at this point then
	   the user's system does not have the standard ADOBE font set
	   so we just have to use a "fixed" font.
	   If we can't find a "fixed" font then something is seriously
	   wrong */
	if (ADOBE_SIZE (pixelsize)) {
	    tmp_font = gdk_font_load ("fixed");
	    if (!tmp_font)
		error("Could not find any X11 fonts\nCheck that the Font Path is correct.");
	}
	
	if (pixelsize < 8)
	    pixelsize = 8;
	else if (pixelsize == 9)
	    pixelsize = 8;
	else if (pixelsize >= 13 && pixelsize < 30) 
	    pixelsize = near[size-13];
	else
	    pixelsize = 34;
	
	g_free(fontname);
	if(face == 5)
	    fontname = g_strdup_printf(symbolname, pixelsize);
	else
	    fontname = g_strdup_printf(fontname_R6,
				       weight[(face-1)%2],
				       slant[((face-1)/2)%2],
				       pixelsize);	    
	tmp_font = gdk_font_load (fontname);
    }
    
    if(tmp_font) {
#ifdef HASH_FONTS
        font_htab[fontname] = tmp_font;
#endif
	if (fabs( (pixelsize - size)/(double)size ) > 0.2)
	    warning("wxWidgets used font size %d when %d was requested",
		    pixelsize, size);
    }
#endif 

    return tmp_font;
}
Exemple #28
0
GtkWidget *
create_file_view(FileView *view)
{
  GtkWidget *vbox;
  GtkWidget *hbox;
  GtkWidget *menu_bar;
  GtkWidget *button;
  GtkWidget *pixmapwid;
  GdkPixmap *pixmap;
  GdkBitmap *mask;
  GtkStyle *style;
  GdkFont *font;
  GtkWidget *sw;
  gint i;

  /* Top Pane */
  vbox = gtk_vbox_new(FALSE, 0);
  gtk_widget_show(vbox);

  menu_bar = create_filelist_menu_bar(view);
  gtk_widget_show(menu_bar);
  gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0);

  hbox = gtk_hbox_new(FALSE, 0);
  gtk_widget_show(hbox);

  /* Show/Hide Button */
  if (view == &app.right_view)
    button = gtk_button_new_with_label("<");
  else
    button = gtk_button_new_with_label(">");
  GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
  gtk_signal_connect(GTK_OBJECT(button), "button_press_event", 
                    GTK_SIGNAL_FUNC(show_hide_file_view_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button,
                       _("Left Click: Maximize/Minimize File View\n"
                         "Right Click: Sync Dirs"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
  gtk_widget_show(button);

  /* Hidden files toggle button */
  view->hidden_toggle = gtk_toggle_button_new_with_label("H");
  GTK_WIDGET_UNSET_FLAGS(view->hidden_toggle, GTK_CAN_FOCUS);
  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(view->hidden_toggle),
                               view->show_hidden);
  gtk_signal_connect(GTK_OBJECT(view->hidden_toggle), "toggled",
                     GTK_SIGNAL_FUNC(toggle_show_hidden_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), view->hidden_toggle,
                       _("Show/Hide hidden files"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), view->hidden_toggle, FALSE, FALSE, 0);
  gtk_widget_show(view->hidden_toggle);

  /* Dir Entry Combo */
  view->dir_entry = gtk_combo_new();
  gtk_combo_disable_activate(GTK_COMBO(view->dir_entry));
  gtk_combo_set_use_arrows_always(GTK_COMBO(view->dir_entry), TRUE);
  gtk_combo_set_case_sensitive(GTK_COMBO(view->dir_entry), TRUE);
  gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->entry), 
              "activate", GTK_SIGNAL_FUNC(dir_entry_cb), view);
  gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->popwin),
              "hide", GTK_SIGNAL_FUNC(dir_popwin_cb), view);
  gtk_box_pack_start(GTK_BOX(hbox), view->dir_entry, TRUE, TRUE, 0);
  gtk_widget_show(view->dir_entry);

  /* Up Dir Button */
  button = gtk_button_new();
  GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
  gtk_signal_connect(GTK_OBJECT(button), "button_press_event",
                     GTK_SIGNAL_FUNC(updir_click_cb), view);
  gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button,
                       _("Left Click: Up Dir   Right Click: Home"), NULL);
  gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
  gtk_widget_show(button);

  style = gtk_widget_get_style(app.main_window);
  pixmap = gdk_pixmap_create_from_xpm_d(app.main_window->window, &mask, 
                                        &style->bg[GTK_STATE_NORMAL], 
                                        icon_dirparent_xpm);
  pixmapwid = gtk_pixmap_new(pixmap, mask);
  gtk_container_add(GTK_CONTAINER(button), pixmapwid);
  gtk_widget_show(pixmapwid);

  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

  sw = gtk_scrolled_window_new(NULL, NULL);
  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
          GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(sw), cfg.scrollbar_pos);
  gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
  gtk_widget_show(sw);

  /* File List */
  view->clist = gtk_clist_new(MAX_COLUMNS);
  for (i = 0; i < MAX_COLUMNS; i++)
  {
    GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
    GtkWidget *label = gtk_label_new(all_columns[i].title);

    view->sort_arrows[i] = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN);
    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
    gtk_box_pack_end(GTK_BOX(hbox), view->sort_arrows[i], FALSE, TRUE, 0);

    gtk_widget_show(label);
    gtk_widget_show(hbox);
    gtk_clist_set_column_widget(GTK_CLIST(view->clist), i, hbox);
    GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(view->clist)->column[i].button,
                           GTK_CAN_FOCUS);
  } 
  gtk_clist_column_titles_show(GTK_CLIST(view->clist));
  gtk_clist_set_shadow_type(GTK_CLIST(view->clist), GTK_SHADOW_ETCHED_IN);
  gtk_clist_set_selection_mode(GTK_CLIST(view->clist), GTK_SELECTION_EXTENDED);
  gtk_clist_set_use_drag_icons(GTK_CLIST(view->clist), TRUE);
  gtk_clist_set_row_height(GTK_CLIST(view->clist), 0);
  
  font = gdk_font_load(cfg.list_font);
  if (font != NULL)
  {
    style = gtk_style_copy(gtk_widget_get_style(view->clist));
    style->font = font;
    gtk_widget_set_style(view->clist, style);
  }

  for (i = 0; i < MAX_COLUMNS; i++)
  {
    gtk_clist_set_column_width(GTK_CLIST(view->clist), i, all_columns[i].size);
    gtk_clist_set_column_visibility(GTK_CLIST(view->clist), i,
                                    all_columns[i].is_visible);
  }

  gtk_signal_connect(GTK_OBJECT(view->clist), "select_row",
                     GTK_SIGNAL_FUNC(select_row_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "button_press_event",
                     GTK_SIGNAL_FUNC(mouse_click_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "key_press_event",
                     GTK_SIGNAL_FUNC(file_list_key_press_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "click_column",
                     GTK_SIGNAL_FUNC(column_button_cb), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_get",
                     GTK_SIGNAL_FUNC(clist_drag_data_get), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_motion",
                     GTK_SIGNAL_FUNC(clist_drag_motion), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_leave",
                     GTK_SIGNAL_FUNC(clist_drag_leave), view);
  gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_received",
                     GTK_SIGNAL_FUNC(clist_drag_data_received), view);
  gtk_drag_dest_set(view->clist, GTK_DEST_DEFAULT_MOTION |
    GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, target_table,
    n_targets, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK |
    GDK_ACTION_ASK);

  gtk_container_add(GTK_CONTAINER(sw), view->clist);
  gtk_widget_show(view->clist);

  /* Set the CLIST_COLOR for resetting from the DRAG_HILIGHT color */
  {
    GtkStyle *style = gtk_widget_get_style(view->clist);
    CLIST_COLOR.red   = style->base[GTK_STATE_NORMAL].red;
    CLIST_COLOR.green = style->base[GTK_STATE_NORMAL].green;
    CLIST_COLOR.blue  = style->base[GTK_STATE_NORMAL].blue;
  }

  return vbox;
}
Exemple #29
0
void dessiner(file_opener *donnees)
{
    GdkDrawable* cartew=donnees->carte->window;
    donnees->gc = gdk_gc_new (cartew);
    // On initialise la police et la couleur
    donnees->font=gdk_font_load("6x9");//6x9 - 10x20
int j;
char text[5];

couleur(donnees->gc,donnees->c,-2);
// On trace les parallèles
for(j=35;j<=60;j+=5)
{
sprintf(text,"%d",j);
gdk_draw_line(cartew,donnees->gc,0,conversion_lat(j,donnees)*donnees->ycarte,donnees->xcarte*3,conversion_lat(j,donnees)*donnees->ycarte);
gdk_draw_string(cartew,donnees->font,donnees->gc,3,conversion_lat(j,donnees)*donnees->ycarte-5,text);
}

// Puis les méridiens
for(j=-15;j<=20;j+=5)
{
sprintf(text,"%d",j);
gdk_draw_line(cartew,donnees->gc,conversion_longitude(j,donnees)*donnees->xcarte,0,conversion_longitude(j,donnees)*donnees->xcarte,donnees->ycarte*3);
gdk_draw_string(cartew,donnees->font,donnees->gc,conversion_longitude(j,donnees)*donnees->xcarte+5,8,text);
}
couleur(donnees->gc,donnees->c,10);

 /* ----------------------------------  CONTOUR FRANCE -------------------------------------- */


    {
        double x1,x2,y1,y2;
        // On ouvre le fichier contenant les points
        FILE *f = fopen("contour_france.csv", "rb");
        //printf("f=%p\n", f);
        if(f)
        {
            char buffer[1024];

            while(fgets(buffer, sizeof(buffer), f))
            {
            //  On charge et on converti les points.
                sscanf(buffer, "%lf;%lf", &x1, &y1);
                x1 = conversion_longitude(x1, donnees);
                y1 = conversion_lat(y1, donnees);
                while(fgets(buffer, sizeof(buffer), f))
                {
                //  Si la ligne est "BREAK" on empeche de tracer la ligne afin de retirer les traits entre les iles
                    if(!strcmp(buffer, "BREAK\n"))
                    {
                        break;
                    }

                    sscanf(buffer, "%lf;%lf", &x2, &y2);
                    x2=conversion_longitude(x2, donnees);
                    y2=conversion_lat(y2, donnees);
                    gdk_draw_line(cartew, donnees->gc, x1*donnees->xcarte,y1*donnees->ycarte,x2*donnees->xcarte,y2*donnees->ycarte);
                    x1=x2;
                    y1=y2;
                }
            }
            fclose(f);
        }
    }

 // ----------------------------------  AERODROMES --------------------------------------
// Si des aérodromes sont chargé on commence l'affichage
   if(donnees->debutaero!=NULL)
    {

        aerodrome* pt_aero=donnees->debutaero;
        // Boucle pour parcourir tous les aérodromes
        while(pt_aero->ptsuiv!=NULL)
        {
            dessiner_aerodromes(pt_aero,donnees);
            pt_aero = pt_aero->ptsuiv;
        }
    }

 // ----------------------------------  BALISES --------------------------------------
// La structure est semblable à celle des aérodromes
    if(donnees->debutbalises!=NULL)
    {
        balise* pt_balise=donnees->debutbalises;

        while(pt_balise->ptsuiv!=NULL)
        {
            dessiner_balise(pt_balise,donnees);
            pt_balise = pt_balise->ptsuiv;
        }
    }




 // ----------------------------------  PLAN DE VOL --------------------------------------
// On initialise la couleur à 0 pour donner une couleur à chaque plan de vol
donnees->couleur_avion=0;

    if(donnees->debutpdv!=NULL) // Rentre si un plan de vol est chargé
    {
    pdv * pt_pdv_current=donnees->debutpdv;

        while(pt_pdv_current!=NULL) // Parcours tous les plans de vol
        {
            dessiner_pdv(pt_pdv_current,donnees);
            pt_pdv_current=pt_pdv_current->ptsuiv;
            donnees->couleur_avion+=1;
        }
    }

/* ------------------------------------ CONFLITS  ---------------------------------------- */

// Si il y a des conflits
    if(donnees->deb_conflits!=NULL)
    {
    // On passe en couleur rouge
    couleur(donnees->gc,donnees->c,-3);
    conflit* conflit_current = donnees->deb_conflits;
    // Variable d'affichage si reste nul à la fin de la boucle pas de conflit
    int conflit_affiche = 0;
    //  On parcours les conflits
        while(conflit_current->ptsuiv != NULL)
        {
        pdv* avion1 = conflit_current->pdv1;
        pdv* avion2 = conflit_current->pdv2;

            // On se situe entre le temps de début et de fin de conflit
            if(donnees->temps > conflit_current->temps_deb && donnees->temps < conflit_current->temps_fin)
            {
                position c0; // position au temps t
                if(avion1->affichage && avion2->affichage) // Les deux avions sont affichés
                {
                // Conflits affiché conflit_affiche est différent de 0
                    conflit_affiche++;

                //  On met un gros carré rouge sur la position de l'avion
                    get_position_avion(&c0,avion1,donnees->temps);
                    gdk_draw_rectangle(cartew,donnees->gc,TRUE,conversion_longitude(c0.x,donnees)*donnees->xcarte-3,conversion_lat(c0.y,donnees)*donnees->ycarte-3,7,7);

                    get_position_avion(&c0,avion2,donnees->temps);
                    gdk_draw_rectangle(cartew,donnees->gc,TRUE,conversion_longitude(c0.x,donnees)*donnees->xcarte-3,conversion_lat(c0.y,donnees)*donnees->ycarte-3,7,7);

                //  On change le label de conflit
                    char *markup;
                    markup = g_markup_printf_escaped ("<span foreground=\"#A00000\">%s</span>", "Conflit.");
                    gtk_label_set_markup (GTK_LABEL (donnees->Msg_conflit), markup);
                    g_free (markup);
                }
            }
        conflit_current = conflit_current->ptsuiv;
        }
// Si aucun conflit n'est affiché on passe au label pas de conflit
    if(conflit_affiche==0)
    {
        char *markup;
        markup = g_markup_printf_escaped ("<span foreground=\"#00A000\">%s</span>", "Pas de conflit\n actuellement.");
        gtk_label_set_markup (GTK_LABEL (donnees->Msg_conflit), markup);
        g_free (markup);
    }
    // On remet en noir
    couleur(donnees->gc,donnees->c,10);
    }
    gdk_font_unref(donnees->font);
    g_object_unref (donnees->gc);
}
Exemple #30
0
GtkWidget *
ghack_init_status_window()
{
    GtkWidget *horizSep0, *horizSep1, *horizSep2, *horizSep3;
    GtkWidget *statsHBox, *strVBox, *dexVBox, *intVBox, *statHBox;
    GtkWidget *wisVBox, *conVBox, *chaVBox;
    GtkWidget *alignVBox, *hungerVBox, *sickVBox, *blindVBox;
    GtkWidget *stunVBox, *halluVBox, *confuVBox, *encumbVBox;

    /* Set up a (ridiculous) initial state */
    lastDepth = 9999;
    lastStr = 9999;
    lastInt = 9999;
    lastWis = 9999;
    lastDex = 9999;
    lastCon = 9999;
    lastCha = 9999;
    lastAu = 9999;
    lastHP = 9999;
    lastMHP = 9999;
    lastLevel = 9999;
    lastPOW = 9999;
    lastMPOW = 9999;
    lastAC = 9999;
    lastExp = 9999;
    lastAlignment = A_NEUTRAL; /* start off guessing neutral */
    lastHungr = 9999;
    lastConf = 9999;
    lastBlind = 9999;
    lastStun = 9999;
    lastHalu = 9999;
    lastSick = 9999;
    lastEncumb = 9999;

    statTable = gtk_table_new(10, 8, FALSE);
    gtk_table_set_row_spacings(GTK_TABLE(statTable), 1);
    gtk_table_set_col_spacings(GTK_TABLE(statTable), 1);

    /* Begin the first row of the table -- the title */
    titleLabel = gtk_label_new(_("GnomeHack!"));
    gtk_table_attach(GTK_TABLE(statTable), titleLabel, 0, 8, 0, 1, GTK_FILL,
                     0, 0, 0);
    if (!normalStyle)
        normalStyle =
            gtk_style_copy(gtk_widget_get_style(GTK_WIDGET(titleLabel)));

    /* Set up some styles to draw stuff with */
    if (!redStyle) {
        g_assert(greenStyle == NULL);
        g_assert(bigStyle == NULL);
        g_assert(bigRedStyle == NULL);
        g_assert(bigGreenStyle == NULL);

        greenStyle = gtk_style_copy(normalStyle);
        redStyle = gtk_style_copy(normalStyle);
        bigRedStyle = gtk_style_copy(normalStyle);
        bigGreenStyle = gtk_style_copy(normalStyle);
        bigStyle = gtk_style_copy(normalStyle);

        greenStyle->fg[GTK_STATE_NORMAL] = color_green;
        redStyle->fg[GTK_STATE_NORMAL] = color_red;
        bigRedStyle->fg[GTK_STATE_NORMAL] = color_red;
        bigGreenStyle->fg[GTK_STATE_NORMAL] = color_green;

        gdk_font_unref(bigRedStyle->font);
        gdk_font_unref(bigGreenStyle->font);
        bigRedStyle->font =
            gdk_font_load("-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*");
        bigGreenStyle->font =
            gdk_font_load("-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*");

        gdk_font_unref(bigStyle->font);
        bigStyle->font =
            gdk_font_load("-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*");
    }
    gtk_widget_set_style(GTK_WIDGET(titleLabel), bigStyle);

    /* Begin the second row */
    dgnLevelLabel = gtk_label_new(_("Nethack for Gnome"));
    gtk_table_attach(GTK_TABLE(statTable), dgnLevelLabel, 0, 8, 1, 2,
                     GTK_FILL, 0, 0, 0);
    gtk_widget_set_style(GTK_WIDGET(dgnLevelLabel), bigStyle);

    /* Begin the third row */
    horizSep0 = gtk_hseparator_new();
    gtk_table_attach(GTK_TABLE(statTable), horizSep0, 0, 8, 2, 3, GTK_FILL,
                     GTK_FILL, 0, 0);

    /* Begin the fourth row */
    statsHBox = gtk_hbox_new(TRUE, 0);

    strVBox = gtk_vbox_new(FALSE, 0);
    strPix = gnome_pixmap_new_from_xpm_d(str_xpm);
    strLabel = gtk_label_new("STR: ");
    gtk_box_pack_start(GTK_BOX(strVBox), strPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(strVBox), strLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(strVBox), TRUE, TRUE,
                       2);

    dexVBox = gtk_vbox_new(FALSE, 0);
    dexPix = gnome_pixmap_new_from_xpm_d(dex_xpm);
    dexLabel = gtk_label_new("DEX: ");
    gtk_box_pack_start(GTK_BOX(dexVBox), dexPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(dexVBox), dexLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(dexVBox), TRUE, TRUE,
                       2);

    conVBox = gtk_vbox_new(FALSE, 0);
    conPix = gnome_pixmap_new_from_xpm_d(cns_xpm);
    conLabel = gtk_label_new("CON: ");
    gtk_box_pack_start(GTK_BOX(conVBox), conPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(conVBox), conLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(conVBox), TRUE, TRUE,
                       2);

    intVBox = gtk_vbox_new(FALSE, 0);
    intPix = gnome_pixmap_new_from_xpm_d(int_xpm);
    intLabel = gtk_label_new("INT: ");
    gtk_box_pack_start(GTK_BOX(intVBox), intPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(intVBox), intLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(intVBox), TRUE, TRUE,
                       2);

    wisVBox = gtk_vbox_new(FALSE, 0);
    wisPix = gnome_pixmap_new_from_xpm_d(wis_xpm);
    wisLabel = gtk_label_new("WIS: ");
    gtk_box_pack_start(GTK_BOX(wisVBox), wisPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(wisVBox), wisLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(wisVBox), TRUE, TRUE,
                       2);

    chaVBox = gtk_vbox_new(FALSE, 0);
    chaPix = gnome_pixmap_new_from_xpm_d(cha_xpm);
    chaLabel = gtk_label_new("CHA: ");
    gtk_box_pack_start(GTK_BOX(chaVBox), chaPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(chaVBox), chaLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statsHBox), GTK_WIDGET(chaVBox), TRUE, TRUE,
                       2);

    gtk_table_attach(GTK_TABLE(statTable), GTK_WIDGET(statsHBox), 0, 8, 3, 4,
                     GTK_FILL, 0, 0, 0);

    /* Begin the fifth row */
    horizSep1 = gtk_hseparator_new();
    gtk_table_attach(GTK_TABLE(statTable), horizSep1, 0, 8, 4, 5, GTK_FILL,
                     GTK_FILL, 0, 0);

    /* Begin the sixth row */
    hpLabel = gtk_label_new("HP: ");
    gtk_table_attach(GTK_TABLE(statTable), hpLabel, 0, 1, 5, 6, GTK_FILL, 0,
                     0, 0);

    acLabel = gtk_label_new("AC: ");
    gtk_table_attach(GTK_TABLE(statTable), acLabel, 2, 3, 5, 6, GTK_FILL, 0,
                     0, 0);

    powLabel = gtk_label_new("Power: ");
    gtk_table_attach(GTK_TABLE(statTable), powLabel, 4, 5, 5, 6, GTK_FILL, 0,
                     0, 0);

    goldLabel = gtk_label_new("Au: ");
    gtk_table_attach(GTK_TABLE(statTable), goldLabel, 6, 7, 5, 6, GTK_FILL, 0,
                     0, 0);

    /* Begin the seventh row */
    horizSep2 = gtk_hseparator_new();
    gtk_table_attach(GTK_TABLE(statTable), horizSep2, 0, 8, 6, 7, GTK_FILL,
                     GTK_FILL, 0, 0);

    /* Begin the eigth row */
    levlLabel = gtk_label_new("Level: ");
    gtk_table_attach(GTK_TABLE(statTable), levlLabel, 0, 1, 7, 8, GTK_FILL, 0,
                     0, 0);

    expLabel = gtk_label_new("Exp: ");
    gtk_table_attach(GTK_TABLE(statTable), expLabel, 2, 3, 7, 8, GTK_FILL, 0,
                     0, 0);

    timeLabel = gtk_label_new("Time: ");
    gtk_table_attach(GTK_TABLE(statTable), timeLabel, 4, 5, 7, 8, GTK_FILL, 0,
                     0, 0);

    scoreLabel = gtk_label_new("Score: ");
    gtk_table_attach(GTK_TABLE(statTable), scoreLabel, 6, 7, 7, 8, GTK_FILL,
                     0, 0, 0);

    /* Begin the ninth row */
    horizSep3 = gtk_hseparator_new();
    gtk_table_attach(GTK_TABLE(statTable), horizSep3, 0, 8, 8, 9, GTK_FILL,
                     GTK_FILL, 0, 0);

    /* Begin the tenth and last row */
    statHBox = gtk_hbox_new(FALSE, 0);

    alignVBox = gtk_vbox_new(FALSE, 0);
    alignPix = gnome_pixmap_new_from_xpm_d(neutral_xpm);
    alignLabel = gtk_label_new("Neutral");
    gtk_box_pack_start(GTK_BOX(alignVBox), alignPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(alignVBox), alignLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(alignVBox), TRUE, FALSE,
                       2);

    hungerVBox = gtk_vbox_new(FALSE, 0);
    hungerPix = gnome_pixmap_new_from_xpm_d(hungry_xpm);
    hungerLabel = gtk_label_new("Hungry");
    gtk_box_pack_start(GTK_BOX(hungerVBox), hungerPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(hungerVBox), hungerLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(hungerVBox), TRUE, FALSE,
                       2);

    sickVBox = gtk_vbox_new(FALSE, 0);
    sickPix = gnome_pixmap_new_from_xpm_d(sick_fp_xpm);
    sickLabel = gtk_label_new("FoodPois");
    gtk_box_pack_start(GTK_BOX(sickVBox), sickPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(sickVBox), sickLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(sickVBox), TRUE, FALSE,
                       2);

    blindVBox = gtk_vbox_new(FALSE, 0);
    blindPix = gnome_pixmap_new_from_xpm_d(blind_xpm);
    blindLabel = gtk_label_new("Blind");
    gtk_box_pack_start(GTK_BOX(blindVBox), blindPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(blindVBox), blindLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(blindVBox), TRUE, FALSE,
                       2);

    stunVBox = gtk_vbox_new(FALSE, 0);
    stunPix = gnome_pixmap_new_from_xpm_d(stunned_xpm);
    stunLabel = gtk_label_new("Stun");
    gtk_box_pack_start(GTK_BOX(stunVBox), stunPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(stunVBox), stunLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(stunVBox), TRUE, FALSE,
                       2);

    confuVBox = gtk_vbox_new(FALSE, 0);
    confuPix = gnome_pixmap_new_from_xpm_d(confused_xpm);
    confuLabel = gtk_label_new("Confused");
    gtk_box_pack_start(GTK_BOX(confuVBox), confuPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(confuVBox), confuLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(confuVBox), TRUE, FALSE,
                       2);

    halluVBox = gtk_vbox_new(FALSE, 0);
    halluPix = gnome_pixmap_new_from_xpm_d(hallu_xpm);
    halluLabel = gtk_label_new("Hallu");
    gtk_box_pack_start(GTK_BOX(halluVBox), halluPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(halluVBox), halluLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(halluVBox), TRUE, FALSE,
                       2);

    encumbVBox = gtk_vbox_new(FALSE, 0);
    encumbPix = gnome_pixmap_new_from_xpm_d(slt_enc_xpm);
    encumbLabel = gtk_label_new("Burdened");
    gtk_box_pack_start(GTK_BOX(encumbVBox), encumbPix, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(encumbVBox), encumbLabel, TRUE, TRUE, 2);
    gtk_box_pack_start(GTK_BOX(statHBox), GTK_WIDGET(encumbVBox), TRUE, FALSE,
                       2);

    gtk_table_attach(GTK_TABLE(statTable), GTK_WIDGET(statHBox), 0, 8, 9, 10,
                     GTK_FILL, GTK_FILL, 0, 0);

    /* Set up the necessary signals */
    gtk_signal_connect(GTK_OBJECT(statTable), "ghack_fade_highlight",
                       GTK_SIGNAL_FUNC(ghack_fade_highlighting), NULL);

    gtk_signal_connect(GTK_OBJECT(statTable), "ghack_putstr",
                       GTK_SIGNAL_FUNC(ghack_status_window_put_string), NULL);

    gtk_signal_connect(GTK_OBJECT(statTable), "ghack_clear",
                       GTK_SIGNAL_FUNC(ghack_status_window_clear), NULL);

    gtk_signal_connect(GTK_OBJECT(statTable), "ghack_curs",
                       GTK_SIGNAL_FUNC(ghack_status_window_cursor_to), NULL);
    gtk_signal_connect(GTK_OBJECT(statTable), "gnome_delay_output",
                       GTK_SIGNAL_FUNC(ghack_delay), NULL);

    /* Lastly, show the status window and everything in it */
    gtk_widget_show_all(statTable);

    return GTK_WIDGET(statTable);
}