[gtk/constraint-grid] Add a larger constraints demo



commit ae665b2fe2691101c9567231fdb2580c51878d4f
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jun 26 19:32:47 2019 +0000

    Add a larger constraints demo
    
    Currently, this mainly demonstrates the scalability
    limits of the constraints solver.

 demos/gtk-demo/constraints3.c     |  212 ++++++
 demos/gtk-demo/demo.gresource.xml |    4 +
 demos/gtk-demo/meson.build        |    1 +
 demos/gtk-demo/words              |  150 +++++
 demos/gtk-demo/words-full         | 1316 +++++++++++++++++++++++++++++++++++++
 5 files changed, 1683 insertions(+)
---
diff --git a/demos/gtk-demo/constraints3.c b/demos/gtk-demo/constraints3.c
new file mode 100644
index 0000000000..134a78f938
--- /dev/null
+++ b/demos/gtk-demo/constraints3.c
@@ -0,0 +1,212 @@
+/* Constraints/Words
+ *
+ * GtkConstraintLayout lets you define big grids.
+ */
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+
+G_DECLARE_FINAL_TYPE (WordGrid, word_grid, WORD, GRID, GtkWidget)
+
+struct _WordGrid
+{
+  GtkWidget parent_instance;
+
+  GPtrArray *children;
+};
+
+G_DEFINE_TYPE (WordGrid, word_grid, GTK_TYPE_WIDGET)
+
+static void
+word_grid_destroy (GtkWidget *widget)
+{
+  WordGrid *self = WORD_GRID (widget);
+
+  if (self->children)
+    {
+      g_ptr_array_free (self->children, TRUE);
+      self->children = NULL;
+    }
+
+  GTK_WIDGET_CLASS (word_grid_parent_class)->destroy (widget);
+}
+
+static void
+word_grid_class_init (WordGridClass *klass)
+{
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  widget_class->destroy = word_grid_destroy;
+
+  gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_CONSTRAINT_LAYOUT);
+}
+
+static void
+read_words (WordGrid *self)
+{
+  GBytes *data;
+  const char *words;
+  int left, top;
+  GtkGridConstraint *grid;
+  GtkConstraint *constraint;
+  GtkConstraintLayout *layout;
+  GtkWidget *child;
+  GtkWidget *last_child;
+
+  layout = GTK_CONSTRAINT_LAYOUT (gtk_widget_get_layout_manager (GTK_WIDGET (self)));
+
+  grid = gtk_grid_constraint_new ();
+  g_object_set (grid,
+                "row-homogeneous", TRUE,
+                "column-homogeneous", TRUE,
+                NULL);
+
+  data = g_resources_lookup_data ("/constraints3/words", 0, NULL);
+  words = g_bytes_get_data (data, NULL);
+
+  left = 0;
+  top = 0;
+  while (words && words[0])
+    {
+      char *p = strchr (words, '\n');
+      char *word;
+      int len;
+
+      if (p)
+        {
+          word = strndup (words, p - words);
+          words = p + 1;
+        }
+      else
+        {
+          word = strdup (words);
+          words = NULL;
+        }
+
+      len = strlen (word);
+      child = gtk_button_new_with_label (word);
+      if (left + len > 50)
+        {
+          top++;
+          left = 0;
+        }
+
+      last_child = child;
+      gtk_widget_set_parent (child, GTK_WIDGET (self));
+      gtk_grid_constraint_add (grid, child,
+                               left, left + len,
+                               top, top + 1);
+      left = left + len;
+
+      //g_print ("%d %d %d %d %s\n", left, left + len, top, top + 1, word);
+      if (top == 0)
+        {
+          constraint = gtk_constraint_new (NULL,
+                                      GTK_CONSTRAINT_ATTRIBUTE_TOP,
+                                      GTK_CONSTRAINT_RELATION_EQ,
+                                      child,
+                                      GTK_CONSTRAINT_ATTRIBUTE_TOP,
+                                      1.0,
+                                      0.0,
+                                      GTK_CONSTRAINT_STRENGTH_REQUIRED);
+          gtk_constraint_layout_add_constraint (layout, constraint);
+        }
+      if (left == 0)
+        {
+          constraint = gtk_constraint_new (NULL,
+                                      GTK_CONSTRAINT_ATTRIBUTE_RIGHT,
+                                      GTK_CONSTRAINT_RELATION_EQ,
+                                      last_child,
+                                      GTK_CONSTRAINT_ATTRIBUTE_RIGHT,
+                                      1.0,
+                                      0.0,
+                                      GTK_CONSTRAINT_STRENGTH_REQUIRED);
+          gtk_constraint_layout_add_constraint (layout, constraint);
+          constraint = gtk_constraint_new (NULL,
+                                      GTK_CONSTRAINT_ATTRIBUTE_LEFT,
+                                      GTK_CONSTRAINT_RELATION_EQ,
+                                      child,
+                                      GTK_CONSTRAINT_ATTRIBUTE_LEFT,
+                                      1.0,
+                                      0.0,
+                                      GTK_CONSTRAINT_STRENGTH_REQUIRED);
+          gtk_constraint_layout_add_constraint (layout, constraint);
+        }
+    }
+
+  constraint = gtk_constraint_new (NULL,
+                                  GTK_CONSTRAINT_ATTRIBUTE_BOTTOM,
+                                  GTK_CONSTRAINT_RELATION_EQ,
+                                  child,
+                                  GTK_CONSTRAINT_ATTRIBUTE_BOTTOM,
+                                  1.0,
+                                  0.0,
+                                  GTK_CONSTRAINT_STRENGTH_REQUIRED);
+  gtk_constraint_layout_add_constraint (layout, constraint);
+
+  gtk_constraint_layout_add_grid_constraint (layout, grid);
+
+  g_bytes_unref (data);
+}
+
+static void
+word_grid_init (WordGrid *self)
+{
+  self->children = g_ptr_array_new_with_free_func ((GDestroyNotify)gtk_widget_destroy);
+
+  read_words (self);
+}
+
+GtkWidget *
+do_constraints3 (GtkWidget *do_widget)
+{
+ static GtkWidget *window;
+
+ if (!window)
+   {
+     GtkWidget *header, *box, *grid, *button;
+     GtkWidget *swin;
+
+     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+     gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
+
+     header = gtk_header_bar_new ();
+     gtk_header_bar_set_title (GTK_HEADER_BAR (header), "Constraints");
+     gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
+     gtk_window_set_titlebar (GTK_WINDOW (window), header);
+     g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed), &window);
+
+     box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+     gtk_container_add (GTK_CONTAINER (window), box);
+
+     swin = gtk_scrolled_window_new (NULL, NULL);
+     gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
+                                     GTK_POLICY_ALWAYS,
+                                     GTK_POLICY_ALWAYS);
+     gtk_widget_set_hexpand (swin, TRUE);
+     gtk_widget_set_vexpand (swin, TRUE);
+     gtk_widget_set_halign (swin, GTK_ALIGN_FILL);
+     gtk_widget_set_valign (swin, GTK_ALIGN_FILL);
+     gtk_container_add (GTK_CONTAINER (box), swin);
+
+     grid = g_object_new (word_grid_get_type (), NULL);
+     gtk_widget_set_hexpand (grid, TRUE);
+     gtk_widget_set_vexpand (grid, TRUE);
+     gtk_container_add (GTK_CONTAINER (swin), grid);
+
+     button = gtk_button_new_with_label ("Close");
+     gtk_container_add (GTK_CONTAINER (box), button);
+     gtk_widget_set_hexpand (grid, TRUE);
+     g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy), window);
+   }
+
+ if (!gtk_widget_get_visible (window))
+   gtk_widget_show (window);
+ else
+   gtk_widget_destroy (window);
+
+ return window;
+}
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index f3d400bba3..14e3a5ce99 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -12,6 +12,9 @@
   <gresource prefix="/builder">
     <file>demo.ui</file>
   </gresource>
+  <gresource prefix="/constraints3">
+    <file>words</file>
+  </gresource>
   <gresource prefix="/css_accordion">
     <file>css_accordion.css</file>
     <file>reset.css</file>
@@ -152,6 +155,7 @@
     <file>combobox.c</file>
     <file>constraints.c</file>
     <file>constraints2.c</file>
+    <file>constraints3.c</file>
     <file>css_accordion.c</file>
     <file>css_basics.c</file>
     <file>css_blendmodes.c</file>
diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build
index 6d4bd03fad..b6f52cb25c 100644
--- a/demos/gtk-demo/meson.build
+++ b/demos/gtk-demo/meson.build
@@ -10,6 +10,7 @@ demos = files([
   'combobox.c',
   'constraints.c',
   'constraints2.c',
+  'constraints3.c',
   'css_accordion.c',
   'css_basics.c',
   'css_blendmodes.c',
diff --git a/demos/gtk-demo/words b/demos/gtk-demo/words
new file mode 100644
index 0000000000..4b30c3ba20
--- /dev/null
+++ b/demos/gtk-demo/words
@@ -0,0 +1,150 @@
+a
+abandon
+abominate
+aboriginal
+about
+absent-minded
+account
+act
+activity
+adventurous
+affghanistan
+after
+afternoon
+afterwards)
+again
+against
+ago
+a-going
+ah
+aint
+air
+all
+alleys
+almost
+aloft
+along
+already
+always
+am
+amazingly
+american
+among
+amount
+an
+and
+angel
+another
+answer
+anxious
+any
+anything
+archangel
+are
+arm
+around
+arrived
+artist
+as
+ash-box
+ashes
+asphaltic
+assure
+astern
+at
+athirst
+atmosphere
+attending
+attract
+avenues
+away
+awe
+a-whaling
+backing
+bag
+bake-houses
+ball
+barbarous
+barques
+bathed
+battery
+battle
+be
+beach
+bear
+beating
+became
+because
+bed
+bedford
+been
+before
+begin
+behind
+being
+believe
+belted
+benches
+besides
+best
+better
+between
+beyond
+bill
+bit
+bitingly
+black
+black-letter
+blackness
+bleak
+blocks
+bloody
+blubbering
+blue
+body
+boisterous
+book
+boots
+both
+bound
+bowsprit
+boy
+boys
+breathes
+breezes
+brief
+bright
+brigs
+bringing
+broad
+broiled
+broiling
+broom
+brother
+brought
+building
+bulk
+bulwarks
+burnt
+business
+but
+but
+buttered
+buy
+by
+cajoling
+call
+called
+came
+can
+candidates
+candle
+cannot
+canoes
+cape
+captain
+caravan
+care
+careless
+carpet-bag
+carries
diff --git a/demos/gtk-demo/words-full b/demos/gtk-demo/words-full
new file mode 100644
index 0000000000..f5e3837dce
--- /dev/null
+++ b/demos/gtk-demo/words-full
@@ -0,0 +1,1316 @@
+a
+abandon
+abominate
+aboriginal
+about
+absent-minded
+account
+act
+activity
+adventurous
+affghanistan
+after
+afternoon
+afterwards)
+again
+against
+ago
+a-going
+ah
+aint
+air
+all
+alleys
+almost
+aloft
+along
+already
+always
+am
+amazingly
+american
+among
+amount
+an
+and
+angel
+another
+answer
+anxious
+any
+anything
+archangel
+are
+arm
+around
+arrived
+artist
+as
+ash-box
+ashes
+asphaltic
+assure
+astern
+at
+athirst
+atmosphere
+attending
+attract
+avenues
+away
+awe
+a-whaling
+backing
+bag
+bake-houses
+ball
+barbarous
+barques
+bathed
+battery
+battle
+be
+beach
+bear
+beating
+became
+because
+bed
+bedford
+been
+before
+begin
+behind
+being
+believe
+belted
+benches
+besides
+best
+better
+between
+beyond
+bill
+bit
+bitingly
+black
+black-letter
+blackness
+bleak
+blocks
+bloody
+blubbering
+blue
+body
+boisterous
+book
+boots
+both
+bound
+bowsprit
+boy
+boys
+breathes
+breezes
+brief
+bright
+brigs
+bringing
+broad
+broiled
+broiling
+broom
+brother
+brought
+building
+bulk
+bulwarks
+burnt
+business
+but
+but
+buttered
+buy
+by
+cajoling
+call
+called
+came
+can
+candidates
+candle
+cannot
+canoes
+cape
+captain
+caravan
+care
+careless
+carpet-bag
+carries
+carted
+carthage
+cataract
+cato
+cattle
+charm
+chase
+chattering
+cheap
+cheapest
+cheerfully
+cheeriest
+cheerless
+cherish
+chief
+china
+chinks
+chips
+choice
+choked
+church
+circulation
+circumambulate
+circumstances
+city
+climes
+clinched
+coals
+coasts
+coat
+cobble-stones
+coenties
+coffee
+coffin
+coffin
+cold
+come
+comedies
+commodore
+common
+commonalty
+compare
+comparing
+compasses
+conceits
+concernment
+conclude
+confess
+congealed
+connected
+connexion
+conscious
+conservatories
+considerable
+considering
+consign
+constant
+content
+contested
+contrary
+cook
+cooled
+copestone
+copy
+coral
+corlears
+corn-cob
+corner
+cottage
+could
+counters
+country
+craft
+crannies
+crazy
+creak
+creaking
+creatures
+crossed
+crowds
+crucifix
+cunningly
+curbstone
+curiosity
+czar
+dale
+damp
+dark
+darkness
+day
+days
+dead
+dear
+death
+december
+deck
+decks
+decoction
+deep
+deeper
+deepest
+degree
+deity
+deliberate
+deliberately
+delusion
+desert
+deserted
+desires
+desks
+destined
+destroyed
+did
+didn't
+difference
+dilapidated
+dim
+disappointed
+discover
+discriminating
+disguises
+dismal
+distant
+distinction
+district
+dive
+dives
+do
+do
+docks
+does
+dogs
+doing
+don't
+don't
+doom
+door
+dotings
+doubtless
+down
+down-town
+drawn
+dreamiest
+dreamy
+dreary
+drinks
+driving
+drizzly
+drop
+drowned
+dubious-looking
+duly
+each
+earnestly
+ears
+earthly
+east
+easy
+eat
+egyptians
+either
+election
+element
+else
+embark
+emigrant
+employs
+enable
+enchanting
+endless
+enjoy
+enough
+entailed
+enter
+entering
+entertainment
+equator
+ere
+especially
+established
+euroclydon
+euroclydon
+even
+ever
+everlasting
+every
+everybody
+everything
+everywhere
+exactly
+exercise
+expensive
+experiment
+extant
+extensive
+extreme
+extremest
+eye
+eyes
+faces
+faintly
+falling
+family
+famous
+fancied
+far
+farces
+fates
+feel
+feelings
+feet
+fervent
+few
+fields
+fiery
+finally
+find
+fine
+finished
+first
+fixed
+flinty
+floated
+flood-gates
+flourish
+flying
+followed
+following
+foot
+for
+forbidden
+forecastle
+forlorn
+formed
+forth
+fountain
+fowl
+fowls
+freewill
+friendly
+from
+frost
+frost
+frosted
+frosty
+frozen
+funeral
+further
+gable-ended
+gabriel
+general
+genteel
+get
+gets
+give
+glare
+glass
+glasses
+glasses
+glazier
+glitters
+gloom
+glory
+go
+gods
+goes
+going
+gomorrah
+gone
+good
+gradually
+grand
+grapnels
+grasp
+grasshopper
+great
+greeks
+green
+grim
+grin
+grow
+grow
+growing
+ha
+ha
+habit
+had
+halting
+hand
+handfuls
+hands
+happen
+hard
+hardicanutes
+harpoon
+harpoons
+has
+hats
+have
+having
+having
+hazy
+he
+he
+he
+head
+healthy
+hear
+hear
+heard
+hearing
+heaven
+helped
+her
+here
+here
+hermit
+high
+hill
+hill-side
+him
+himself
+his
+hob
+hold
+holding
+hollow
+holy
+honor
+honorable
+hooded
+hook
+horn
+horror
+horse
+hour
+hours
+house
+houses
+how
+however
+howling
+huge
+hundred
+hunks
+hypos
+i
+ibis
+ice
+iceberg
+idea
+idolatrous
+if
+ignoring
+ills
+image
+imported
+improvements
+in
+inches
+indian
+indignity
+in-doors
+induced
+inducements
+infallibly
+inferred
+infliction
+influences
+inlanders
+inmates
+inmost
+inn
+inns
+inquire
+instance
+instinct
+insular
+interest
+interior
+interlude
+into
+invest
+invisible
+invitingly
+involuntarily
+is
+ishmael
+island
+isles
+it
+it
+itch
+it's
+its
+itself
+it
+would
+jet
+jolly
+jove
+judging
+judgmatically
+judgment
+judiciously
+jump
+june
+just
+keen
+keep
+kept
+key
+kind
+knee-deep
+knew
+knocking
+knowing
+knows
+laden
+lakes
+land
+land
+landscape
+landsmen
+lanes
+last
+late
+lath
+lay
+lazarus
+lazarus
+lead
+leaders
+leaning
+learning
+leaves
+lee
+left
+legs
+lengthwise
+less
+let
+leviathan
+lie
+lies
+life
+light
+lights
+lights
+like
+limit
+line
+lint
+little
+lives
+lodge
+lodges
+lodgings
+loitering
+long
+look
+look
+looked
+lookest
+looking
+lording
+loud
+love
+low
+lungs
+made
+magic
+magnetic
+magnificent
+make
+maketh
+making
+man
+managers
+manhatto
+manhattoes
+many
+marvellous
+marvels
+mast
+mast-head
+matter
+maxim)
+may
+mazy
+me
+meadow
+mean
+meaning
+meant
+meanwhile
+meditation
+meet
+melted
+men
+merchant
+metaphysical
+methodically
+mid
+middle
+might
+mighty
+mild
+miles
+million
+mind
+mine
+miserable
+misty
+mole
+moluccas
+moment
+monday
+money
+monied
+monopolizing
+monster
+moored
+moral
+more
+mortal
+most
+motives
+mountains
+mouth
+moving
+much
+mummies
+must
+muttered
+my
+myself
+mysterious
+mystical
+nailed
+name
+nameless
+nantucket
+narcissus
+nay
+nearly
+needed
+needles
+needs
+negro
+never
+nevertheless
+new
+niagara
+nigh
+night
+nights
+no
+no
+noble
+nor
+north
+north
+northern
+northward
+not
+nothing
+november
+now
+obey
+observest
+occurred
+ocean
+oceans
+of
+of
+off
+offer
+officer
+offices
+off
+then
+old
+old
+ominous
+on
+once
+one
+one's
+only
+open
+opened
+or
+orchard
+order
+orders
+oriental
+original
+orion
+orphans
+other
+other's
+others
+our
+ourselves
+out
+outside
+over
+overlapping
+overwhelming
+own
+paced
+pacific
+pacing
+packed
+packet
+paid
+pains
+paint
+painting
+palace
+palsied
+parliament
+part
+particles
+particular
+particularly
+partly
+parts
+passage
+passed
+passenger
+passengers
+patagonian
+patched
+path
+paul's
+pausing
+pavement
+pay
+paying
+pea
+pedestrian
+peep
+peer
+penalties
+penny
+pent
+people's
+peppered
+perceive
+perdition
+performances
+performing
+perhaps
+perils
+persians
+peter
+peter
+phantom
+philosophical
+physical
+picked
+picture
+pieces
+pier-heads
+pillow
+pine-tree
+pistol
+pit
+pity
+place
+plaster
+tied
+pleasant
+please
+pleased
+plenty
+plight
+plug
+plumb
+plunged
+pocket
+poet
+point
+police
+pooh
+pooh
+pool
+poor
+porch
+port
+portentous
+possess
+possibly
+poverty-stricken
+prairies
+preacher's
+precisely
+presented
+presently
+presidency
+president
+prevalent
+prevent
+previous
+price
+principle
+privilege
+proceeding
+processions
+professor
+programme
+projections
+promptly
+proved
+providence
+public
+pulpit
+punch
+pure
+purpose
+purse
+pushed
+put
+putting
+pyramids
+pythagorean
+quarrelsome
+quarter
+quarter-deck
+queer
+quick
+quiet
+quietest
+quietly
+quite
+quitting
+rag
+rags
+randolphs
+rather
+rather
+rays
+reaching
+really
+rear
+reason
+reasonest
+recall
+receives
+receiving
+red
+redder
+red-men
+reefs
+commerce
+region
+regulating
+related
+remorseless
+remote
+rensselaers
+repeatedly
+representing
+requires
+respectable
+respectfully
+resulting
+reverentially
+reveries
+reveries
+stand
+rigging
+right
+risk
+river
+rivers
+roasted
+robust
+rockaway
+rolled
+romantic
+root
+round
+roused
+rows
+royal
+rub
+ruins
+run
+sabbath
+saco
+sadly
+said
+sail
+sailed
+sailor
+sailors
+sally
+salt
+salted
+same
+sand
+sashless
+satisfaction
+saturday
+saw
+say
+says
+scales
+schoolmaster
+schooners
+scores
+scrape
+sea
+sea
+sea-captain
+sea-captains
+seas
+sea-sick
+seated
+seaward
+second
+secretly
+see
+seemed
+seemingly
+see
+posted
+seneca
+sense
+sentinels
+separate
+served
+service
+set
+shabby
+shadiest
+shady
+shakes
+shaking
+sharp
+shepherd's
+ship
+ship-board
+ships
+shirt
+shiverings
+shore
+short
+should
+shoulder-blades
+shouldering
+side
+sides
+sighs
+sight
+sights
+sign
+silent
+silken
+silver
+simple
+since
+single
+sitting
+slave
+sleep
+sleeps
+sleepy
+slip
+sloop
+smelt
+smoke
+smoky
+snow
+so
+so
+social
+society
+soles
+solo
+some
+somehow
+something
+soon
+sort
+soul
+sounded
+sounds
+south
+spar
+speak
+spiles
+spleen
+spot
+spouter
+spouter
+spouter-inn
+spray
+springs
+spurs
+stage
+stand
+stand
+miles
+started
+states
+stepping
+steps
+still
+stoics
+stood
+stop
+stopping
+story
+straight
+stranded
+strange
+stream
+street
+streets
+streets
+striving
+strong
+struck
+stuffed
+stumble
+substitute
+such
+suddenly
+suffice
+sumatra
+summer
+supplied
+suppose
+sure
+surely
+surf
+surprising
+surrounds
+surveillance
+suspect
+sway
+swayed
+sweep
+swinging
+sword
+sword-fish
+sword-fish
+swung
+take
+taking
+talk
+tall
+tallest
+tar-pot
+tatters
+tears
+teeth
+teeth-gnashing
+tell
+temperance
+tempestuous
+ten
+tennessee
+tepid
+terms
+testament
+text
+than
+(that
+that
+the
+the
+their
+them
+them
+leagues
+themselves
+then
+thence
+there
+there
+there
+these
+they
+thick
+thieves
+thing
+things
+think
+thinks
+this
+this
+this:
+this
+thither
+those
+thou
+though
+though
+thought
+thousand
+thousands
+throw
+throws
+thrust
+thump
+thus
+tiger-lilies
+what
+till
+time
+tinkling
+to
+to
+toasting
+toils
+told
+tomb
+too
+took
+tophet
+tormented
+tormenting
+tossed
+touches
+towards
+town
+tragedies
+tranced
+transition
+trap
+trap
+travel
+trees
+trials
+tribulations
+trip
+trouble
+true
+trunk
+try
+tucked
+turned
+two
+tyre
+unaccountable
+unbiased
+uncomfortable
+undeliverable
+under
+underneath
+ungraspable
+unite
+united
+universal
+universe
+unless
+unpleasant
+up
+upon
+upper
+urbane
+us
+uses
+vain
+valley
+van
+various
+very
+vibration
+view
+violate
+virtue
+visit
+voice
+voyage
+wade
+wailing
+wanting
+warehouses
+warm
+was
+washed
+watch
+water
+water-gazers
+waterward
+watery
+waves
+way
+we
+wears
+weary
+wedded
+week
+weeping
+weighed
+welcome
+well
+went
+were
+west
+whale
+whalemen
+whales
+whaling
+wharves
+what
+what
+whatsoever
+when
+whenever
+where
+whereas
+wherefore
+wherever
+wherever
+whether
+which
+white
+whitehall
+who
+wholesome
+whose
+why
+wide
+wight
+wild
+will
+wind
+window
+windows
+winds
+wisdom
+wish
+with
+within
+without
+wonderful
+wonder-world
+wooden
+woodlands
+words
+works
+world
+worse
+would
+wrapper
+wretched
+writer
+ye
+yea
+years
+yes
+yet
+yet
+yonder
+you
+young
+your
+yourself
+zephyr


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