In-game downloading Part 7 (and final):

1) refactor Gui_DownloadPictures_LQ
2) refactor Gui_DownloadSetPictures_LQ
3) remove the [T] before file names in tokens download file
This commit is contained in:
slapshot5
2011-10-25 05:27:22 +00:00
parent 6b398c3143
commit a65508754d
7 changed files with 228 additions and 959 deletions

View File

@@ -1,180 +1,174 @@
[T]b_0_0_germ.jpg http://www.cardforge.org/fpics/tokens/b_0_0_germ.jpg
[T]b_0_1_insect.jpg http://www.cardforge.org/fpics/tokens/b_0_1_insect.jpg
[T]b_0_1_serf.jpg http://www.cardforge.org/fpics/tokens/b_0_1_serf.jpg
[T]b_0_1_thrull.jpg http://www.cardforge.org/fpics/tokens/b_0_1_thrull.jpg
[T]b_1_1_bat.jpg http://www.cardforge.org/fpics/tokens/b_1_1_bat.jpg
[T]b_1_1_faerie_rogue.jpg http://www.cardforge.org/fpics/tokens/b_1_1_faerie_rogue.jpg
[T]b_1_1_festering_goblin.jpg http://www.cardforge.org/fpics/tokens/b_1_1_festering_goblin.jpg
[T]b_1_1_goblin_rogue.jpg http://www.cardforge.org/fpics/tokens/b_1_1_goblin_rogue.jpg
[T]b_1_1_minion.jpg http://www.cardforge.org/fpics/tokens/b_1_1_minion.jpg
[T]b_1_1_rat.jpg http://www.cardforge.org/fpics/tokens/b_1_1_rat.jpg
[T]b_1_1_skeleton.jpg http://www.cardforge.org/fpics/tokens/b_1_1_skeleton.jpg
[T]b_1_1_thrull.jpg http://www.cardforge.org/fpics/tokens/b_1_1_thrull.jpg
[T]b_1_2_bat.jpg http://www.cardforge.org/fpics/tokens/b_1_2_bat.jpg
[T]b_20_20_marit_lage.jpg http://www.cardforge.org/fpics/tokens/b_20_20_marit_lage.jpg
[T]b_2_1_cat.jpg http://www.cardforge.org/fpics/tokens/b_2_1_cat.jpg
[T]b_2_2_zombie.jpg http://www.cardforge.org/fpics/tokens/b_2_2_zombie.jpg
[T]b_2_4_spider.jpg http://www.cardforge.org/fpics/tokens/b_2_4_spider.jpg
[T]b_3_3_angel.jpg http://www.cardforge.org/fpics/tokens/b_3_3_angel.jpg
[T]b_3_3_kavu.jpg http://www.cardforge.org/fpics/tokens/b_3_3_kavu.jpg
[T]b_4_4_horror.jpg http://www.cardforge.org/fpics/tokens/b_4_4_horror.jpg
[T]b_5_5_demon.jpg http://www.cardforge.org/fpics/tokens/b_5_5_demon.jpg
[T]b_5_5_urami.jpg http://www.cardforge.org/fpics/tokens/b_5_5_urami.jpg
[T]b_5_5_zombie_giant.jpg http://www.cardforge.org/fpics/tokens/b_5_5_zombie_giant.jpg
[T]b_6_6_wurm.jpg http://www.cardforge.org/fpics/tokens/b_6_6_wurm.jpg
[T]b_dx_dy_spirit.jpg http://www.cardforge.org/fpics/tokens/b_dx_dy_spirit.jpg
[T]b_x_x_demon.jpg http://www.cardforge.org/fpics/tokens/b_x_x_demon.jpg
[T]b_x_x_minion.jpg http://www.cardforge.org/fpics/tokens/b_x_x_minion.jpg
[T]bg_1_1_worm.jpg http://www.cardforge.org/fpics/tokens/bg_1_1_worm.jpg
[T]br_1_1_minor_demon.jpg http://www.cardforge.org/fpics/tokens/br_1_1_minor_demon.jpg
[T]br_3_1_graveborn.jpg http://www.cardforge.org/fpics/tokens/br_3_1_graveborn.jpg
[T]br_5_5_elemental.jpg http://www.cardforge.org/fpics/tokens/br_5_5_elemental.jpg
[T]c_0_1_eldrazi_spawn.jpg http://www.cardforge.org/fpics/tokens/c_0_1_eldrazi_spawn.jpg
[T]c_0_1_pest.jpg http://www.cardforge.org/fpics/tokens/c_0_1_pest.jpg
[T]c_0_1_prism.jpg http://www.cardforge.org/fpics/tokens/c_0_1_prism.jpg
[T]c_1_1_hornet.jpg http://www.cardforge.org/fpics/tokens/c_1_1_hornet.jpg
[T]c_1_1_metallic_sliver.jpg http://www.cardforge.org/fpics/tokens/c_1_1_metallic_sliver.jpg
[T]c_1_1_myr.jpg http://www.cardforge.org/fpics/tokens/c_1_1_myr.jpg
[T]c_1_1_pentavite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_pentavite.jpg
[T]c_1_1_sand.jpg http://www.cardforge.org/fpics/tokens/c_1_1_sand.jpg
[T]c_1_1_shapeshifter.jpg http://www.cardforge.org/fpics/tokens/c_1_1_shapeshifter.jpg
[T]c_1_1_sliver.jpg http://www.cardforge.org/fpics/tokens/c_1_1_sliver.jpg
[T]c_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/c_1_1_snake.jpg
[T]c_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/c_1_1_spirit.jpg
[T]c_1_1_thopter.jpg http://www.cardforge.org/fpics/tokens/c_1_1_thopter.jpg
[T]c_1_1_triskelavite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_triskelavite.jpg
[T]c_1_1_wasp.jpg http://www.cardforge.org/fpics/tokens/c_1_1_wasp.jpg
[T]c_2_2_assembly_worker.jpg http://www.cardforge.org/fpics/tokens/c_2_2_assembly_worker.jpg
[T]c_2_2_pincher.jpg http://www.cardforge.org/fpics/tokens/c_2_2_pincher.jpg
[T]c_2_2_spawn.jpg http://www.cardforge.org/fpics/tokens/c_2_2_spawn.jpg
[T]c_2_2_wirefly.jpg http://www.cardforge.org/fpics/tokens/c_2_2_wirefly.jpg
[T]c_3_3_golem.jpg http://www.cardforge.org/fpics/tokens/c_3_3_golem.jpg
[T]c_3_3_wurm_deathtouch.jpg http://www.cardforge.org/fpics/tokens/c_3_3_wurm_deathtouch.jpg
[T]c_3_3_wurm_lifelink.jpg http://www.cardforge.org/fpics/tokens/c_3_3_wurm_lifelink.jpg
[T]c_3_4_gargoyle.jpg http://www.cardforge.org/fpics/tokens/c_3_4_gargoyle.jpg
[T]c_5_5_djinn.jpg http://www.cardforge.org/fpics/tokens/c_5_5_djinn.jpg
[T]c_5_5_tuktuk_the_returned.jpg http://www.cardforge.org/fpics/tokens/c_5_5_tuktuk_the_returned.jpg
[T]c_9_9_golem.jpg http://www.cardforge.org/fpics/tokens/c_9_9_golem.jpg
[T]c_x_x_horror.jpg http://www.cardforge.org/fpics/tokens/c_x_x_horror.jpg
[T]c_x_x_riptide_replicator.jpg http://www.cardforge.org/fpics/tokens/c_x_x_riptide_replicator.jpg
[T]c_x_y_twin.jpg http://www.cardforge.org/fpics/tokens/c_x_y_twin.jpg
[T]g_1_1_butterfly.jpg http://www.cardforge.org/fpics/tokens/g_1_1_butterfly.jpg
[T]g_0_1_plant.jpg http://www.cardforge.org/fpics/tokens/g_0_1_plant.jpg
[T]g_0_1_plant_wall.jpg http://www.cardforge.org/fpics/tokens/g_0_1_plant_wall.jpg
[T]g_0_1_wood.jpg http://www.cardforge.org/fpics/tokens/g_0_1_wood.jpg
[T]g_0_2_plant_wall.jpg http://www.cardforge.org/fpics/tokens/g_0_2_plant_wall.jpg
[T]g_0_3_plant_wall.jpg http://www.cardforge.org/fpics/tokens/g_0_3_plant_wall.jpg
[T]g_1_1_cat.jpg http://www.cardforge.org/fpics/tokens/g_1_1_cat.jpg
[T]g_1_1_elf_warrior.jpg http://www.cardforge.org/fpics/tokens/g_1_1_elf_warrior.jpg
[T]g_1_1_hippo.jpg http://www.cardforge.org/fpics/tokens/g_1_1_hippo.jpg
[T]g_1_1_hound.jpg http://www.cardforge.org/fpics/tokens/g_1_1_hound.jpg
[T]g_1_1_insect.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect.jpg
[T]g_1_1_insect_deathtouch.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect_deathtouch.jpg
[T]g_1_1_insect_infect.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect_infect.jpg
[T]g_1_1_llanowar_elves.jpg http://www.cardforge.org/fpics/tokens/g_1_1_llanowar_elves.jpg
[T]g_1_1_ooze.jpg http://www.cardforge.org/fpics/tokens/g_1_1_ooze.jpg
[T]g_1_1_saproling.jpg http://www.cardforge.org/fpics/tokens/g_1_1_saproling.jpg
[T]g_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/g_1_1_snake.jpg
[T]g_1_1_spike.jpg http://www.cardforge.org/fpics/tokens/g_1_1_spike.jpg
[T]g_1_1_splinter.jpg http://www.cardforge.org/fpics/tokens/g_1_1_splinter.jpg
[T]g_1_1_squirrel.jpg http://www.cardforge.org/fpics/tokens/g_1_1_squirrel.jpg
[T]g_1_1_wolf.jpg http://www.cardforge.org/fpics/tokens/g_1_1_wolf.jpg
[T]g_1_2_spider.jpg http://www.cardforge.org/fpics/tokens/g_1_2_spider.jpg
[T]g_1_3_plant_wall.jpg http://www.cardforge.org/fpics/tokens/g_1_3_plant_wall.jpg
[T]g_1_3_plant_wall_deathtouch.jpg http://www.cardforge.org/fpics/tokens/g_1_3_plant_wall_deathtouch.jpg
[T]g_1_4_plant_wall.jpg http://www.cardforge.org/fpics/tokens/g_1_4_plant_wall.jpg
[T]g_2_2_ape.jpg http://www.cardforge.org/fpics/tokens/g_2_2_ape.jpg
[T]g_2_2_bear.jpg http://www.cardforge.org/fpics/tokens/g_2_2_bear.jpg
[T]g_2_2_cat_warrior.jpg http://www.cardforge.org/fpics/tokens/g_2_2_cat_warrior.jpg
[T]g_2_2_lizard.jpg http://www.cardforge.org/fpics/tokens/g_2_2_lizard.jpg
[T]g_2_2_ooze.jpg http://www.cardforge.org/fpics/tokens/g_2_2_ooze.jpg
[T]g_2_2_wolf.jpg http://www.cardforge.org/fpics/tokens/g_2_2_wolf.jpg
[T]g_2_5_treefolk_shaman.jpg http://www.cardforge.org/fpics/tokens/g_2_5_treefolk_shaman.jpg
[T]g_3_3_ape.jpg http://www.cardforge.org/fpics/tokens/g_3_3_ape.jpg
[T]g_3_3_beast.jpg http://www.cardforge.org/fpics/tokens/g_3_3_beast.jpg
[T]g_3_3_centaur.jpg http://www.cardforge.org/fpics/tokens/g_3_3_centaur.jpg
[T]g_3_3_centaur_pro_black.jpg http://www.cardforge.org/fpics/tokens/g_3_3_centaur_pro_black.jpg
[T]g_3_3_elephant.jpg http://www.cardforge.org/fpics/tokens/g_3_3_elephant.jpg
[T]g_4_4_beast.jpg http://www.cardforge.org/fpics/tokens/g_4_4_beast.jpg
[T]g_4_4_elemental.jpg http://www.cardforge.org/fpics/tokens/g_4_4_elemental.jpg
[T]g_5_5_beast.jpg http://www.cardforge.org/fpics/tokens/g_5_5_beast.jpg
[T]g_6_1_insect.jpg http://www.cardforge.org/fpics/tokens/g_6_1_insect.jpg
[T]g_6_6_wurm.jpg http://www.cardforge.org/fpics/tokens/g_6_6_wurm.jpg
[T]g_7_7_elemental.jpg http://www.cardforge.org/fpics/tokens/g_7_7_elemental.jpg
[T]g_x_x_elephant.jpg http://www.cardforge.org/fpics/tokens/g_x_x_elephant.jpg
[T]g_x_x_ooze.jpg http://www.cardforge.org/fpics/tokens/g_x_x_ooze.jpg
[T]g_x_x_wurm.jpg http://www.cardforge.org/fpics/tokens/g_x_x_wurm.jpg
[T]gr_1_1_dragon.jpg http://www.cardforge.org/fpics/tokens/gr_1_1_dragon.jpg
[T]grw_1_1_sand_warrior.jpg http://www.cardforge.org/fpics/tokens/grw_1_1_sand_warrior.jpg
[T]gu_2_2_drake.jpg http://www.cardforge.org/fpics/tokens/gu_2_2_drake.jpg
[T]gu_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/gu_1_1_snake.jpg
[T]gw_1_1_elf_warrior.jpg http://www.cardforge.org/fpics/tokens/gw_1_1_elf_warrior.jpg
[T]gw_2_2_voja.jpg http://www.cardforge.org/fpics/tokens/gw_2_2_voja.jpg
[T]r_0_1_kobolds_of_kher_keep.jpg http://www.cardforge.org/fpics/tokens/r_0_1_kobolds_of_kher_keep.jpg
[T]r_1_1_elemental_cat.jpg http://www.cardforge.org/fpics/tokens/r_1_1_elemental_cat.jpg
[T]r_1_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_1_1_elemental.jpg
[T]r_1_1_goblin.jpg http://www.cardforge.org/fpics/tokens/r_1_1_goblin.jpg
[T]r_1_1_goblin_scout.jpg http://www.cardforge.org/fpics/tokens/r_1_1_goblin_scout.jpg
[T]r_2_1_goblin.jpg http://www.cardforge.org/fpics/tokens/r_2_1_goblin.jpg
[T]r_3_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_1_elemental.jpg
[T]r_3_1_elemental_shaman.jpg http://www.cardforge.org/fpics/tokens/r_3_1_elemental_shaman.jpg
[T]r_3_1_spark_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_1_spark_elemental.jpg
[T]r_3_3_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_3_elemental.jpg
[T]r_3_3_ogre.jpg http://www.cardforge.org/fpics/tokens/r_3_3_ogre.jpg
[T]r_4_4_bird.jpg http://www.cardforge.org/fpics/tokens/r_4_4_bird.jpg
[T]r_4_4_dragon.jpg http://www.cardforge.org/fpics/tokens/r_4_4_dragon.jpg
[T]r_4_4_giant.jpg http://www.cardforge.org/fpics/tokens/r_4_4_giant.jpg
[T]r_4_4_hellion.jpg http://www.cardforge.org/fpics/tokens/r_4_4_hellion.jpg
[T]r_5_5_dragon.jpg http://www.cardforge.org/fpics/tokens/r_5_5_dragon.jpg
[T]r_7_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_7_1_elemental.jpg
[T]r_x_x_elemental.jpg http://www.cardforge.org/fpics/tokens/r_x_x_elemental.jpg
[T]rg_3_4_stangg_twin.jpg http://www.cardforge.org/fpics/tokens/rg_3_4_stangg_twin.jpg
[T]rw_1_1_goblin_soldier.jpg http://www.cardforge.org/fpics/tokens/rw_1_1_goblin_soldier.jpg
[T]u_0_1_homunculus.jpg http://www.cardforge.org/fpics/tokens/u_0_1_homunculus.jpg
[T]u_0_1_plant_wall.jpg http://www.cardforge.org/fpics/tokens/u_0_1_plant_wall.jpg
[T]u_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/u_1_1_bird.jpg
[T]u_1_1_camarid.jpg http://www.cardforge.org/fpics/tokens/u_1_1_camarid.jpg
[T]u_1_1_cloud_sprite.jpg http://www.cardforge.org/fpics/tokens/u_1_1_cloud_sprite.jpg
[T]u_1_1_faerie.jpg http://www.cardforge.org/fpics/tokens/u_1_1_faerie.jpg
[T]u_1_1_illusion.jpg http://www.cardforge.org/fpics/tokens/u_1_1_illusion.jpg
[T]u_1_1_merfolk_wizard.jpg http://www.cardforge.org/fpics/tokens/u_1_1_merfolk_wizard.jpg
[T]u_1_1_thopter.jpg http://www.cardforge.org/fpics/tokens/u_1_1_thopter.jpg
[T]u_2_2_elemental_flying.jpg http://www.cardforge.org/fpics/tokens/u_2_2_elemental_flying.jpg
[T]u_2_2_homunculus.jpg http://www.cardforge.org/fpics/tokens/u_2_2_homunculus.jpg
[T]u_2_2_illusion.jpg http://www.cardforge.org/fpics/tokens/u_2_2_illusion.jpg
[T]u_3_3_weird.jpg http://www.cardforge.org/fpics/tokens/u_3_3_weird.jpg
[T]u_5_5_wall.jpg http://www.cardforge.org/fpics/tokens/u_5_5_wall.jpg
[T]ub_1_1_faerie_rogue.jpg http://www.cardforge.org/fpics/tokens/ub_1_1_faerie_rogue.jpg
[T]ub_1_1_zombie_wizard.jpg http://www.cardforge.org/fpics/tokens/ub_1_1_zombie_wizard.jpg
[T]ur_5_5_elemental.jpg http://www.cardforge.org/fpics/tokens/ur_5_5_elemental.jpg
[T]w_0_1_caribou.jpg http://www.cardforge.org/fpics/tokens/w_0_1_caribou.jpg
[T]w_0_1_deserter.jpg http://www.cardforge.org/fpics/tokens/w_0_1_deserter.jpg
[T]w_0_1_goat.jpg http://www.cardforge.org/fpics/tokens/w_0_1_goat.jpg
[T]w_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird.jpg
[T]w_1_1_bird_flying.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird_flying.jpg
[T]w_1_1_bird_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird_soldier.jpg
[T]w_1_1_citizen.jpg http://www.cardforge.org/fpics/tokens/w_1_1_citizen.jpg
[T]w_1_1_goldmeadow_harrier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_goldmeadow_harrier.jpg
[T]w_1_1_kithkin_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_kithkin_soldier.jpg
[T]w_1_1_kor_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_kor_soldier.jpg
[T]w_1_1_pegasus.jpg http://www.cardforge.org/fpics/tokens/w_1_1_pegasus.jpg
[T]w_1_1_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_soldier.jpg
[T]w_1_1_soldier_ally.jpg http://www.cardforge.org/fpics/tokens/w_1_1_soldier_ally.jpg
[T]w_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/w_1_1_spirit.jpg
[T]w_2_2_cat.jpg http://www.cardforge.org/fpics/tokens/w_2_2_cat.jpg
[T]w_2_2_griffin.jpg http://www.cardforge.org/fpics/tokens/w_2_2_griffin.jpg
[T]w_2_2_knight.jpg http://www.cardforge.org/fpics/tokens/w_2_2_knight.jpg
[T]w_2_2_knight_first_strike.jpg http://www.cardforge.org/fpics/tokens/w_2_2_knight_first_strike.jpg
[T]w_3_3_bird.jpg http://www.cardforge.org/fpics/tokens/w_3_3_bird.jpg
[T]w_3_3_spirit.jpg http://www.cardforge.org/fpics/tokens/w_3_3_spirit.jpg
[T]w_4_4_angel.jpg http://www.cardforge.org/fpics/tokens/w_4_4_angel.jpg
[T]w_4_4_elemental.jpg http://www.cardforge.org/fpics/tokens/w_4_4_elemental.jpg
[T]w_5_5_giant_warrior.jpg http://www.cardforge.org/fpics/tokens/w_5_5_giant_warrior.jpg
[T]w_n_n_avatar.jpg http://www.cardforge.org/fpics/tokens/w_n_n_avatar.jpg
[T]wb_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/wb_1_1_spirit.jpg
[T]wrg_8_8_beast.jpg http://www.cardforge.org/fpics/tokens/wrg_8_8_beast.jpg
[T]wr_1_1_goblin_soldier.jpg http://www.cardforge.org/fpics/tokens/wr_1_1_goblin_soldier.jpg
[T]wu_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/wu_1_1_bird.jpg
b_0_0_germ.jpg http://www.cardforge.org/fpics/tokens/b_0_0_germ.jpg
b_0_1_insect.jpg http://www.cardforge.org/fpics/tokens/b_0_1_insect.jpg
b_0_1_serf.jpg http://www.cardforge.org/fpics/tokens/b_0_1_serf.jpg
b_0_1_thrull.jpg http://www.cardforge.org/fpics/tokens/b_0_1_thrull.jpg
b_1_1_bat.jpg http://www.cardforge.org/fpics/tokens/b_1_1_bat.jpg
b_1_1_faerie_rogue.jpg http://www.cardforge.org/fpics/tokens/b_1_1_faerie_rogue.jpg
b_1_1_festering_goblin.jpg http://www.cardforge.org/fpics/tokens/b_1_1_festering_goblin.jpg
b_1_1_goblin_rogue.jpg http://www.cardforge.org/fpics/tokens/b_1_1_goblin_rogue.jpg
b_1_1_minion.jpg http://www.cardforge.org/fpics/tokens/b_1_1_minion.jpg
b_1_1_rat.jpg http://www.cardforge.org/fpics/tokens/b_1_1_rat.jpg
b_1_1_skeleton.jpg http://www.cardforge.org/fpics/tokens/b_1_1_skeleton.jpg
b_1_1_thrull.jpg http://www.cardforge.org/fpics/tokens/b_1_1_thrull.jpg
b_1_2_bat.jpg http://www.cardforge.org/fpics/tokens/b_1_2_bat.jpg
b_20_20_marit_lage.jpg http://www.cardforge.org/fpics/tokens/b_20_20_marit_lage.jpg
b_2_1_cat.jpg http://www.cardforge.org/fpics/tokens/b_2_1_cat.jpg
b_2_2_zombie.jpg http://www.cardforge.org/fpics/tokens/b_2_2_zombie.jpg
b_2_4_spider.jpg http://www.cardforge.org/fpics/tokens/b_2_4_spider.jpg
b_3_3_angel.jpg http://www.cardforge.org/fpics/tokens/b_3_3_angel.jpg
b_3_3_kavu.jpg http://www.cardforge.org/fpics/tokens/b_3_3_kavu.jpg
b_4_4_horror.jpg http://www.cardforge.org/fpics/tokens/b_4_4_horror.jpg
b_5_5_demon.jpg http://www.cardforge.org/fpics/tokens/b_5_5_demon.jpg
b_5_5_urami.jpg http://www.cardforge.org/fpics/tokens/b_5_5_urami.jpg
b_5_5_zombie_giant.jpg http://www.cardforge.org/fpics/tokens/b_5_5_zombie_giant.jpg
b_6_6_wurm.jpg http://www.cardforge.org/fpics/tokens/b_6_6_wurm.jpg
b_dx_dy_spirit.jpg http://www.cardforge.org/fpics/tokens/b_dx_dy_spirit.jpg
b_x_x_demon.jpg http://www.cardforge.org/fpics/tokens/b_x_x_demon.jpg
b_x_x_minion.jpg http://www.cardforge.org/fpics/tokens/b_x_x_minion.jpg
bg_1_1_worm.jpg http://www.cardforge.org/fpics/tokens/bg_1_1_worm.jpg
br_1_1_minor_demon.jpg http://www.cardforge.org/fpics/tokens/br_1_1_minor_demon.jpg
br_3_1_graveborn.jpg http://www.cardforge.org/fpics/tokens/br_3_1_graveborn.jpg
br_5_5_elemental.jpg http://www.cardforge.org/fpics/tokens/br_5_5_elemental.jpg
c_0_1_eldrazi_spawn.jpg http://www.cardforge.org/fpics/tokens/c_0_1_eldrazi_spawn.jpg
c_0_1_pest.jpg http://www.cardforge.org/fpics/tokens/c_0_1_pest.jpg
c_0_1_prism.jpg http://www.cardforge.org/fpics/tokens/c_0_1_prism.jpg
c_1_1_hornet.jpg http://www.cardforge.org/fpics/tokens/c_1_1_hornet.jpg
c_1_1_metallic_sliver.jpg http://www.cardforge.org/fpics/tokens/c_1_1_metallic_sliver.jpg
c_1_1_myr.jpg http://www.cardforge.org/fpics/tokens/c_1_1_myr.jpg
c_1_1_pentavite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_pentavite.jpg
c_1_1_sand.jpg http://www.cardforge.org/fpics/tokens/c_1_1_sand.jpg
c_1_1_shapeshifter.jpg http://www.cardforge.org/fpics/tokens/c_1_1_shapeshifter.jpg
c_1_1_sliver.jpg http://www.cardforge.org/fpics/tokens/c_1_1_sliver.jpg
c_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/c_1_1_snake.jpg
c_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/c_1_1_spirit.jpg
c_1_1_thopter.jpg http://www.cardforge.org/fpics/tokens/c_1_1_thopter.jpg
c_1_1_triskelavite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_triskelavite.jpg
c_1_1_wasp.jpg http://www.cardforge.org/fpics/tokens/c_1_1_wasp.jpg
c_2_2_assembly_worker.jpg http://www.cardforge.org/fpics/tokens/c_2_2_assembly_worker.jpg
c_2_2_pincher.jpg http://www.cardforge.org/fpics/tokens/c_2_2_pincher.jpg
c_2_2_spawn.jpg http://www.cardforge.org/fpics/tokens/c_2_2_spawn.jpg
c_2_2_wirefly.jpg http://www.cardforge.org/fpics/tokens/c_2_2_wirefly.jpg
c_3_3_golem.jpg http://www.cardforge.org/fpics/tokens/c_3_3_golem.jpg
c_3_3_wurm_deathtouch.jpg http://www.cardforge.org/fpics/tokens/c_3_3_wurm_deathtouch.jpg
c_3_3_wurm_lifelink.jpg http://www.cardforge.org/fpics/tokens/c_3_3_wurm_lifelink.jpg
c_3_4_gargoyle.jpg http://www.cardforge.org/fpics/tokens/c_3_4_gargoyle.jpg
c_5_5_djinn.jpg http://www.cardforge.org/fpics/tokens/c_5_5_djinn.jpg
c_5_5_tuktuk_the_returned.jpg http://www.cardforge.org/fpics/tokens/c_5_5_tuktuk_the_returned.jpg
c_9_9_golem.jpg http://www.cardforge.org/fpics/tokens/c_9_9_golem.jpg
c_x_x_horror.jpg http://www.cardforge.org/fpics/tokens/c_x_x_horror.jpg
c_x_x_riptide_replicator.jpg http://www.cardforge.org/fpics/tokens/c_x_x_riptide_replicator.jpg
c_x_y_twin.jpg http://www.cardforge.org/fpics/tokens/c_x_y_twin.jpg
g_1_1_butterfly.jpg http://www.cardforge.org/fpics/tokens/g_1_1_butterfly.jpg
g_0_1_plant.jpg http://www.cardforge.org/fpics/tokens/g_0_1_plant.jpg
g_0_1_wood.jpg http://www.cardforge.org/fpics/tokens/g_0_1_wood.jpg
g_1_1_cat.jpg http://www.cardforge.org/fpics/tokens/g_1_1_cat.jpg
g_1_1_elf_warrior.jpg http://www.cardforge.org/fpics/tokens/g_1_1_elf_warrior.jpg
g_1_1_hippo.jpg http://www.cardforge.org/fpics/tokens/g_1_1_hippo.jpg
g_1_1_hound.jpg http://www.cardforge.org/fpics/tokens/g_1_1_hound.jpg
g_1_1_insect.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect.jpg
g_1_1_insect_deathtouch.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect_deathtouch.jpg
g_1_1_insect_infect.jpg http://www.cardforge.org/fpics/tokens/g_1_1_insect_infect.jpg
g_1_1_llanowar_elves.jpg http://www.cardforge.org/fpics/tokens/g_1_1_llanowar_elves.jpg
g_1_1_ooze.jpg http://www.cardforge.org/fpics/tokens/g_1_1_ooze.jpg
g_1_1_saproling.jpg http://www.cardforge.org/fpics/tokens/g_1_1_saproling.jpg
g_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/g_1_1_snake.jpg
g_1_1_spike.jpg http://www.cardforge.org/fpics/tokens/g_1_1_spike.jpg
g_1_1_splinter.jpg http://www.cardforge.org/fpics/tokens/g_1_1_splinter.jpg
g_1_1_squirrel.jpg http://www.cardforge.org/fpics/tokens/g_1_1_squirrel.jpg
g_1_1_wolf.jpg http://www.cardforge.org/fpics/tokens/g_1_1_wolf.jpg
g_1_2_spider.jpg http://www.cardforge.org/fpics/tokens/g_1_2_spider.jpg
g_2_2_ape.jpg http://www.cardforge.org/fpics/tokens/g_2_2_ape.jpg
g_2_2_bear.jpg http://www.cardforge.org/fpics/tokens/g_2_2_bear.jpg
g_2_2_cat_warrior.jpg http://www.cardforge.org/fpics/tokens/g_2_2_cat_warrior.jpg
g_2_2_lizard.jpg http://www.cardforge.org/fpics/tokens/g_2_2_lizard.jpg
g_2_2_ooze.jpg http://www.cardforge.org/fpics/tokens/g_2_2_ooze.jpg
g_2_2_wolf.jpg http://www.cardforge.org/fpics/tokens/g_2_2_wolf.jpg
g_2_5_treefolk_shaman.jpg http://www.cardforge.org/fpics/tokens/g_2_5_treefolk_shaman.jpg
g_3_3_ape.jpg http://www.cardforge.org/fpics/tokens/g_3_3_ape.jpg
g_3_3_beast.jpg http://www.cardforge.org/fpics/tokens/g_3_3_beast.jpg
g_3_3_centaur.jpg http://www.cardforge.org/fpics/tokens/g_3_3_centaur.jpg
g_3_3_centaur_pro_black.jpg http://www.cardforge.org/fpics/tokens/g_3_3_centaur_pro_black.jpg
g_3_3_elephant.jpg http://www.cardforge.org/fpics/tokens/g_3_3_elephant.jpg
g_4_4_beast.jpg http://www.cardforge.org/fpics/tokens/g_4_4_beast.jpg
g_4_4_elemental.jpg http://www.cardforge.org/fpics/tokens/g_4_4_elemental.jpg
g_5_5_beast.jpg http://www.cardforge.org/fpics/tokens/g_5_5_beast.jpg
g_6_1_insect.jpg http://www.cardforge.org/fpics/tokens/g_6_1_insect.jpg
g_6_6_wurm.jpg http://www.cardforge.org/fpics/tokens/g_6_6_wurm.jpg
g_7_7_elemental.jpg http://www.cardforge.org/fpics/tokens/g_7_7_elemental.jpg
g_x_x_elephant.jpg http://www.cardforge.org/fpics/tokens/g_x_x_elephant.jpg
g_x_x_ooze.jpg http://www.cardforge.org/fpics/tokens/g_x_x_ooze.jpg
g_x_x_wurm.jpg http://www.cardforge.org/fpics/tokens/g_x_x_wurm.jpg
gr_1_1_dragon.jpg http://www.cardforge.org/fpics/tokens/gr_1_1_dragon.jpg
grw_1_1_sand_warrior.jpg http://www.cardforge.org/fpics/tokens/grw_1_1_sand_warrior.jpg
gu_2_2_drake.jpg http://www.cardforge.org/fpics/tokens/gu_2_2_drake.jpg
gu_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/gu_1_1_snake.jpg
gw_1_1_elf_warrior.jpg http://www.cardforge.org/fpics/tokens/gw_1_1_elf_warrior.jpg
gw_2_2_voja.jpg http://www.cardforge.org/fpics/tokens/gw_2_2_voja.jpg
r_0_1_kobolds_of_kher_keep.jpg http://www.cardforge.org/fpics/tokens/r_0_1_kobolds_of_kher_keep.jpg
r_1_1_elemental_cat.jpg http://www.cardforge.org/fpics/tokens/r_1_1_elemental_cat.jpg
r_1_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_1_1_elemental.jpg
r_1_1_goblin.jpg http://www.cardforge.org/fpics/tokens/r_1_1_goblin.jpg
r_1_1_goblin_scout.jpg http://www.cardforge.org/fpics/tokens/r_1_1_goblin_scout.jpg
r_2_1_goblin.jpg http://www.cardforge.org/fpics/tokens/r_2_1_goblin.jpg
r_3_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_1_elemental.jpg
r_3_1_elemental_shaman.jpg http://www.cardforge.org/fpics/tokens/r_3_1_elemental_shaman.jpg
r_3_1_spark_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_1_spark_elemental.jpg
r_3_3_elemental.jpg http://www.cardforge.org/fpics/tokens/r_3_3_elemental.jpg
r_3_3_ogre.jpg http://www.cardforge.org/fpics/tokens/r_3_3_ogre.jpg
r_4_4_bird.jpg http://www.cardforge.org/fpics/tokens/r_4_4_bird.jpg
r_4_4_dragon.jpg http://www.cardforge.org/fpics/tokens/r_4_4_dragon.jpg
r_4_4_giant.jpg http://www.cardforge.org/fpics/tokens/r_4_4_giant.jpg
r_4_4_hellion.jpg http://www.cardforge.org/fpics/tokens/r_4_4_hellion.jpg
r_5_5_dragon.jpg http://www.cardforge.org/fpics/tokens/r_5_5_dragon.jpg
r_7_1_elemental.jpg http://www.cardforge.org/fpics/tokens/r_7_1_elemental.jpg
r_x_x_elemental.jpg http://www.cardforge.org/fpics/tokens/r_x_x_elemental.jpg
rg_3_4_stangg_twin.jpg http://www.cardforge.org/fpics/tokens/rg_3_4_stangg_twin.jpg
rw_1_1_goblin_soldier.jpg http://www.cardforge.org/fpics/tokens/rw_1_1_goblin_soldier.jpg
u_0_1_homunculus.jpg http://www.cardforge.org/fpics/tokens/u_0_1_homunculus.jpg
u_0_1_plant_wall.jpg http://www.cardforge.org/fpics/tokens/u_0_1_plant_wall.jpg
u_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/u_1_1_bird.jpg
u_1_1_camarid.jpg http://www.cardforge.org/fpics/tokens/u_1_1_camarid.jpg
u_1_1_cloud_sprite.jpg http://www.cardforge.org/fpics/tokens/u_1_1_cloud_sprite.jpg
u_1_1_faerie.jpg http://www.cardforge.org/fpics/tokens/u_1_1_faerie.jpg
u_1_1_illusion.jpg http://www.cardforge.org/fpics/tokens/u_1_1_illusion.jpg
u_1_1_merfolk_wizard.jpg http://www.cardforge.org/fpics/tokens/u_1_1_merfolk_wizard.jpg
u_1_1_thopter.jpg http://www.cardforge.org/fpics/tokens/u_1_1_thopter.jpg
u_2_2_elemental_flying.jpg http://www.cardforge.org/fpics/tokens/u_2_2_elemental_flying.jpg
u_2_2_homunculus.jpg http://www.cardforge.org/fpics/tokens/u_2_2_homunculus.jpg
u_2_2_illusion.jpg http://www.cardforge.org/fpics/tokens/u_2_2_illusion.jpg
u_3_3_weird.jpg http://www.cardforge.org/fpics/tokens/u_3_3_weird.jpg
u_5_5_wall.jpg http://www.cardforge.org/fpics/tokens/u_5_5_wall.jpg
ub_1_1_faerie_rogue.jpg http://www.cardforge.org/fpics/tokens/ub_1_1_faerie_rogue.jpg
ub_1_1_zombie_wizard.jpg http://www.cardforge.org/fpics/tokens/ub_1_1_zombie_wizard.jpg
ur_5_5_elemental.jpg http://www.cardforge.org/fpics/tokens/ur_5_5_elemental.jpg
w_0_1_caribou.jpg http://www.cardforge.org/fpics/tokens/w_0_1_caribou.jpg
w_0_1_deserter.jpg http://www.cardforge.org/fpics/tokens/w_0_1_deserter.jpg
w_0_1_goat.jpg http://www.cardforge.org/fpics/tokens/w_0_1_goat.jpg
w_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird.jpg
w_1_1_bird_flying.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird_flying.jpg
w_1_1_bird_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_bird_soldier.jpg
w_1_1_citizen.jpg http://www.cardforge.org/fpics/tokens/w_1_1_citizen.jpg
w_1_1_goldmeadow_harrier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_goldmeadow_harrier.jpg
w_1_1_kithkin_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_kithkin_soldier.jpg
w_1_1_kor_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_kor_soldier.jpg
w_1_1_pegasus.jpg http://www.cardforge.org/fpics/tokens/w_1_1_pegasus.jpg
w_1_1_soldier.jpg http://www.cardforge.org/fpics/tokens/w_1_1_soldier.jpg
w_1_1_soldier_ally.jpg http://www.cardforge.org/fpics/tokens/w_1_1_soldier_ally.jpg
w_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/w_1_1_spirit.jpg
w_2_2_cat.jpg http://www.cardforge.org/fpics/tokens/w_2_2_cat.jpg
w_2_2_griffin.jpg http://www.cardforge.org/fpics/tokens/w_2_2_griffin.jpg
w_2_2_knight.jpg http://www.cardforge.org/fpics/tokens/w_2_2_knight.jpg
w_2_2_knight_first_strike.jpg http://www.cardforge.org/fpics/tokens/w_2_2_knight_first_strike.jpg
w_3_3_bird.jpg http://www.cardforge.org/fpics/tokens/w_3_3_bird.jpg
w_3_3_spirit.jpg http://www.cardforge.org/fpics/tokens/w_3_3_spirit.jpg
w_4_4_angel.jpg http://www.cardforge.org/fpics/tokens/w_4_4_angel.jpg
w_4_4_elemental.jpg http://www.cardforge.org/fpics/tokens/w_4_4_elemental.jpg
w_5_5_giant_warrior.jpg http://www.cardforge.org/fpics/tokens/w_5_5_giant_warrior.jpg
w_n_n_avatar.jpg http://www.cardforge.org/fpics/tokens/w_n_n_avatar.jpg
wb_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/wb_1_1_spirit.jpg
wrg_8_8_beast.jpg http://www.cardforge.org/fpics/tokens/wrg_8_8_beast.jpg
wr_1_1_goblin_soldier.jpg http://www.cardforge.org/fpics/tokens/wr_1_1_goblin_soldier.jpg
wu_1_1_bird.jpg http://www.cardforge.org/fpics/tokens/wu_1_1_bird.jpg
# //These tokens are not currently used by any cards in Forge, but links provided should they be scripted so the correct name is used:

View File

@@ -1,28 +1,13 @@
package forge;
import com.esotericsoftware.minlog.Log;
import forge.error.ErrorViewer;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.io.File;
import java.util.ArrayList;
import java.util.Random;
import java.util.StringTokenizer;
import static java.lang.Integer.parseInt;
import static javax.swing.JOptionPane.DEFAULT_OPTION;
import static javax.swing.JOptionPane.PLAIN_MESSAGE;
import javax.swing.JFrame;
/**
@@ -31,303 +16,49 @@ import static javax.swing.JOptionPane.PLAIN_MESSAGE;
* @author Forge
* @version $Id$
*/
public class Gui_DownloadPictures_LQ extends DefaultBoundedRangeModel implements Runnable, NewConstants, NewConstants.LANG.Gui_DownloadPictures {
public class Gui_DownloadPictures_LQ extends GuiDownloader {
/** Constant <code>serialVersionUID=-7890794857949935256L</code>. */
private static final long serialVersionUID = -7890794857949935256L;
/** Constant <code>types</code>. */
public static final Proxy.Type[] types = Proxy.Type.values();
//proxy
private int type;
private JTextField addr, port;
//progress
private mCard[] cards;
private int card;
private boolean cancel;
private JProgressBar bar;
private JOptionPane dlg;
private JButton close;
private static final long serialVersionUID = -2839597792999139007L;
/**
* <p>Constructor for Gui_DownloadPictures_LQ.</p>
* <p>Constructor for GuiDownloadQuestImages.</p>
*
* @param c an array of {@link forge.Gui_DownloadPictures_LQ.mCard} objects.
* @param frame a array of {@link javax.swing.JFrame} objects.
*/
private Gui_DownloadPictures_LQ(final mCard[] c) {
this.cards = c;
addr = new JTextField(ForgeProps.getLocalized(PROXY_ADDRESS));
port = new JTextField(ForgeProps.getLocalized(PROXY_PORT));
bar = new JProgressBar(this);
JPanel p0 = new JPanel();
p0.setLayout(new BoxLayout(p0, BoxLayout.Y_AXIS));
//Proxy Choice
ButtonGroup bg = new ButtonGroup();
String[] labels = {
ForgeProps.getLocalized(NO_PROXY), ForgeProps.getLocalized(HTTP_PROXY),
ForgeProps.getLocalized(SOCKS_PROXY)};
for (int i = 0; i < types.length; i++) {
JRadioButton rb = new JRadioButton(labels[i]);
rb.addChangeListener(new ProxyHandler(i));
bg.add(rb);
p0.add(rb);
if (i == 0) {
rb.setSelected(true);
}
}
//Proxy config
p0.add(addr);
p0.add(port);
//Start
final JButton b = new JButton(ForgeProps.getLocalized(BUTTONS.START));
b.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
new Thread(Gui_DownloadPictures_LQ.this).start();
b.setEnabled(false);
}
});
p0.add(Box.createVerticalStrut(5));
//Progress
p0.add(bar);
bar.setStringPainted(true);
bar.setString(String.format(ForgeProps.getLocalized(card == cards.length ? BAR_CLOSE : BAR_WAIT), this.card, cards.length));
Dimension d = bar.getPreferredSize();
d.width = 300;
bar.setPreferredSize(d);
//JOptionPane
Object[] options = {b, close = new JButton(ForgeProps.getLocalized(BUTTONS.CANCEL))};
dlg = new JOptionPane(p0, DEFAULT_OPTION, PLAIN_MESSAGE, null, options, options[1]);
public Gui_DownloadPictures_LQ(final JFrame frame) {
super(frame);
}
/** {@inheritDoc} */
@Override
public int getMinimum() {
return 0;
}
/** {@inheritDoc} */
@Override
public int getValue() {
return card;
}
/** {@inheritDoc} */
@Override
public int getExtent() {
return 0;
}
/** {@inheritDoc} */
@Override
public int getMaximum() {
return cards == null ? 0 : cards.length;
}
/**
* <p>update.</p>
*
* @param card a int.
*/
private void update(final int card) {
this.card = card;
final class Worker implements Runnable {
private int card;
Worker(int card) {
this.card = card;
}
public void run() {
fireStateChanged();
bar.setString(String.format(ForgeProps.getLocalized(card == cards.length ? BAR_CLOSE : BAR_WAIT), card,
cards.length));
System.out.println(card + "/" + cards.length);
}
}
EventQueue.invokeLater(new Worker(card));
}
/**
* <p>Getter for the field <code>dlg</code>.</p>
*
* @param frame a {@link javax.swing.JFrame} object.
* @return a {@link javax.swing.JDialog} object.
*/
public JDialog getDlg(final JFrame frame) {
final JDialog dlg = this.dlg.createDialog(frame, ForgeProps.getLocalized(TITLE));
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dlg.setVisible(false);
}
});
return dlg;
}
/**
* <p>Setter for the field <code>cancel</code>.</p>
*
* @param cancelIn a boolean.
*/
public void setCancel(final boolean cancelIn) {
this.cancel = cancelIn;
}
/**
* <p>run.</p>
*/
public void run() {
BufferedInputStream in;
BufferedOutputStream out;
File base = ForgeProps.getFile(IMAGE_BASE);
File tokenBase = ForgeProps.getFile(IMAGE_TOKEN);
if (!tokenBase.exists()) {
tokenBase.mkdirs();
}
Random r = MyRandom.random;
Proxy p = null;
if (type == 0) {
p = Proxy.NO_PROXY;
} else {
try {
p = new Proxy(types[type], new InetSocketAddress(addr.getText(), parseInt(port.getText())));
} catch (Exception ex) {
ErrorViewer.showError(ex, ForgeProps.getLocalized(ERRORS.PROXY_CONNECT), addr.getText(),
port.getText());
return;
}
}
if (p != null) {
byte[] buf = new byte[1024];
int len;
System.out.println("basedir: " + base);
for (update(0); card < cards.length && !cancel; update(card + 1)) {
try {
String url = cards[card].url;
String cName;
if (cards[card].name.substring(0, 3).equals("[T]")) {
base = ForgeProps.getFile(IMAGE_TOKEN);
cName = cards[card].name.substring(3, cards[card].name.length());
} else {
base = ForgeProps.getFile(IMAGE_BASE);
cName = cards[card].name;
}
File f = new File(base, cName);
try {
in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream());
out = new BufferedOutputStream(new FileOutputStream(f));
while ((len = in.read(buf)) != -1) {
//user cancelled
if (cancel) {
in.close();
out.flush();
out.close();
//delete what was written so far
f.delete();
return;
} //if - cancel
out.write(buf, 0, len);
} //while - read and write file
in.close();
out.flush();
out.close();
} catch (MalformedURLException mURLe) {
System.out.println("Error - possibly missing URL for: " + cards[card].name);
}
} catch (FileNotFoundException fnfe) {
System.out.println("Error - the LQ picture for " + cards[card].name + " could not be found on the server.");
} catch (Exception ex) {
System.out.println("General error - downloading LQ picture for " + cards[card].name);
Log.error("LQ Pictures", "Error downloading pictures", ex);
}
try {
Thread.sleep(r.nextInt(750) + 420);
} catch (InterruptedException e) {
Log.error("LQ Set Pictures", "Sleep Error", e);
}
} //for
}
close.setText(ForgeProps.getLocalized(BUTTONS.CLOSE));
} //run
/**
* <p>startDownload.</p>
*
* @param frame a {@link javax.swing.JFrame} object.
*/
public static void startDownload(final JFrame frame) {
final mCard[] card = getNeededCards();
if (card.length == 0) {
JOptionPane.showMessageDialog(frame, ForgeProps.getLocalized(NO_MORE));
return;
}
Gui_DownloadPictures_LQ download = new Gui_DownloadPictures_LQ(card);
JDialog dlg = download.getDlg(frame);
dlg.setVisible(true);
dlg.dispose();
download.setCancel(true);
} //startDownload()
/**
* <p>getNeededCards.</p>
*
* @return an array of {@link forge.Gui_DownloadPictures_LQ.mCard} objects.
* @return an array of {@link forge.GuiDownloader.DownloadObject} objects.
*/
private static mCard[] getNeededCards() {
protected final DownloadObject[] getNeededImages() {
//read token names and urls
mCard[] cardTokenLQ = readFile(TOKEN_IMAGES);
ArrayList<mCard> cList = new ArrayList<mCard>();
DownloadObject[] cardTokenLQ = readFileWithNames(TOKEN_IMAGES, ForgeProps.getFile(IMAGE_TOKEN));
ArrayList<DownloadObject> cList = new ArrayList<DownloadObject>();
String base = ForgeProps.getFile(IMAGE_BASE).getPath();
for (Card c : AllZone.getCardFactory()) {
String url = c.getSVar("Picture");
String[] URLs = url.split("\\\\");
String iName = GuiDisplayUtil.cleanString(c.getImageName());
cList.add(new mCard(iName + ".jpg", URLs[0]));
//Log.error(iName + ".jpg" + "\t" + URLs[0]);
cList.add(new DownloadObject(iName + ".jpg", URLs[0], base));
if (URLs.length > 1) {
for (int j = 1; j < URLs.length; j++) {
cList.add(new mCard(iName + j + ".jpg", URLs[j]));
cList.add(new DownloadObject(iName + j + ".jpg", URLs[j], base));
}
}
}
ArrayList<mCard> list = new ArrayList<mCard>();
ArrayList<DownloadObject> list = new ArrayList<DownloadObject>();
File file;
File base = ForgeProps.getFile(IMAGE_BASE);
mCard[] a = {new mCard("", "")};
mCard[] cardPlay = cList.toArray(a);
DownloadObject[] a = {new DownloadObject("", "", "")};
DownloadObject[] cardPlay = cList.toArray(a);
//check to see which cards we already have
for (int i = 0; i < cardPlay.length; i++) {
file = new File(base, cardPlay[i].name);
@@ -335,75 +66,21 @@ public class Gui_DownloadPictures_LQ extends DefaultBoundedRangeModel implements
list.add(cardPlay[i]);
}
}
base = ForgeProps.getFile(IMAGE_TOKEN);
//add missing tokens to the list of things to download
File filebase = ForgeProps.getFile(IMAGE_TOKEN);
for (int i = 0; i < cardTokenLQ.length; i++) {
file = new File(base, cardTokenLQ[i].name.substring(3, cardTokenLQ[i].name.length()));
if (!file.exists()) list.add(cardTokenLQ[i]);
file = new File(filebase, cardTokenLQ[i].name);
if (!file.exists()) {
list.add(cardTokenLQ[i]);
}
}
//return all card names and urls that are needed
mCard[] out = new mCard[list.size()];
DownloadObject[] out = new DownloadObject[list.size()];
list.toArray(out);
return out;
} //getNeededCards()
/**
* <p>readFile.</p>
*
* @param ABC a {@link java.lang.String} object.
* @return an array of {@link forge.Gui_DownloadPictures_LQ.mCard} objects.
*/
private static mCard[] readFile(String ABC) {
try {
FileReader zrc = new FileReader(ForgeProps.getFile(ABC));
BufferedReader in = new BufferedReader(zrc);
String line;
ArrayList<mCard> list = new ArrayList<mCard>();
StringTokenizer tok;
line = in.readLine();
while (line != null && (!line.equals("")) && !line.startsWith("#")) {
tok = new StringTokenizer(line);
list.add(new mCard(tok.nextToken(), tok.nextToken()));
line = in.readLine();
}
mCard[] out = new mCard[list.size()];
list.toArray(out);
return out;
} catch (Exception ex) {
ErrorViewer.showError(ex, "Gui_DownloadPictures: readFile() error");
throw new RuntimeException("Gui_DownloadPictures : readFile() error");
}
}//readFile()
private class ProxyHandler implements ChangeListener {
private int type;
public ProxyHandler(final int typeIn) {
this.type = typeIn;
}
public void stateChanged(final ChangeEvent e) {
if (((AbstractButton) e.getSource()).isSelected()) {
Gui_DownloadPictures_LQ.this.type = type;
addr.setEnabled(type != 0);
port.setEnabled(type != 0);
}
}
}
private static class mCard {
public final String name;
public final String url;
mCard(final String cardName, final String cardURL) {
name = cardName;
url = cardURL;
}
} //mCard
} //getNeededImages()
}

View File

@@ -1,36 +1,17 @@
package forge;
import com.esotericsoftware.minlog.Log;
import forge.card.CardSet;
import forge.error.ErrorViewer;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.apache.commons.lang3.StringUtils;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.ConnectException;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.io.File;
import java.util.ArrayList;
import java.util.Random;
import java.util.StringTokenizer;
import static java.lang.Integer.parseInt;
import static javax.swing.JOptionPane.DEFAULT_OPTION;
import static javax.swing.JOptionPane.PLAIN_MESSAGE;
import javax.swing.JFrame;
/**
@@ -39,355 +20,31 @@ import static javax.swing.JOptionPane.PLAIN_MESSAGE;
* @author Forge
* @version $Id$
*/
public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel implements Runnable, NewConstants, NewConstants.LANG.Gui_DownloadPictures {
public class Gui_DownloadSetPictures_LQ extends GuiDownloader {
/** Constant <code>serialVersionUID=-7890794857949935256L</code> */
private static final long serialVersionUID = -7890794857949935256L;
/** Constant <code>types</code> */
public static final Proxy.Type[] types = Proxy.Type.values();
//proxy
private int type;
private JTextField addr, port;
//progress
private mCard[] cards;
private int card;
private boolean cancel;
private JProgressBar bar;
private JOptionPane dlg;
private JButton close;
private long times[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
private int tptr = 0;
private long lTime = System.currentTimeMillis();
/**
* <p>getAverageTimePerCard.</p>
*
* @return a int.
*/
private int getAverageTimePerCard() {
int aTime = 0;
int nz = 10;
if (tptr > 9)
tptr = 0;
times[tptr] = System.currentTimeMillis() - lTime;
lTime = System.currentTimeMillis();
int tTime = 0;
for (int i = 0; i < 10; i++) {
tTime += times[i];
if (times[i] == 0)
nz--;
}
aTime = tTime / nz;
tptr++;
return aTime;
}
/**
* <p>Constructor for Gui_DownloadSetPictures_LQ.</p>
*
* @param c an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects.
*/
private Gui_DownloadSetPictures_LQ(mCard[] c) {
this.cards = c;
addr = new JTextField(ForgeProps.getLocalized(PROXY_ADDRESS));
port = new JTextField(ForgeProps.getLocalized(PROXY_PORT));
bar = new JProgressBar(this);
JPanel p0 = new JPanel();
p0.setLayout(new BoxLayout(p0, BoxLayout.Y_AXIS));
//Proxy Choice
ButtonGroup bg = new ButtonGroup();
String[] labels = {
ForgeProps.getLocalized(NO_PROXY), ForgeProps.getLocalized(HTTP_PROXY),
ForgeProps.getLocalized(SOCKS_PROXY)};
for (int i = 0; i < types.length; i++) {
JRadioButton rb = new JRadioButton(labels[i]);
rb.addChangeListener(new ProxyHandler(i));
bg.add(rb);
p0.add(rb);
if (i == 0) rb.setSelected(true);
}
//Proxy config
p0.add(addr);
p0.add(port);
//Start
final JButton b = new JButton(ForgeProps.getLocalized(BUTTONS.START));
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Thread(Gui_DownloadSetPictures_LQ.this).start();
b.setEnabled(false);
}
});
p0.add(Box.createVerticalStrut(5));
//Progress
p0.add(bar);
bar.setStringPainted(true);
bar.setString(card + "/" + cards.length);
Dimension d = bar.getPreferredSize();
d.width = 300;
bar.setPreferredSize(d);
//JOptionPane
Object[] options = {b, close = new JButton(ForgeProps.getLocalized(BUTTONS.CANCEL))};
dlg = new JOptionPane(p0, DEFAULT_OPTION, PLAIN_MESSAGE, null, options, options[1]);
}
/** {@inheritDoc} */
@Override
public int getMinimum() {
return 0;
}
/** {@inheritDoc} */
@Override
public int getValue() {
return card;
}
/** {@inheritDoc} */
@Override
public int getExtent() {
return 0;
}
/** {@inheritDoc} */
@Override
public int getMaximum() {
return cards == null ? 0 : cards.length;
}
/**
* <p>update.</p>
*
* @param card a int.
*/
private void update(int card) {
this.card = card;
final class Worker implements Runnable {
private int card;
Worker(int card) {
this.card = card;
}
public void run() {
fireStateChanged();
StringBuilder sb = new StringBuilder();
int a = getAverageTimePerCard();
if (card != cards.length) {
sb.append(card + "/" + cards.length + " - ");
long t2Go = (cards.length - card) * a;
boolean secOnly = true;
if (t2Go > 3600000) {
sb.append(String.format("%02d:", t2Go / 3600000));
t2Go = t2Go % 3600000;
secOnly = false;
}
if (t2Go > 60000) {
sb.append(String.format("%02d:", t2Go / 60000));
t2Go = t2Go % 60000;
secOnly = false;
}
if (!secOnly)
sb.append(String.format("%02d remaining.", t2Go / 1000));
else
sb.append(String.format("0:%02d remaining.", t2Go / 1000));
} else
sb.append(String.format(ForgeProps.getLocalized(BAR_CLOSE), card, cards.length));
bar.setString(sb.toString());
System.out.println(card + "/" + cards.length + " - " + a);
}
}
;
EventQueue.invokeLater(new Worker(card));
}
/**
* <p>Getter for the field <code>dlg</code>.</p>
*
* @param frame a {@link javax.swing.JFrame} object.
* @return a {@link javax.swing.JDialog} object.
*/
public JDialog getDlg(JFrame frame) {
final JDialog dlg = this.dlg.createDialog(frame, ForgeProps.getLocalized(TITLE));
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dlg.setVisible(false);
}
});
return dlg;
}
/**
* <p>Setter for the field <code>cancel</code>.</p>
*
* @param cancel a boolean.
*/
public void setCancel(boolean cancel) {
this.cancel = cancel;
}
/**
* <p>run.</p>
*/
public void run() {
BufferedInputStream in;
BufferedOutputStream out;
File base = ForgeProps.getFile(IMAGE_BASE);
File tokenBase = ForgeProps.getFile(IMAGE_TOKEN);
if (!tokenBase.exists()) {
tokenBase.mkdirs();
}
Random r = MyRandom.random;
Proxy p = null;
if (type == 0) p = Proxy.NO_PROXY;
else try {
p = new Proxy(types[type], new InetSocketAddress(addr.getText(), parseInt(port.getText())));
} catch (Exception ex) {
ErrorViewer.showError(ex, ForgeProps.getLocalized(ERRORS.PROXY_CONNECT), addr.getText(),
port.getText());
return;
}
if (p != null) {
byte[] buf = new byte[1024];
int len;
System.out.println("basedir: " + base);
for (update(0); card < cards.length && !cancel; update(card + 1)) {
try {
String url = cards[card].url;
String cName;
if (cards[card].name.substring(0, 3).equals("[T]")) {
base = ForgeProps.getFile(IMAGE_TOKEN);
cName = cards[card].name.substring(3, cards[card].name.length());
} else {
base = ForgeProps.getFile(IMAGE_BASE);
cName = cards[card].name;
}
if (Constant.Runtime.DevMode[0])
System.out.println(cName + " - " + url);
File f = new File(base, cName);
//test for folder existence
File test = new File(base, cards[card].folder);
if (!test.exists()) {
// create folder
if (!test.mkdir())
System.out.println("Can't create folder" + cards[card].folder);
}
try {
in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream());
out = new BufferedOutputStream(new FileOutputStream(f));
while ((len = in.read(buf)) != -1) {
//user cancelled
if (cancel) {
in.close();
out.flush();
out.close();
//delete what was written so far
f.delete();
return;
}//if - cancel
out.write(buf, 0, len);
}//while - read and write file
in.close();
out.flush();
out.close();
}
catch (ConnectException ce) {
System.out.println("Connection refused for url: " + url);
}
catch (MalformedURLException mURLe) {
System.out.println("Error - possibly missing URL for: " + cards[card].name);
}
} catch (FileNotFoundException fnfe) {
System.out.println("Error - the LQ picture for " + cards[card].name + " could not be found on the server. [" + cards[card].url + "] - " + fnfe.getMessage());
} catch (Exception ex) {
Log.error("LQ Pictures", "Error downloading pictures", ex);
}
// pause
try {
Thread.sleep(r.nextInt(750) + 420);
} catch (InterruptedException e) {
Log.error("LQ Set Pictures", "Sleep Error", e);
}
}//for
}
close.setText(ForgeProps.getLocalized(BUTTONS.CLOSE));
}//run
/**
* <p>startDownload.</p>
*
* @param frame a {@link javax.swing.JFrame} object.
*/
public static void startDownload(JFrame frame) {
final mCard[] card = getNeededCards();
if (card.length == 0) {
JOptionPane.showMessageDialog(frame, ForgeProps.getLocalized(NO_MORE));
return;
}
Gui_DownloadSetPictures_LQ download = new Gui_DownloadSetPictures_LQ(card);
JDialog dlg = download.getDlg(frame);
dlg.setVisible(true);
dlg.dispose();
download.setCancel(true);
}//startDownload()
public Gui_DownloadSetPictures_LQ(JFrame frame) {
super(frame);
}
/**
* <p>getNeededCards.</p>
*
* @return an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects.
* @return an array of {@link forge.GuiDownloader.DownloadObject} objects.
*/
private static mCard[] getNeededCards() {
protected final DownloadObject[] getNeededImages() {
//read token names and urls
mCard[] cardTokenLQ = readFile(TOKEN_IMAGES);
DownloadObject[] cardTokenLQ = readFileWithNames(TOKEN_IMAGES, ForgeProps.getFile(IMAGE_TOKEN));
ArrayList<DownloadObject> cList = new ArrayList<DownloadObject>();
ArrayList<mCard> cList = new ArrayList<mCard>();
//File imgBase = ForgeProps.getFile(NewConstants.IMAGE_BASE);
File base = ForgeProps.getFile(IMAGE_BASE);
String URLBase = "http://cardforge.org/fpics/";
for (CardPrinted c : CardDb.instance().getAllCards()) {
String SC3 = c.getSet();
if (StringUtils.isBlank(SC3) || "???".equals(SC3)) continue; // we don't want cards from unknown sets
@@ -401,84 +58,25 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
if (!foundSetImage) {
int artsCnt = c.getCard().getSetInfo(SC3).getCopiesCount();
String fn = CardUtil.buildIdealFilename(c.getName(), c.getArtIndex(), artsCnt);
//System.out.println(fn);
cList.add(new mCard(SC3 + "/" + fn, URLBase + SC2 + "/" + Base64Coder.encodeString(fn, true), SC3));
cList.add(new DownloadObject(fn, URLBase + SC2 + "/" + Base64Coder.encodeString(fn, true), base.getPath() + File.separator + SC3));
}
}
//add missing tokens to the list of things to download
File file;
File base = ForgeProps.getFile(IMAGE_TOKEN);
File filebase = ForgeProps.getFile(IMAGE_TOKEN);
for (int i = 0; i < cardTokenLQ.length; i++) {
file = new File(base, cardTokenLQ[i].name.substring(3, cardTokenLQ[i].name.length()));
if (!file.exists()) cList.add(cardTokenLQ[i]);
file = new File(filebase, cardTokenLQ[i].name);
if (!file.exists()) {
cList.add(cardTokenLQ[i]);
}
}
//return all card names and urls that are needed
mCard[] out = new mCard[cList.size()];
DownloadObject[] out = new DownloadObject[cList.size()];
cList.toArray(out);
for (int i = 0; i < out.length; i++) { System.out.println(out[i].name + " " + out[i].url); }
return out;
}//getNeededCards()
}//getNeededImages()
/**
* <p>readFile.</p>
*
* @param ABC a {@link java.lang.String} object.
* @return an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects.
*/
private static mCard[] readFile(String ABC) {
try {
FileReader zrc = new FileReader(ForgeProps.getFile(ABC));
BufferedReader in = new BufferedReader(zrc);
String line;
ArrayList<mCard> list = new ArrayList<mCard>();
StringTokenizer tok;
line = in.readLine();
while (line != null && (!line.equals("")) && !line.startsWith("#")) {
tok = new StringTokenizer(line);
list.add(new mCard(tok.nextToken(), tok.nextToken(), ""));
line = in.readLine();
}
mCard[] out = new mCard[list.size()];
list.toArray(out);
return out;
} catch (Exception ex) {
ErrorViewer.showError(ex, "Gui_DownloadPictures: readFile() error");
throw new RuntimeException("Gui_DownloadPictures : readFile() error");
}
}//readFile()
private class ProxyHandler implements ChangeListener {
private int type;
public ProxyHandler(int type) {
this.type = type;
}
public void stateChanged(ChangeEvent e) {
if (((AbstractButton) e.getSource()).isSelected()) {
Gui_DownloadSetPictures_LQ.this.type = type;
addr.setEnabled(type != 0);
port.setEnabled(type != 0);
}
}
}
private static class mCard {
final public String name;
final public String url;
final public String folder;
mCard(String cardName, String cardURL, String cardFolder) {
name = cardName;
url = cardURL;
folder = cardFolder;
}
}//mCard
}
} //end class Gui_DownloadSetPictures_LQ

View File

@@ -865,7 +865,7 @@ public class Gui_HomeScreen {
cmdDownloadLQSetPics.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Gui_DownloadSetPictures_LQ.startDownload(null);
new Gui_DownloadSetPictures_LQ(null);
}
});

View File

@@ -1093,7 +1093,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
*
*/
public final void actionPerformed(final ActionEvent e) {
Gui_DownloadPictures_LQ.startDownload(null);
new Gui_DownloadPictures_LQ(null);
}
}
@@ -1116,7 +1116,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
*
*/
public final void actionPerformed(final ActionEvent e) {
Gui_DownloadSetPictures_LQ.startDownload(null);
new Gui_DownloadSetPictures_LQ(null);
}
}

View File

@@ -15,6 +15,6 @@ public class GuiDownloadPicturesLQTest {
*/
@Test(enabled = false, timeOut = 1000)
public void GuiDownloadPicturesTest1() {
Gui_DownloadPictures_LQ.startDownload(null);
new Gui_DownloadPictures_LQ(null);
}
}

View File

@@ -13,6 +13,6 @@ public class GuiDownloadSetPicturesLQTest {
*/
@Test(enabled = false, timeOut = 1000)
public void GuiDownloadSetPicturesLQTest1() {
Gui_DownloadSetPictures_LQ.startDownload(null);
new Gui_DownloadSetPictures_LQ(null);
}
}