Snippets » History » Version 20
Version 19 (Anonymous, 06/26/2010 01:00 PM) → Version 20/46 (Anonymous, 06/26/2010 01:01 PM)
h1. Snippets\015\012\015\012This page shows small snippets that might be useful:\015\012\015\012{{>toc}}\015\012\015\012h2. Alt-Tab\015\012\015\012This cycles through windows of view\015\012\015\012<pre>{{hide}}<code class="ruby">\015\012grab "A-Tab" do |c|\015\012     sel       = 0\015\012     clients = Subtlext::View[:current].clients\015\012\015\012     clients.each_index do |idx|\015\012       if(clients[idx].id == c.id)\015\012         sel = idx + 1 if(idx < clients.size - 1)\015\012       end\015\012     end\015\012\015\012    clients[sel].focus\015\012end\015\012</code></pre>\015\012\015\012h2. Gravity tiling\015\012\015\012Tiles windows vertically that share a gravity.\015\012\015\012<pre>{{hide}}<code class="ruby">\015\012on :tile do\015\012    clients = Subtlext::View.current.clients\015\012    screen    = Subtlext::Screen.current\015\012\015\012    assoc = {}\015\012\015\012    clients.each do |c|\015\012      begin\015\012        assoc[c.gravity.id] << c rescue assoc[c.gravity.id] = [ c ]\015\012      rescue StandardError\015\012        # Startup errors\015\012      end\015\012    end\015\012\015\012    assoc.each do |k, v|\015\012      g        = Subtlext::Gravity[k]\015\012      border = 2 #< Currently Current hardcoded\015\012\015\012      # Calculate gravity\015\012      x, y, w, h = g.geometry_for(screen)\015\012      width        = w / v.size\015\012      pos          = x\015\012\015\012      v.each do |c|\015\012        c.resize     = false\015\012        c.geometry = [ pos, y, width - 2 * border, h - 2 * border ]\015\012        pos += width\015\012      end\015\012    end\015\012end\015\012</code></pre>\015\012\015\012h2. Extend view\015\012\015\012<pre>{{hide}}<code class="ruby">\015\012require "subtle/subtlext"\015\012\015\012STORE ||= {}\015\012\015\012module Subtlext\015\012    class View\015\012      def method_missing(meth, *args)\015\012        STORE[self.name] = { } unless(STORE.has_key?(self.name))\015\012\015\012        if(meth.to_s.end_with?("="))\015\012          meth = meth.to_s.chop.to_sym\015\012\015\012          STORE[self.name][meth] = args[0]\015\012        else\015\012          STORE[self.name][meth]\015\012        end\015\012      end\015\012    end\015\012end\015\012</code></pre>\015\012\015\012Finally make some use of this like following hook:\015\012\015\012<pre>{{hide}}<code class="ruby">\015\012on :view_jump do |v|\015\012    v.visits += 1 rescue v.visits = 1\015\012    puts "View %s, %d visits" % [ v.name, v.visits ]\015\012end\015\012</code></pre>\015\012\015\012