This is the main file for camlib¶
+Some text.
+' + _('Hide Search Matches') + '
') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/build/_static/down-pressed.png b/doc/build/_static/down-pressed.png new file mode 100644 index 00000000..6f7ad782 Binary files /dev/null and b/doc/build/_static/down-pressed.png differ diff --git a/doc/build/_static/down.png b/doc/build/_static/down.png new file mode 100644 index 00000000..3003a887 Binary files /dev/null and b/doc/build/_static/down.png differ diff --git a/doc/build/_static/epub.css b/doc/build/_static/epub.css new file mode 100644 index 00000000..cb2df575 --- /dev/null +++ b/doc/build/_static/epub.css @@ -0,0 +1,310 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: {{ theme_bodyfont }}; + font-size: 100%; + background-color: {{ theme_footerbgcolor }}; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: {{ theme_sidebarbgcolor }}; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: {{ theme_bgcolor }}; + color: {{ theme_textcolor }}; + padding: 0 20px 30px 20px; +} + +{%- if theme_rightsidebar|tobool %} +div.bodywrapper { + margin: 0 230px 0 0; +} +{%- endif %} + +div.footer { + color: {{ theme_footertextcolor }}; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: {{ theme_footertextcolor }}; + text-decoration: underline; +} + +div.related { + background-color: {{ theme_relbarbgcolor }}; + line-height: 30px; + color: {{ theme_relbartextcolor }}; +} + +div.related a { + color: {{ theme_relbarlinkcolor }}; +} + +div.sphinxsidebar { + {%- if theme_stickysidebar|tobool %} + top: 30px; + bottom: 0; + margin: 0; + position: fixed; + overflow: auto; + height: auto; + {%- endif %} + {%- if theme_rightsidebar|tobool %} + float: right; + {%- if theme_stickysidebar|tobool %} + right: 0; + {%- endif %} + {%- endif %} +} + +{%- if theme_stickysidebar|tobool %} +/* this is nice, but it it leads to hidden headings when jumping + to an anchor */ +/* +div.related { + position: fixed; +} + +div.documentwrapper { + margin-top: 30px; +} +*/ +{%- endif %} + +div.sphinxsidebar h3 { + font-family: {{ theme_headfont }}; + color: {{ theme_sidebartextcolor }}; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: {{ theme_sidebartextcolor }}; +} + +div.sphinxsidebar h4 { + font-family: {{ theme_headfont }}; + color: {{ theme_sidebartextcolor }}; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: {{ theme_sidebartextcolor }}; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: {{ theme_sidebartextcolor }}; +} + +div.sphinxsidebar a { + color: {{ theme_sidebarlinkcolor }}; +} + +div.sphinxsidebar input { + border: 1px solid {{ theme_sidebarlinkcolor }}; + font-family: sans-serif; + font-size: 1em; +} + +{% if theme_collapsiblesidebar|tobool %} +/* for collapsible sidebar */ +div#sidebarbutton { + background-color: {{ theme_sidebarbtncolor }}; +} +{% endif %} + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: {{ theme_linkcolor }}; + text-decoration: none; +} + +a:visited { + color: {{ theme_visitedlinkcolor }}; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +{% if theme_externalrefs|tobool %} +a.external { + text-decoration: none; + border-bottom: 1px dashed {{ theme_linkcolor }}; +} + +a.external:hover { + text-decoration: none; + border-bottom: none; +} + +a.external:visited { + text-decoration: none; + border-bottom: 1px dashed {{ theme_visitedlinkcolor }}; +} +{% endif %} + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: {{ theme_headfont }}; + background-color: {{ theme_headbgcolor }}; + font-weight: normal; + color: {{ theme_headtextcolor }}; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: {{ theme_headlinkcolor }}; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: {{ theme_headlinkcolor }}; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: {{ theme_codebgcolor }}; + color: {{ theme_codetextcolor }}; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: {{ theme_bodyfont }}; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} diff --git a/doc/build/_static/file.png b/doc/build/_static/file.png new file mode 100644 index 00000000..d18082e3 Binary files /dev/null and b/doc/build/_static/file.png differ diff --git a/doc/build/_static/font/fontawesome_webfont.eot b/doc/build/_static/font/fontawesome_webfont.eot new file mode 100644 index 00000000..0662cb96 Binary files /dev/null and b/doc/build/_static/font/fontawesome_webfont.eot differ diff --git a/doc/build/_static/font/fontawesome_webfont.svg b/doc/build/_static/font/fontawesome_webfont.svg new file mode 100644 index 00000000..2edb4ec3 --- /dev/null +++ b/doc/build/_static/font/fontawesome_webfont.svg @@ -0,0 +1,399 @@ + + + \ No newline at end of file diff --git a/doc/build/_static/font/fontawesome_webfont.ttf b/doc/build/_static/font/fontawesome_webfont.ttf new file mode 100644 index 00000000..d3659246 Binary files /dev/null and b/doc/build/_static/font/fontawesome_webfont.ttf differ diff --git a/doc/build/_static/font/fontawesome_webfont.woff b/doc/build/_static/font/fontawesome_webfont.woff new file mode 100644 index 00000000..b9bd17e1 Binary files /dev/null and b/doc/build/_static/font/fontawesome_webfont.woff differ diff --git a/doc/build/_static/footerbg.png b/doc/build/_static/footerbg.png new file mode 100644 index 00000000..1fbc873d Binary files /dev/null and b/doc/build/_static/footerbg.png differ diff --git a/doc/build/_static/headerbg.png b/doc/build/_static/headerbg.png new file mode 100644 index 00000000..0596f202 Binary files /dev/null and b/doc/build/_static/headerbg.png differ diff --git a/doc/build/_static/ie6.css b/doc/build/_static/ie6.css new file mode 100644 index 00000000..74baa5d5 --- /dev/null +++ b/doc/build/_static/ie6.css @@ -0,0 +1,7 @@ +* html img, +* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none", +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')", +this.src = "_static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''), +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')", +this.runtimeStyle.backgroundImage = "none")),this.pngSet=true) +);} diff --git a/doc/build/_static/jquery.js b/doc/build/_static/jquery.js new file mode 100644 index 00000000..38837795 --- /dev/null +++ b/doc/build/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;at |
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
+ |
|
+
+ |
|
+
|
+ + |
|
+
|
+
|
+
|
+
|
+ + |
|
+
Contents:
+The main application class. The constructor starts the GUI.
+Clears and re-populates the list of objects in currently +in the project. +@return: None
+Clears self.axes and self.figure. +@return: None
+Opens the file chooser and runs on_success on a separate thread +upon completion of valid file choice.
+Opens the file chooser and runs on_success +upon completion of valid file choice.
+Returns the currently selected CirkuixObj in the application. +@return: Currently selected CirkuixObj in the application. +@rtype: CirkuixObj
+Runs eval() on the on the text entry of name ‘widget_name’ +and returns the results. +@param widget_name: Name of Gtk.Entry +@return: Depends on contents of the entry text.
+Returns the radio_set[key] if the radiobutton +whose name is key is active. +@return: radio_set[key]
+Show text on the status bar. +@return: None
+Creates a new specalized CirkuixObj and attaches it to the application, +this is, updates the GUI accordingly, any other records and plots it.
+Parameters: |
|
+
---|---|
Returns: | None + |
+
Return type: | None + |
+
Hitting ‘Enter’ after changing the name of an item +updates the item dictionary and re-builds the item list.
+Delete the currently selected CirkuixObj. +@param widget: The widget from which this was called. +@return:
+Modifies the content of a Gtk.Entry by running +eval() on its contents and puting it back as a +string. +@param widget: The widget from which this was called. +@return: None
+Callback for button on Excellon form to open up a window for +selecting tools. +@param widget: The widget from which this was called. +@return: None
+Callback for button on geometry form to generate CNC job. +@param widget: The widget from which this was called. +@return: None
+Callback for button active/click on Excellon form to +create a CNC Job for the Excellon file. +@param widget: The widget from which this was called. +@return: None
+Callback for button on Gerber form to create isolation routing geometry. +@param widget: The widget from which this was called. +@return: None
+Callback for button on geometry form. +Subscribes to the “Click on plot” event and continues +after the click. Finds the polygon containing +the clicked point and runs clear_poly() on it, resulting +in a new CirkuixGeometry object.
+Callback for button on Gerber form to create geometry with lines +for cutting off the board. +@param widget: The widget from which this was called. +@return: None
+Callback for button on Gerber form to create a geometry object +with polygons covering the area without copper or negative of the +Gerber. +@param widget: The widget from which this was called. +@return: None
+Callback for selection change in the project list. This changes +the currently selected CirkuixObj. +@param selection: Selection associated to the project tree or list +@type selection: Gtk.TreeSelection +@return: None
+Callback for button on form for all kinds of objects. +Re-plot the current object only. +@param widget: The widget from which this was called. +@return: None
+Re-generates all plots from all objects. +@return: None
+Marks a given object as selected in the list ob objects +in the GUI. This selection will in turn trigger +self.on_tree_selection_changed(). +@param name: Name of the object. +@return: None
+Initial configuration of the component editor. Creates +a page titled “Selection” on the notebook on the left +side of the main window. +@return: None
+Sets up list or Tree where whatever has been loaded or created is +displayed. +@return: None
+Sets up the main plotting area by creating a matplotlib +figure in self.canvas, adding axes and configuring them. +These axes should not be ploted on and are just there to +display the axes ticks and grid. +@return: None
+Zooms the plot by factor around a given +center point. Takes care of re-drawing. +@return: None
+Returns coordinates of rectangular bounds +of geometry: (xmin, ymin, xmax, ymax).
+Creates geometry inside a polygon for a tool to cover +the whole area.
+Converts the units of the object to units by scaling all +the geometry appropriately.
+Parameters: | units (str) – “IN” or “MM” | +
---|---|
Returns: | Scaling factor resulting from unit change. | +
Return type: | float | +
Returns the complement of self.solid_geometry within +the given boundary polygon. If not specified, it defaults to +the rectangular bounding box of self.solid_geometry.
+Creates contours around geometry at a given +offset distance.
+Scales all of the object’s geometry by a given factor. Override +this method. +:param factor: Number by which to scale. +:type factor: float +:return: None +:rtype: None
+Returns (width, height) of rectangular +bounds of geometry.
+ATTRIBUTES
+Key | +Value | +
---|---|
type | +(str) “C”, “R”, or “O” | +
others | +Depend on type | +
Key | +Value | +
---|---|
linestring | +(Shapely.LineString) The actual path. | +
aperture | +(str) The key for an aperture in apertures. | +
Key | +Value | +
---|---|
loc | +(list) [x (float), y (float)] coordinates. | +
aperture | +(str) The key for an aperture in apertures. | +
Key | +Value | +
---|---|
polygon | +(Shapely.Polygon) The polygon defining the region. | +
aperture | +(str) The key for an aperture in apertures. | +
Parse gerber aperture definition into dictionary of apertures. +The following kinds and their attributes are supported:
+Geometry from a Gerber file is made up entirely of polygons. +Every stroke (linear or circular) has an aperture which gives +it thickness. Additionally, aperture strokes have non-zero area, +and regions naturally do as well. +:rtype : None +@return: None
+Number of integer digits in Gerber numbers. Used during parsing.
+Creates geometry for Gerber flashes (aperture on a single point).
+Overwrites the region polygons with fixed +versions if found to be invalid (according to Shapely).
+Number of fraction digits in Gerber numbers. Used during parsing.
+Calls Gerber.parse_lines() with array of lines +read from the given file.
+Main Gerber parser.
+Scales the objects’ geometry on the XY plane by a given factor. +These are:
+Then buffered_paths, flash_geometry and solid_geometry +are re-created with self.create_geometry(). +:param factor: Number by which to scale. +:type factor: float +:rtype : None
+ATTRIBUTES
+Key | +Value | +
---|---|
point | +(Shapely.Point) Where to drill | +
tool | +(str) A key in tools | +
Main Excellon parser.
+Scales geometry on the XY plane in the object by a given factor. +Tool sizes, feedrates an Z-plane dimensions are untouched. +:param factor: Number by which to scale the object. +:type factor: float +:return: None +:rtype: NOne
+Represents work to be done by a CNC machine.
+ATTRIBUTES
+Key | +Value | +
---|---|
geom | +(Shapely.LineString) Tool path (XY plane) | +
kind | +(string) “AB”, A is “T” (travel) or +“C” (cut). B is “F” (fast) or “S” (slow). | +
G-Code parser (from self.gcode). Generates dictionary with +single-segment LineString’s and “kind” indicating cut or travel, +fast or feedrate speed.
+Generates G-code for drilling from Excellon object. +self.gcode becomes a list, each element is a +different job for each tool in the excellon code.
+Creates gcode for this object from an Excellon object +for the specified tools. +@param exobj: Excellon object to process +@type exobj: Excellon +@param tools: Comma separated tool names +@type: tools: str +@return: None
+Generates G-Code from a Geometry object.
+Creates a Matplotlib figure with a plot of the +G-code job.
+Plots the G-code job onto the given axes.
+Creates G-Code for the exterior and all interior paths +of a polygon. +@param polygon: A Shapely.Polygon +@type polygon: Shapely.Polygon
+gtext is a single string with g-code
+Scales all the geometry on the XY plane in the object by the +given factor. Tool sizes, feedrates, or Z-axis dimensions are +not altered. +:param factor: Number by which to scale the object. +:type factor: float +:return: None +:rtype: None
+Base type of objects handled in Cirkuix. These become interactive +in the GUI, can be plotted, and their options can be modified +by the user in their respective forms.
+Sets up the UI/form for this object. +@return: None +@rtype : None
+Re-builds an object from its serialized version. +@param obj_dict: Dictionary representing a CirkuixObj +@type obj_dict: dict +@return None
+Extend this method! Sets up axes if needed and +clears them. Descendants must do the actual plotting.
+Reads form into self.options +@rtype : None
+Returns a representation of the object as a dictionary so +it can be later exported as JSON. Override this method. +@return: Dictionary representing the object +@rtype: dict
+1) Creates axes if they don’t exist. 2) Clears axes. 3) Attaches +them to figure if not part of the figure. 4) Sets transparent +background. 5) Sets 1:1 scale aspect ratio. +@param figure: A Matplotlib.Figure on which to add/configure axes. +@type figure: matplotlib.figure.Figure +@return: None
+Represents Gerber code.
+Represents Excellon code.
+Represents G-Code.
+Geometric object not associated with a specific +format.
+asdf asdf asdf asdf 22
+{%- endblock %} + + + diff --git a/doc/source/_theme/search.html b/doc/source/_theme/search.html new file mode 100644 index 00000000..d8bbe690 --- /dev/null +++ b/doc/source/_theme/search.html @@ -0,0 +1,50 @@ +{# + basic/search.html + ~~~~~~~~~~~~~~~~~ + + Template for the search page. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Search') %} +{% set script_files = script_files + ['_static/searchtools.js'] %} +{% block extrahead %} + + {# this is used when loading the search index using $.ajax fails, + such as on Chrome for documents on localhost #} + + {{ super() }} +{% endblock %} +{% block body %} + + + {% if search_performed %} +{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}
+ {% endif %} + {% endif %} +{{ context|e }}
+asdf asdf asdf asdf 22
+{%- endblock %} + + + diff --git a/doc/source/_theme/sphinx_rtd_theme/search.html b/doc/source/_theme/sphinx_rtd_theme/search.html new file mode 100644 index 00000000..d8bbe690 --- /dev/null +++ b/doc/source/_theme/sphinx_rtd_theme/search.html @@ -0,0 +1,50 @@ +{# + basic/search.html + ~~~~~~~~~~~~~~~~~ + + Template for the search page. + + :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Search') %} +{% set script_files = script_files + ['_static/searchtools.js'] %} +{% block extrahead %} + + {# this is used when loading the search index using $.ajax fails, + such as on Chrome for documents on localhost #} + + {{ super() }} +{% endblock %} +{% block body %} + + + {% if search_performed %} +{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}
+ {% endif %} + {% endif %} +{{ context|e }}
+