mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
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:
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user