Exemplo n.º 1
0
void run_all(apr_pool_t *pool, int argc, const char * const *argv)
{
    const char *from_file_path;
    const char *to_file_path;

    if (argc != 3) {
        THROW(MESSAGE_ARGUMENT_INVALID);
    }

    from_file_path = argv[1];
    to_file_path = argv[2];

    if (!File::is_exist(pool, from_file_path)) {
        THROW(MESSAGE_FILE_NOT_FOUND);
    }

    show_item("from_file_path", from_file_path);
    show_item("to_file_path", to_file_path);

    show_line();
    run_copy(pool, from_file_path, to_file_path);
}
Exemplo n.º 2
0
Arquivo: main.c Projeto: unixdj/depcb
static int
play_add(void)
{
	PcbItem	**cur;

	if (find_action_item(&cur, 0)) {
		switch (pcb.action->act & PCB_ITEM) {
		case PCB_POINT:
			g_warning("invalid add point: %f %f\n",
			    pcb.action->c.x, pcb.action->c.y);
			break;
		case PCB_LINE:
			g_warning("invalid add line: %f %f %f %f\n",
			    pcb.action->c.x, pcb.action->c.y,
			    pcb.action->l.x, pcb.action->l.y);
			break;
		}
		return 0;
	}
	*cur = new_pcb_item(pcb);
	(*cur)->type = pcb.action->act & PCB_ITEM;
	(*cur)->layers = pcb.action->layers;
	(*cur)->flags = pcb.action->flags;
	switch ((*cur)->type) {
	case PCB_POINT:
		(*cur)->p = pcb.action->c;
		g_print("add point [%llx] (%f %f)\n", (*cur)->layers,
		    (*cur)->p.x, (*cur)->p.y);
		break;
	case PCB_LINE:
		if (((*cur)->l.point[0] =
		    find_point(pcb.action->c, pcb.action->layers)) &&
		    ((*cur)->l.point[1] =
		    find_point(pcb.action->l, pcb.action->layers))) {
			g_print("add line [%llx] (%f %f) (%f %f)\n",
			    (*cur)->layers,
			    (*cur)->l.point[0]->p.x, (*cur)->l.point[0]->p.y,
			    (*cur)->l.point[1]->p.x, (*cur)->l.point[1]->p.y);
			break;
		}
		g_warning("invalid line: %f %f %f %f\n", pcb.action->c.x,
		    pcb.action->c.y, pcb.action->l.x, pcb.action->l.y);
		/* FAlLTHRU */
	default:
		g_free(*cur);
		*cur = NULL;
		return 0;
	}
	show_item(*cur);
	return 1;
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: unixdj/depcb
static int
play_change_layers(int unchange)
{
	PcbItem	**cur;

	if ((pcb.action->act & PCB_ITEM) != PCB_POINT) {
		g_warning("invalid change layers: wrong item type\n");
		return 0;
	}
	if (!find_action_item(&cur, unchange)) {
		g_warning("invalid toggle layers: %f %f\n",
		    pcb.action->c.x, pcb.action->c.y);
		return 0;
	}
	(*cur)->layers = unchange ? pcb.action->layers : pcb.action->newlayers;
	g_print("change layers to [%llx] (%f %f)\n", (*cur)->layers,
	    (*cur)->p.x, (*cur)->p.y);
	show_item(*cur);
	return 1;
}
Exemplo n.º 4
0
Arquivo: main.c Projeto: unixdj/depcb
static int
play_toggle_flags()
{
	PcbItem	**cur;

	if ((pcb.action->act & PCB_ITEM) != PCB_POINT) {
		g_warning("invalid toggle: wrong item type\n");
		return 0;
	}
	if (!find_action_item(&cur, 0)) {
		g_warning("invalid toggle: %f %f\n",
		    pcb.action->c.x, pcb.action->c.y);
		return 0;
	}
	(*cur)->flags ^= pcb.action->flags;
	g_print("toggle flags %x [%llx] (%f %f)\n", pcb.action->flags,
	    (*cur)->layers, (*cur)->p.x, (*cur)->p.y);
	show_item(*cur);
	return 1;
}
Exemplo n.º 5
0
void run_copy(apr_pool_t *pool,
              const char *from_file_path, const char *to_file_path)
{
    volatile double start_time;
    volatile double end_time;
    apr_mmap_t *from_file_map;
    const char *from_file_data;
    apr_size_t write_size;
    apr_size_t remain_size;

    show_test_name("copy");

    File from_file(pool, from_file_path);
    from_file.open(APR_READ|APR_BINARY);
    from_file_map = from_file.mmap();

    File to_file(pool, to_file_path);
    to_file.open(APR_CREATE|APR_TRUNCATE|APR_READ|APR_WRITE|APR_BINARY);
    MmapFileWriter to_file_writer(pool, to_file.get_handle());

    remain_size = static_cast<apr_size_t>(from_file.get_size()); // 4G の壁
    from_file_data = AS_CONST_CHAR(from_file_map->mm);
    start_time = get_usage_sec();
    while (remain_size > 0) {
        write_size = (remain_size > BUFFER_SIZE) ? BUFFER_SIZE : remain_size;

        to_file_writer.write(from_file_data, write_size);

        from_file_data += write_size;
        remain_size -= write_size;
    }
    to_file_writer.close();
    end_time = get_usage_sec();

    if (diff(pool, from_file_path, to_file_path) != 0) {
        THROW(MESSAGE_FILE_DIFFER);
    }

    show_item("copy", (end_time - start_time)*1000, " msec");
}
Exemplo n.º 6
0
static int refresh_select(struct _select_def *conf)
{
    int i;

    move(conf->title_pos.y, conf->title_pos.x);
    /*clrtobot();*/
    if (conf->show_title) {
        (*conf->show_title) (conf);
    }
    if (conf->show_endline) {
        move(conf->endline_pos.y, conf->endline_pos.x);
        (*conf->show_endline) (conf);
    }
    if (conf->page_pos!=0) {
    for (i = conf->page_pos; (i < conf->page_pos + conf->item_per_page)
         && (i <= conf->item_count); i++)
        if (show_item(conf, i, false) == SHOW_QUIT)
            return SHOW_QUIT;
    }
    move(conf->item_pos[conf->pos-conf->page_pos].y, conf->item_pos[conf->pos-conf->page_pos].x);
    return SHOW_CONTINUE;
}
Exemplo n.º 7
0
/**
 * \brief Inform the layer that a mouse button has been pressed.
 * \param key The value of the maintained button.
 * \param pos The current position of the cursor.
 */
bool bear::item_information_layer::mouse_pressed
( bear::input::mouse::mouse_code key,
  const claw::math::coordinate_2d<unsigned int>& pos )
{
  bool result = false;

  switch(key)
    {
    case bear::input::mouse::mc_left_button:
      result = grab_info_box(pos);
      break;
    case bear::input::mouse::mc_right_button:
      result = put_in_background(pos);
      break;
    case bear::input::mouse::mc_middle_button:
      result = close_info_box(pos);
      break;
    }

  if (!result)
    switch(key)
      {
      case bear::input::mouse::mc_left_button:
        result = show_item( pos, get_level().get_camera_focus() );
        break;
      case bear::input::mouse::mc_right_button:
        result = follow_item( pos, get_level().get_camera_focus() );
        break;
      case bear::input::mouse::mc_middle_button:
        if ( !m_info_box.empty() )
          {
            result = true;
            clear();
          }
        break;
      }

  return result;
} // item_information_layer::mouse_pressed()
Exemplo n.º 8
0
int
main(int argc, char **argv)
{
	ConfigData *configdata;
	size_t		configdata_len;
	char		my_exec_path[MAXPGPATH];
	int			i;
	int			j;

	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_config"));

	progname = get_progname(argv[0]);

	/* check for --help */
	for (i = 1; i < argc; i++)
	{
		if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-?") == 0)
		{
			help();
			exit(0);
		}
	}

	if (find_my_exec(argv[0], my_exec_path) < 0)
	{
		fprintf(stderr, _("%s: could not find own program executable\n"), progname);
		exit(1);
	}

	configdata = get_configdata(my_exec_path, &configdata_len);
	/* no arguments -> print everything */
	if (argc < 2)
	{
		for (i = 0; i < configdata_len; i++)
			printf("%s = %s\n", configdata[i].name, configdata[i].setting);
		exit(0);
	}

	/* otherwise print requested items */
	for (i = 1; i < argc; i++)
	{
		for (j = 0; info_items[j].switchname != NULL; j++)
		{
			if (strcmp(argv[i], info_items[j].switchname) == 0)
			{
				show_item(info_items[j].configname,
						  configdata, configdata_len);
				break;
			}
		}
		if (info_items[j].switchname == NULL)
		{
			fprintf(stderr, _("%s: invalid argument: %s\n"),
					progname, argv[i]);
			advice();
			exit(1);
		}
	}

	return 0;
}
int
main (int argc, char *argv[])
{

	char ch, lastChar;

	// Initialize the path to the database files
	std::string databaseHome("./");
	std::string itemName;

	// Database names
	std::string vDbName("vendordb.db");
	std::string iDbName("inventorydb.db");
	std::string itemSDbName("itemname.sdb");

	// Parse the command line arguments
	while ((ch = getopt(argc, argv, "h:i:")) != EOF)
		switch (ch) {
		case 'h':
			databaseHome = optarg;
			lastChar = databaseHome[databaseHome.size() -1];
			if (lastChar != '/' && lastChar != '\\')
				return (usage());
			break;
		case 'i':
			itemName = optarg;
			break;
		case '?':
		default:
			return (usage());
			break;
		}

	try {
		// Open all databases.
		MyDb inventoryDB(databaseHome, iDbName);
		MyDb vendorDB(databaseHome, vDbName);
		MyDb itemnameSDB(databaseHome, itemSDbName, true);

		// Associate the secondary to the primary
		inventoryDB.getDb().associate(NULL,
		                              &(itemnameSDB.getDb()),
		                              get_item_name,
		                              0);

		if (itemName.empty()) {
			show_all_records(inventoryDB, vendorDB);
		}
		else {
			show_item(itemnameSDB, vendorDB, itemName);
		}
	}
	catch (DbException &e) {
		std::cerr << "Error reading databases. " << std::endl;
		return (e.get_errno());
	}
	catch (std::exception &e) {
		std::cerr << "Error reading databases. " << std::endl;
		std::cerr << e.what() << std::endl;
		return (-1);
	}

	return (0);
} // End main
Exemplo n.º 10
0
int
show(void)
{
    char *p;
    void (*cfunc)(int);
    void (*sfunc)(int);
    void (*bfunc)(int);
    struct natstr *natp;
    int tlev;
    char buf[1024];
    int rlev;

again:
    p = getstarg(player->argp[1], "Show what ('?' to list options)? ", buf);
    if (!p || !*p)
	return RET_SYN;
    if (*p == '?') {
	pr("bridge, item, land, news, nuke, plane, sect, ship, product, tower, updates\n");
	goto again;
    }

    natp = getnatp(player->cnum);
    rlev = (int)(1.25 * natp->nat_level[NAT_RLEV]);

    if (!player->argp[3]) {
	tlev = (int)(1.25 * natp->nat_level[NAT_TLEV]);
	if (player->god)
	    tlev = 1000;
    } else {
	tlev = (int)atoi(player->argp[3]);
	if (tlev > (int)(1.25 * natp->nat_level[NAT_TLEV]) && !player->god)
	    tlev = (int)(1.25 * natp->nat_level[NAT_TLEV]);
    }
    if (player->god)
	rlev = 1000;
    switch (*p) {
    case 'b':
	show_bridge(99999);
	return RET_OK;
    case 't':
	show_tower(99999);
	return RET_OK;
    case 'i':
	show_item(99999);
	return RET_OK;
    case 'n':
	if (*(p + 1) == 'e') {
	    show_news(99999);
	    return RET_OK;
	}
	if (drnuke_const > MIN_DRNUKE_CONST)
	    tlev = ((rlev / drnuke_const) > tlev ? tlev :
		    (rlev / drnuke_const));
	bfunc = show_nuke_build;
	cfunc = show_nuke_capab;
	sfunc = show_nuke_stats;
	break;
    case 'l':
	bfunc = show_land_build;
	sfunc = show_land_stats;
	cfunc = show_land_capab;
	break;
    case 'p':
	if (p[1] == 'r') {
	    show_product(99999);
	    return RET_OK;
	}
	bfunc = show_plane_build;
	sfunc = show_plane_stats;
	cfunc = show_plane_capab;
	break;
    case 's':
	if (*(p + 1) == 'e') {
	    bfunc = show_sect_build;
	    sfunc = show_sect_stats;
	    cfunc = show_sect_capab;
	} else {
	    bfunc = show_ship_build;
	    sfunc = show_ship_stats;
	    cfunc = show_ship_capab;
	}
	break;
    case 'u':
	show_updates(player->argp[2] ? atoi(player->argp[2]) : 8);
	return RET_OK;
    default:
	return RET_SYN;
    }

    p = getstarg(player->argp[2],
		 "Build, stats, or capability data (b,s,c)? ", buf);
    if (!p || !*p)
	return RET_SYN;
    pr("Printing for tech level '%d'\n", tlev);
    if (*p == 'B' || *p == 'b')
	bfunc(tlev);
    else if (*p == 'C' || *p == 'c')
	cfunc(tlev);
    else if (*p == 'S' || *p == 's')
	sfunc(tlev);
    else
	return RET_SYN;
    return RET_OK;
}
Exemplo n.º 11
0
int list_select(struct _select_def *conf, int key)
{
    int ret;

/*      int old_page_num=conf->page_num;*/
    bool getkey=true;

/*      int old_item_count = conf->item_count;*/
    ret=SHOW_QUIT;
    while (ret!=SHOW_CONTINUE) {
            if (getkey)
                ret = do_select_internal(conf, key);
	    switch (ret) {
	    case SHOW_DIRCHANGE:
                adjust_conf(conf);
	        if (conf->get_data) {
	            ret=(*conf->get_data) (conf, conf->page_pos, conf->item_per_page);
	            if (ret==SHOW_DIRCHANGE) {//possible loop..... 
                        getkey=false;
			continue;
                    }
		    if (ret==SHOW_SELCHANGE) {
                        getkey=false;
			continue;
                    }
	            if (ret==SHOW_QUIT)
	        	return ret;
	            if ((ret=check_valid(conf)) == SHOW_QUIT)
	                return SHOW_QUIT;
		}
	    case SHOW_REFRESH:
	        ret=refresh_select(conf);
	        break;
	    case SHOW_SELCHANGE:
	        ret = select_change(conf, conf->new_pos);
	        if ((ret!=SHOW_SELECT)&&(ret!=SHOW_QUIT)) {
                    getkey=false;
                    continue;
	        }
	    case SHOW_REFRESHSELECT:
	        show_item(conf, conf->pos, true);
                move(conf->item_pos[conf->pos-conf->page_pos].y,
    	            conf->item_pos[conf->pos-conf->page_pos].x);
	        ret=SHOW_CONTINUE;
	        break;
	    case SHOW_CONTINUE:
		return SHOW_CONTINUE;
	    case SHOW_SELECT:
	        ret = do_select_internal(conf, KEY_SELECT);
	        if (ret!=SHOW_SELECT) {
                    getkey=false;
                    continue;
	        }
	    case SHOW_QUIT:
	    	if (conf->quit)
	    		(*conf->quit)(conf);
	        return ret;
	    }
            key=ret;
	    getkey=true;
	}
    return SHOW_CONTINUE;
}
Exemplo n.º 12
0
static int select_change(struct _select_def *conf, int new_pos)
{
    int ret = SHOW_CONTINUE;
    int old_pos;

    if (conf->item_count==0)
        return SHOW_CONTINUE;
    if (conf->on_selchange) {
        ret = (*conf->on_selchange) (conf, new_pos);
        if (ret != SHOW_CONTINUE)
            return ret;
    }
    if (new_pos <= 0 || new_pos > conf->item_count) {
        if ((new_pos == 0) && (conf->flag & LF_LOOP)) {
            new_pos = conf->item_count;
        } else if ((new_pos == conf->item_count + 1) && (conf->flag & LF_LOOP)) {
            new_pos = 1;
        } else {
            select_wrong(conf);
            return SHOW_CONTINUE;
        }
    }
    if (conf->flag & LF_MULTIPAGE) {
        if (new_pos<conf->page_pos || new_pos>=conf->page_pos+conf->item_per_page)
        { /*需要换页了*/
            conf->page_pos=((new_pos-1)/conf->item_per_page)*conf->item_per_page+1;
            conf->pos = new_pos;
            return SHOW_DIRCHANGE;
        }
    }
    if (conf->prompt) {
        int pre_len = strlen(conf->prompt);
        int idx = conf->pos - conf->page_pos;
        int newidx = new_pos - conf->page_pos;

        if (pre_len) {
            move(conf->item_pos[idx].y, conf->item_pos[idx].x - pre_len);
            outns("                                                               ", pre_len);
            if (conf->item_pos[newidx].x > pre_len)
                move(conf->item_pos[newidx].y, conf->item_pos[newidx].x - pre_len);
            else
                move(conf->item_pos[newidx].y, 0);
            outns(conf->prompt, pre_len);
        }
    }
    /* 如果是高亮的选择方式,需要清除原来的行*/
    /* 和重绘新行*/
    old_pos=conf->pos;
    conf->pos = new_pos;
    if (conf->flag & LF_HILIGHTSEL) {
        conf->new_pos = new_pos;
        show_item(conf, old_pos, true);
        show_item(conf, conf->pos, true);
    } else
    if (conf->flag & LF_FORCEREFRESHSEL) {
        conf->new_pos = new_pos;
        show_item(conf, old_pos, false);
        show_item(conf, conf->pos, false);
    }
    move(conf->item_pos[new_pos-conf->page_pos].y,
    	    conf->item_pos[new_pos-conf->page_pos].x);
    /*conf->pos = new_pos;*/
    return ret;
}
Exemplo n.º 13
0
/*
 * Create dialog window for configuration.
 */
static void configure (void)
{
  GtkWidget *vbox, *bbox, *ok, *cancel, *apply, *hbox, *label,
    *button, *unit_label, *hbox2, *vbox2, *sep;


  GSList *group = NULL;

  DEBUG("configure");
  if (configure_win)
    return;

  read_config ();

  configure_win = gtk_window_new (GTK_WINDOW_DIALOG);

  gtk_signal_connect (GTK_OBJECT (configure_win), "destroy",
		      GTK_SIGNAL_FUNC (gtk_widget_destroyed), &configure_win);

  gtk_window_set_title (GTK_WINDOW (configure_win),
			"On Screen Display Configuration - " XOSD_VERSION);

  vbox = gtk_vbox_new (FALSE, 10);
  gtk_container_add (GTK_CONTAINER (configure_win), vbox);
  gtk_container_set_border_width (GTK_CONTAINER (configure_win), 5);

  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Font:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  font_entry = gtk_entry_new ();
  if (font)
    gtk_entry_set_text (GTK_ENTRY (font_entry), font);
  gtk_box_pack_start (GTK_BOX (hbox), font_entry, TRUE, TRUE, 0);
  button = gtk_button_new_with_label ("Set");
  gtk_signal_connect (GTK_OBJECT (button), "clicked",
		      GTK_SIGNAL_FUNC (font_dialog_window), NULL);
  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);


  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Colour:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  colour_entry = gtk_entry_new ();
  if (colour)
    gtk_entry_set_text (GTK_ENTRY (colour_entry), colour);
  gtk_box_pack_start (GTK_BOX (hbox), colour_entry, TRUE, TRUE, 0);
  button = gtk_button_new_with_label ("Set");
  gtk_signal_connect (GTK_OBJECT (button), "clicked",
		      GTK_SIGNAL_FUNC (colour_dialog_window), NULL);
  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);


  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Timeout:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  timeout_obj = gtk_adjustment_new (timeout, -1, 60, 1, 1, 1);
  timeout_spin = gtk_spin_button_new (GTK_ADJUSTMENT (timeout_obj), 1.0, 0);
  if (timeout)
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (timeout_spin),
			       (gfloat) timeout);
  gtk_box_pack_start (GTK_BOX (hbox), timeout_spin, FALSE, FALSE, 0);
  unit_label = gtk_label_new ("seconds");
  gtk_box_pack_start (GTK_BOX (hbox), unit_label, FALSE, FALSE, 0);


  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Vertical Offset:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  offset_obj = gtk_adjustment_new (timeout, 0, 60, 1, 1, 1);
  offset_spin = gtk_spin_button_new (GTK_ADJUSTMENT (offset_obj), 1.0, 0);
  if (offset)
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (offset_spin),
			       (gfloat) offset);
  gtk_box_pack_start (GTK_BOX (hbox), offset_spin, FALSE, FALSE, 0);
  unit_label = gtk_label_new ("pixels");
  gtk_box_pack_start (GTK_BOX (hbox), unit_label, FALSE, FALSE, 0);

  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Shadow Offset:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);

  shadow_obj = gtk_adjustment_new (timeout, 0, 60, 1, 1, 1);
  shadow_spin = gtk_spin_button_new (GTK_ADJUSTMENT (shadow_obj), 1.0, 0);
  gtk_spin_button_set_value (GTK_SPIN_BUTTON (shadow_spin),
			     (gfloat) shadow_offset);
  gtk_box_pack_start (GTK_BOX (hbox), shadow_spin, FALSE, FALSE, 0);
  unit_label = gtk_label_new ("pixels");
  gtk_box_pack_start (GTK_BOX (hbox), unit_label, FALSE, FALSE, 0);


  hbox = gtk_hbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Position:");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  pos_top = gtk_radio_button_new_with_label (NULL, "Top");
  group = gtk_radio_button_group (GTK_RADIO_BUTTON (pos_top));
  pos_bottom = gtk_radio_button_new_with_label (group, "Bottom");
  gtk_box_pack_start (GTK_BOX (hbox), pos_top, FALSE, FALSE, 0);
  gtk_box_pack_start (GTK_BOX (hbox), pos_bottom, FALSE, FALSE, 0);

  if (pos == XOSD_top)
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pos_top), TRUE);
  else
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pos_bottom), TRUE);


  /*
  hbox = gtk_hbox_new (FALSE, 5);

  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
  label = gtk_label_new ("Volume :");
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
  vol_on = gtk_radio_button_new_with_label (NULL, "Yes");
  group = gtk_radio_button_group (GTK_RADIO_BUTTON (vol_on));
  vol_off = gtk_radio_button_new_with_label (group, "No");
  gtk_box_pack_start (GTK_BOX (hbox), vol_on, FALSE, FALSE, 0);
  gtk_box_pack_start (GTK_BOX (hbox), vol_off, FALSE, FALSE, 0);

  if (show_volume == 1)
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vol_on), TRUE);
  else
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vol_off), TRUE);
  */

  sep=gtk_hseparator_new();
  gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0);

  hbox2 = gtk_hbox_new (FALSE, 2);
  gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
  label=gtk_label_new("Show:");
  gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);

  hbox2 = gtk_hbox_new (FALSE, 2);
  gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);

  vbox2 = gtk_vbox_new (FALSE, 4);
  gtk_box_pack_start (GTK_BOX (hbox2), vbox2, FALSE, FALSE, 0);

  show_item(vbox2, "Volume", show_volume, &vol_on);
  show_item(vbox2, "Balance", show_balance, &bal_on);
  show_item(vbox2, "Pause", show_pause, &pause_on);
  show_item(vbox2, "Track Name", show_trackname, &trackname_on);
  vbox2 = gtk_vbox_new (FALSE, 5);
  gtk_box_pack_start (GTK_BOX (hbox2), vbox2, FALSE, FALSE, 0);
  show_item(vbox2, "Stop", show_stop, &stop_on);
  show_item(vbox2, "Repeat", show_repeat, &repeat_on);
  show_item(vbox2, "Shuffle", show_shuffle, &shuffle_on);

  sep=gtk_hseparator_new();
  gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0);

  bbox = gtk_hbutton_box_new ();
  gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
  gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 5);
  gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);

  ok = gtk_button_new_with_label ("Ok");
  gtk_signal_connect (GTK_OBJECT (ok), "clicked",
		      GTK_SIGNAL_FUNC (configure_ok_cb), NULL);
  GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);
  gtk_box_pack_start (GTK_BOX (bbox), ok, TRUE, TRUE, 0);
  gtk_widget_grab_default (ok);

  apply = gtk_button_new_with_label ("Apply");
  gtk_signal_connect (GTK_OBJECT (apply), "clicked",
		      GTK_SIGNAL_FUNC (configure_apply_cb), NULL);
  GTK_WIDGET_SET_FLAGS (apply, GTK_CAN_DEFAULT);
  gtk_box_pack_start (GTK_BOX (bbox), apply, TRUE, TRUE, 0);

  cancel = gtk_button_new_with_label ("Cancel");
  gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked",
			     GTK_SIGNAL_FUNC (gtk_widget_destroy),
			     GTK_OBJECT (configure_win));
  GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
  gtk_box_pack_start (GTK_BOX (bbox), cancel, TRUE, TRUE, 0);


  gtk_widget_show_all (configure_win);
}