diff --git a/camlib.py b/camlib.py index 1ec0dd9a..0903abf9 100644 --- a/camlib.py +++ b/camlib.py @@ -124,9 +124,7 @@ class Geometry: def to_dict(self): """ Returns a respresentation of the object as a dictionary. - ``self.solid_geometry`` has been converted using the ``to_dict`` - function. Attributes to include are listed in - ``self.ser_attrs``. + Attributes to include are listed in ``self.ser_attrs``. :return: A dictionary-encoded copy of the object. :rtype: dict @@ -137,7 +135,12 @@ class Geometry: return d def from_dict(self, d): - return + """ + Sets object's attributes from a dictionary. + Attributes to include are listed in ``self.ser_attrs``. + """ + for attr in self.ser_attrs: + setattr(self, attr, d[attr]) class Gerber (Geometry): diff --git a/cirkuix.py b/cirkuix.py index d5722cb4..d16d0322 100644 --- a/cirkuix.py +++ b/cirkuix.py @@ -79,7 +79,7 @@ class CirkuixObj: Reads form into ``self.options``. :return: None - :rtype : None + :rtype: None """ for option in self.options: self.read_form_item(option) @@ -89,7 +89,7 @@ class CirkuixObj: Sets up the UI/form for this object. :return: None - :rtype : None + :rtype: None """ # Where the UI for this object is drawn @@ -232,7 +232,7 @@ class CirkuixGerber(CirkuixObj, Gerber): # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. - self.ser_attrs += ['options'] + self.ser_attrs += ['options', 'kind'] def convert_units(self, units): factor = Gerber.convert_units(self, units) @@ -313,7 +313,7 @@ class CirkuixExcellon(CirkuixObj, Excellon): # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. - self.ser_attrs += ['options'] + self.ser_attrs += ['options', 'kind'] def convert_units(self, units): factor = Excellon.convert_units(self, units) @@ -393,7 +393,7 @@ class CirkuixCNCjob(CirkuixObj, CNCjob): # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. - self.ser_attrs += ['options'] + self.ser_attrs += ['options', 'kind'] def plot(self, figure): CirkuixObj.plot(self, figure) @@ -444,7 +444,7 @@ class CirkuixGeometry(CirkuixObj, Geometry): # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. - self.ser_attrs += ['options'] + self.ser_attrs += ['options', 'kind'] def scale(self, factor): if type(self.solid_geometry) == list: @@ -515,10 +515,10 @@ class App: def __init__(self): """ - Starts the application and the Gtk.main(). + Starts the application. - @return: app - @rtype: App + :return: app + :rtype: App """ # Needed to interact with the GUI from other threads. @@ -555,10 +555,10 @@ class App: self.canvas = None self.setup_plot() - self.setup_project_list() - self.setup_component_editor() + self.setup_project_list() # The "Project" tab + self.setup_component_editor() # The "Selected" tab - ## DATA ## + #### DATA #### self.setup_obj_classes() self.stuff = {} # CirkuixObj's by name self.mouse = None # Mouse coordinates over plot @@ -574,7 +574,10 @@ class App: self.defaults = { "units": "in" } # Application defaults + + ## Current Project ## self.options = {} # Project options + self.project_filename = None self.form_kinds = { "units": "radio" @@ -838,7 +841,14 @@ class App: """ value = self.builder.get_object(widget_name).get_text() - return eval(value) + if value == "": + value = "None" + try: + evald = eval(value) + return evald + except: + self.info("Could not evaluate: " + value) + return None def set_list_selection(self, name): """ @@ -1077,9 +1087,10 @@ class App: def options2form(self): """ Sets the 'Project Options' or 'Application Defaults' form with values from - ``self.options``or ``self.defaults``. - :return : None - :rtype : None + ``self.options`` or ``self.defaults``. + + :return: None + :rtype: None """ # Set the on-change callback to do nothing while we do the changes. @@ -1133,11 +1144,18 @@ class App: def save_project(self, filename): """ Saves the current project to the specified file. + :param filename: Name of the file in which to save. :type filename: str :return: None """ + # Captura the latest changes + try: + self.get_current().read_form() + except: + pass + d = {"objs": [self.stuff[o].to_dict() for o in self.stuff], "options": self.options} @@ -1156,24 +1174,106 @@ class App: f.close() + def open_project(self, filename): + """ + Loads a project from the specified file. + + :param filename: Name of the file from which to load. + :type filename: str + :return: None + """ + + try: + f = open(filename, 'r') + except: + print "WARNING: Failed to open project file:", filename + return + + try: + d = json.load(f, object_hook=dict2obj) + except: + print "WARNING: Failed to parse project file:", filename + f.close() + + # Clear the current project + self.on_file_new(None) + + # Project options + self.options.update(d['options']) + self.project_filename = filename + + # Re create objects + for obj in d['objs']: + def obj_init(obj_inst, app_inst): + obj_inst.from_dict(obj) + self.new_object(obj['kind'], obj['options']['name'], obj_init) + + self.info("Project loaded from: " + filename) ######################################## ## EVENT HANDLERS ## ######################################## + def on_file_openproject(self, param): + """ + Callback for menu item File->Open Project. Opens a file chooser and calls + ``self.open_project()`` after successful selection of a filename. + + :param param: Ignored. + :return: None + """ + def on_success(app_obj, filename): + app_obj.open_project(filename) + + self.file_chooser_action(on_success) + def on_file_saveproject(self, param): - return + """ + Callback for menu item File->Save Project. Saves the project to + ``self.project_filename`` or calls ``self.on_file_saveprojectas()`` + if set to None. The project is saved by calling ``self.save_project()``. + + :param param: Ignored. + :return: None + """ + if self.project_filename is None: + self.on_file_saveprojectas(None) + else: + self.save_project(self.project_filename) + self.info("Project saved to: " + self.project_filename) def on_file_saveprojectas(self, param): + """ + Callback for menu item File->Save Project As... Opens a file + chooser and saves the project to the given file via + ``self.save_project()``. + + :param param: Ignored. + :return: None + """ def on_success(app_obj, filename): assert isinstance(app_obj, App) app_obj.save_project(filename) + self.project_filename = filename app_obj.info("Project saved to: " + filename) self.file_chooser_save_action(on_success) - return def on_file_saveprojectcopy(self, param): - return + """ + Callback for menu item File->Save Project Copy... Opens a file + chooser and saves the project to the given file via + ``self.save_project``. It does not update ``self.project_filename`` so + subsequent save requests are done on the previous known filename. + + :param param: Ignore. + :return: None + """ + def on_success(app_obj, filename): + assert isinstance(app_obj, App) + app_obj.save_project(filename) + app_obj.info("Project copy saved to: " + filename) + + self.file_chooser_save_action(on_success) def on_options_app2project(self, param): """ @@ -1274,7 +1374,7 @@ class App: def on_file_savedefaults(self, param): """ Callback for menu item File->Save Defaults. Saves application default options - (``self.defaults``) to defaults.json. + ``self.defaults`` to defaults.json. :param param: Ignored. :return: None @@ -1779,7 +1879,9 @@ class App: print "You selected", model[treeiter][0] self.selected_item_name = model[treeiter][0] - GLib.idle_add(lambda: self.get_current().build_ui()) + obj_new = self.get_current() + if obj_new is not None: + GLib.idle_add(lambda: obj_new.build_ui()) else: print "Nothing selected" self.selected_item_name = None @@ -1807,7 +1909,11 @@ class App: #self.tree_select.unselect_all() self.build_list() - #print "File->New not implemented yet." + # Clear project filename + self.project_filename = None + + # Re-fresh project options + self.on_options_app2project(None) def on_filequit(self, param): """ diff --git a/cirkuix.ui b/cirkuix.ui index b11a3920..605fa156 100644 --- a/cirkuix.ui +++ b/cirkuix.ui @@ -41,6 +41,11 @@ False gtk-save-as + + True + False + gtk-open + False @@ -2062,14 +2067,13 @@ - - Save defaults + + Open Project ... True False - Saves the application's default options to file. - image4 + image9 False - + @@ -2108,6 +2112,23 @@ + + + True + False + + + + + Save defaults + True + False + Saves the application's default options to file. + image4 + False + + + True diff --git a/defaults.json b/defaults.json index b6811a04..1364be29 100644 --- a/defaults.json +++ b/defaults.json @@ -1 +1 @@ -{"cncjob_multicolored": false, "geometry_paintoverlap": 0.15, "geometry_plot": true, "cncjob_solid": false, "excellon_feedrate": 5.0, "gerber_plot": true, "gerber_mergepolys": true, "excellon_drillz": -0.1, "geometry_feedrate": 5.0, "units": "IN", "excellon_travelz": 0.1, "gerber_multicolored": false, "gerber_solid": false, "excellon_plot": true, "gerber_isotooldia": 0.016, "cncjob_tooldia": 0.16, "geometry_travelz": 0.1, "gerber_cutoutmargin": 0.2, "excellon_solid": false, "geometry_paintmargin": 0.01, "geometry_cutz": -0.002, "geometry_cnctooldia": 0.16, "geometry_painttooldia": 0.0625, "gerber_gaps": "4", "excellon_multicolored": false, "gerber_bboxmargin": 0.0, "cncjob_plot": true, "gerber_cutoutgapsize": 0.15, "gerber_bboxrounded": false, "geometry_multicolored": false, "gerber_noncoppermargin": 0.0, "geometry_solid": false} \ No newline at end of file +{"cncjob_multicolored": false, "geometry_paintoverlap": 0.15, "geometry_plot": true, "cncjob_solid": false, "gerber_isotooldia": 0.016, "gerber_plot": true, "gerber_mergepolys": true, "gerber_cutoutgapsize": 0.15, "geometry_feedrate": 5.0, "units": "IN", "excellon_travelz": 0.1, "gerber_multicolored": false, "gerber_solid": false, "excellon_plot": true, "excellon_feedrate": 5.0, "cncjob_tooldia": 0.016, "geometry_travelz": 0.1, "gerber_cutoutmargin": 0.2, "excellon_solid": false, "geometry_paintmargin": 0.01, "geometry_cutz": -0.002, "gerber_noncoppermargin": 0.0, "gerber_gaps": "4", "excellon_multicolored": false, "geometry_painttooldia": 0.0625, "cncjob_plot": true, "excellon_drillz": -0.1, "gerber_bboxrounded": false, "geometry_multicolored": false, "geometry_cnctooldia": 0.016, "geometry_solid": false, "gerber_bboxmargin": 0.0} \ No newline at end of file diff --git a/doc/build/.doctrees/environment.pickle b/doc/build/.doctrees/environment.pickle index 7ef2d2a0..71d6ddaf 100644 Binary files a/doc/build/.doctrees/environment.pickle and b/doc/build/.doctrees/environment.pickle differ diff --git a/doc/build/.doctrees/index.doctree b/doc/build/.doctrees/index.doctree index 77e7772e..9acf5957 100644 Binary files a/doc/build/.doctrees/index.doctree and b/doc/build/.doctrees/index.doctree differ diff --git a/doc/build/genindex.html b/doc/build/genindex.html index 9adc9189..04802a57 100644 --- a/doc/build/genindex.html +++ b/doc/build/genindex.html @@ -130,6 +130,7 @@ | P | R | S + | T | Z @@ -266,16 +267,20 @@
file_chooser_save_action() (cirkuix.App method)
- -
fix_regions() (cirkuix.Gerber method)
+
+
fraction (cirkuix.Gerber attribute)
+ +
from_dict() (cirkuix.Geometry method) +
+
@@ -411,10 +416,26 @@ +
on_file_openproject() (cirkuix.App method) +
+ +
on_file_savedefaults() (cirkuix.App method)
+
on_file_saveproject() (cirkuix.App method) +
+ + +
on_file_saveprojectas() (cirkuix.App method) +
+ + +
on_file_saveprojectcopy() (cirkuix.App method) +
+ +
on_fileopenexcellon() (cirkuix.App method)
@@ -446,12 +467,12 @@
on_generate_isolation() (cirkuix.App method)
+ +
on_generate_paintarea() (cirkuix.App method)
-
-
on_gerber_generate_cutout() (cirkuix.App method)
@@ -533,6 +554,10 @@ +
open_project() (cirkuix.App method) +
+ +
options2form() (cirkuix.App method)
@@ -613,6 +638,10 @@ + -
+
save_project() (cirkuix.App method) +
+ +
scale() (cirkuix.CNCjob method)
@@ -638,6 +667,12 @@
set_form_item() (cirkuix.App method)
+
+ +
(cirkuix.CirkuixObj method) +
+ +
set_list_selection() (cirkuix.App method)
@@ -646,12 +681,12 @@
set_progress_bar() (cirkuix.App method)
+
setup_axes() (cirkuix.CirkuixObj method)
-
setup_component_editor() (cirkuix.App method)
@@ -675,6 +710,22 @@
+

T

+ + + +
+ +
to_dict() (cirkuix.Geometry method) +
+ +
+ +
to_form() (cirkuix.CirkuixObj method) +
+ +
+

Z

diff --git a/doc/build/index.html b/doc/build/index.html index a554a2b2..626ce560 100644 --- a/doc/build/index.html +++ b/doc/build/index.html @@ -518,10 +518,10 @@ startup state.

-
-on_file_savedefaults(param)
-

Callback for menu item File->Save Defaults. Saves application default options -(self.defaults) to defaults.json.

+
+on_file_openproject(param)
+

Callback for menu item File->Open Project. Opens a file chooser and calls +self.open_project() after successful selection of a filename.

@@ -534,6 +534,78 @@ startup state.

+
+
+on_file_savedefaults(param)
+

Callback for menu item File->Save Defaults. Saves application default options +self.defaults to defaults.json.

+ +++ + + + + + +
Parameters:param – Ignored.
Returns:None
+
+ +
+
+on_file_saveproject(param)
+

Callback for menu item File->Save Project. Saves the project to +self.project_filename or calls self.on_file_saveprojectas() +if set to None. The project is saved by calling self.save_project().

+ +++ + + + + + +
Parameters:param – Ignored.
Returns:None
+
+ +
+
+on_file_saveprojectas(param)
+

Callback for menu item File->Save Project As... Opens a file +chooser and saves the project to the given file via +self.save_project().

+ +++ + + + + + +
Parameters:param – Ignored.
Returns:None
+
+ +
+
+on_file_saveprojectcopy(param)
+

Callback for menu item File->Save Project Copy... Opens a file +chooser and saves the project to the given file via +self.save_project. It does not update self.project_filename so +subsequent save requests are done on the previous known filename.

+ +++ + + + + + +
Parameters:param – Ignore.
Returns:None
+
+
on_fileopenexcellon(param)
@@ -1063,13 +1135,37 @@ toolbar button or the ‘2’ key when the canvas is focused. Calls
+
+
+open_project(filename)
+

Loads a project from the specified file.

+ +++ + + + + + +
Parameters:filename (str) – Name of the file from which to load.
Returns:None
+
+
options2form()

Sets the ‘Project Options’ or ‘Application Defaults’ form with values from -self.options``or ``self.defaults. -:return : None -:rtype : None

+self.options or self.defaults.

+ +++ + + + + + +
Returns:None
Return type:None
@@ -1125,6 +1221,22 @@ saves it to the corresponding dictionary.

+
+
+save_project(filename)
+

Saves the current project to the specified file.

+ +++ + + + + + +
Parameters:filename (str) – Name of the file in which to save.
Returns:None
+
+
set_form_item(name, value)
@@ -1312,6 +1424,13 @@ the geometry appropriately.

+
+
+from_dict(d)
+

Sets object’s attributes from a dictionary. +Attributes to include are listed in self.ser_attrs.

+
+
get_empty_area(boundary=None)
@@ -1345,6 +1464,23 @@ this method. bounds of geometry.

+
+
+to_dict()
+

Returns a respresentation of the object as a dictionary. +Attributes to include are listed in self.ser_attrs.

+ +++ + + + + + +
Returns:A dictionary-encoded copy of the object.
Return type:dict
+
+
@@ -1694,9 +1830,17 @@ by the user in their respective forms.

build_ui()
-

Sets up the UI/form for this object. -@return: None -@rtype : None

+

Sets up the UI/form for this object.

+ +++ + + + + + +
Returns:None
Return type:None
@@ -1718,8 +1862,17 @@ clears them. Descendants must do the actual plotting.

read_form()
-

Reads form into self.options -@rtype : None

+

Reads form into self.options.

+ +++ + + + + + +
Returns:None
Return type:None
@@ -1731,15 +1884,54 @@ it can be later exported as JSON. Override this method. @rtype: dict

+
+
+set_form_item(option)
+

Copies the specified options to the UI form.

+ +++ + + + + + +
Parameters:option (str) – Name of the option (Key in self.options).
Returns:None
+
+
setup_axes(figure)

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

+background. 5) Sets 1:1 scale aspect ratio.

+ +++ + + + + + + + +
Parameters:figure (matplotlib.figure.Figure) – A Matplotlib.Figure on which to add/configure axes.
Returns:None
Return type:None
+
+ +
+
+to_form()
+

Copies options to the UI form.

+ +++ + + + +
Returns:None
diff --git a/doc/build/objects.inv b/doc/build/objects.inv index c1eb0d9b..08979611 100644 Binary files a/doc/build/objects.inv and b/doc/build/objects.inv differ diff --git a/doc/build/searchindex.js b/doc/build/searchindex.js index 5ce68b9d..ba90a90e 100644 --- a/doc/build/searchindex.js +++ b/doc/build/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{represent:0,all:0,code:0,replot:0,focus:0,cirkuixgerb:0,follow:0,on_key_over_plot:0,whose:0,get_ev:0,on_options_upd:0,flash:0,gerber:0,flash_geometri:0,text:[0,1],plot_al:0,set_current_pag:0,digit:0,everi:0,string:0,far:0,mous:0,"5e6cff":0,obround:0,untouch:0,gui:0,list:0,item:0,adjust:0,specal:0,get_radio_valu:0,create_geometri:0,natur:0,dimens:0,zero:0,pass:0,further:0,click:0,append:0,index:0,neg:0,current:0,delet:0,version:0,"new":0,method:0,whatev:0,widget:0,cirkuixobj:0,gener:0,new_object:0,matplotlib:0,adjust_ax:0,path:0,becom:0,modifi:0,valu:0,box:0,convert:0,action:0,chang:0,on_activate_nam:0,on_options_object2app:0,diamet:0,app:0,on_fileopengerb:0,filenam:0,ymin:0,unit:0,plot:0,from:0,describ:0,doubl:0,chooser:0,setup_component_editor:0,call:0,type:0,more:0,on_delet:0,factor:0,on_gerber_generate_cutout:0,parse_fil:0,must:0,none:0,work:0,gtext:0,can:0,drill:0,z_move:0,overrid:0,polygon2gcod:0,give:0,process:0,share:0,stroke:0,minimum:0,xmin:0,serial:0,z_cut:0,alwai:0,surfac:0,fix_region:0,updat:0,b5ab3a:0,resourc:0,after:0,befor:0,plane:0,mai:0,setup_obj_class:0,data:0,onto:0,correspond:0,element:0,inform:0,"switch":0,maintain:0,enter:0,on_replot:0,travel:0,elin:0,comma:0,keyboard:0,on_excellon_tool_choos:0,paramet:0,fit:0,chosen:0,fix:0,gtk:0,set_list_select:0,window:0,on_options_app2object:0,main:[],alter:0,non:0,within:0,"return":0,thei:0,handl:0,rectangl:0,f0e24d:0,build_list:0,choic:0,name:0,separ:0,solid_geometri:0,each:0,found:0,circular:0,button:0,read_form:0,parse_lin:0,on_closewindow:0,continu:0,cirkuixcncjob:0,event:0,out:0,on_tree_selection_chang:0,on_eval_upd:0,generate_from_excellon_by_tool:0,content:0,geom:0,clear_polygon:0,linear:0,insid:0,precaut:0,given:0,base:0,dictionari:0,org:0,care:0,generate_from_geometri:0,thread:0,motion:0,turn:0,notebook:0,geometri:0,treeselect:0,entry_text:0,user:0,origin:0,copper:0,on_zoom_in:0,arrai:0,file_chooser_act:0,restrict:0,done:0,fast:0,thick:0,open:0,size:0,differ:0,start:0,associ:0,interact:0,attach:0,option:0,tool:0,copi:0,specifi:0,get_empty_area:0,generate_from_excellon:0,part:0,pars:0,number:0,kind:0,whenev:0,tree:0,entry_ev:0,project:0,str:0,entri:0,ani:0,do_flash:0,have:0,need:0,callback:0,rout:0,note:0,also:0,on_options_object2project:0,build:0,which:0,event_handl:0,interior:0,on_success:0,singl:0,buffer:0,object:0,pair:0,alpha:0,segment:0,"class":0,don:0,clear:0,later:0,cover:0,on_mouse_move_over_plot:0,axi:0,thicken:0,show:0,on_click_over_plot:0,apertur:0,syntax:0,radio:0,find:0,on_scale_object:0,load_default:0,slow:0,ratio:0,menu:0,configur:0,activ:0,state:0,should:0,dict:0,combo:0,over:0,on_options_combo_chang:0,hit:0,get:0,made:0,bar:0,xmax:0,contain:0,where:0,dpi:0,set:0,startup:0,on_cncjob_exportgcod:0,displai:0,"4650bd":0,see:0,result:0,close:0,contour:0,statu:0,kei:0,boundari:0,figur:0,between:0,progress:0,attribut:0,accord:0,extend:0,complement:0,isol:0,job:0,entir:0,here:0,popul:0,feedrat:0,rtype:0,region:0,setup_project_list:0,instanc:0,whole:0,col:0,obj_dict:0,load:0,cncjob:0,point:0,color:0,height:0,param:0,respect:0,throughout:0,backend:0,quit:0,creat:0,addition:0,been:0,mark:0,compon:0,json:0,trigger:0,toolbar:0,subscrib:0,immedi:0,radio_set:0,gcode:0,search:0,on_file_savedefault:0,coordin:0,on_options_project2object:0,func:0,present:0,inhibit:0,therefor:0,properti:0,rectangular:0,defin:0,"while":0,setup_ax:0,margin:0,howev:[],them:0,exterior:0,on_fileopengcod:0,"__init__":0,gcode_pars:0,transpar:0,same:0,read:0,html:0,descend:0,complet:0,http:0,widget_nam:0,upon:0,pute:0,initi:0,canva:0,typic:[],appropri:0,off:0,center:0,cirkuixexcellon:0,build_ui:0,knd:[],well:0,"_app_":0,without:0,on_file_new:0,thi:[],choos:0,on_generate_paintarea:0,self:0,left:0,distanc:0,identifi:0,just:0,isolation_geometri:0,"true":0,rest:0,shape:0,aspect:0,linestr:0,speed:0,yet:0,cut:0,shortcut:0,add:0,other:0,board:0,save:0,modul:0,pre_pars:0,take:0,applic:0,around:0,format:0,dest:0,grid:0,background:0,press:0,bit:[],on_gerber_generate_noncopp:0,specif:0,zoom:0,integ:0,necessari:0,either:0,exobj:0,on_clear_plot:0,page:0,depend:0,clear_plot:0,on_generate_isol:0,some:1,back:0,percentag:0,on_zoom_fit:0,setup_component_view:[],radiobutton:0,"export":0,plot2:0,on_generate_excellon_cncjob:0,scale:0,definit:0,overlap:0,on_update_plot:0,attac:[],buffer_path:0,cnc:0,onli:0,machin:0,run:0,plote:0,offset:0,about:0,actual:0,file_chooser_save_act:0,options2form:0,on_generate_cncjob:0,side:0,constructor:0,options_update_ignor:0,on_fileopenexcellon:0,setup_plot:0,regist:0,"float":0,bound:0,excellon:0,loc:0,accordingli:0,ymax:0,area:0,transfer:0,support:0,overwrit:0,width:0,clear_poli:0,get_curr:0,editor:0,fraction:0,on_canvas_configur:0,select:0,"function":0,creation:0,form:0,on_zoom_out:0,cirkuixgeometri:0,set_progress_bar:0,line:0,on_entry_eval_activ:0,info:0,on_options_app2project:0,on_generate_gerber_bounding_box:0,"default":0,access:0,maximum:0,tooldia:0,record:0,limit:0,buffered_path:0,convert_unit:0,request:0,dure:0,parser:0,aperture_pars:0,repres:0,"char":[],set_form_item:0,on_row_activ:0,exist:0,file:[],check:0,tick:0,aplic:0,polygon:0,titl:0,when:0,detail:0,invalid:0,field:0,valid:0,gline:0,geometr:0,on_options_project2app:0,read_form_item:0,deseri:0,variabl:0,draw:0,initil:[],eval:0,ignor:0,on_filequit:0},objtypes:{"0":"py:module","1":"py:method","2":"py:class","3":"py:attribute"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},filenames:["index","camlib"],titles:["Welcome to Cirkuix’s documentation!","This is the main file for camlib"],objects:{"":{cirkuix:[0,0,0,"-"]},"cirkuix.Gerber":{digits:[0,3,1,""],parse_lines:[0,1,1,""],scale:[0,1,1,""],aperture_parse:[0,1,1,""],create_geometry:[0,1,1,""],fix_regions:[0,1,1,""],fraction:[0,3,1,""],parse_file:[0,1,1,""],do_flashes:[0,1,1,""]},"cirkuix.CNCjob":{plot:[0,1,1,""],gcode_parse:[0,1,1,""],polygon2gcode:[0,1,1,""],generate_from_excellon_by_tool:[0,1,1,""],pre_parse:[0,1,1,""],generate_from_excellon:[0,1,1,""],scale:[0,1,1,""],generate_from_geometry:[0,1,1,""],plot2:[0,1,1,""]},"cirkuix.App":{on_options_object2app:[0,1,1,""],setup_plot:[0,1,1,""],file_chooser_action:[0,1,1,""],on_canvas_configure:[0,1,1,""],on_zoom_in:[0,1,1,""],on_delete:[0,1,1,""],on_closewindow:[0,1,1,""],get_current:[0,1,1,""],on_row_activated:[0,1,1,""],on_fileopengerber:[0,1,1,""],on_zoom_fit:[0,1,1,""],adjust_axes:[0,1,1,""],clear_plots:[0,1,1,""],set_form_item:[0,1,1,""],on_generate_excellon_cncjob:[0,1,1,""],read_form:[0,1,1,""],on_generate_isolation:[0,1,1,""],on_key_over_plot:[0,1,1,""],on_options_project2app:[0,1,1,""],on_gerber_generate_noncopper:[0,1,1,""],on_scale_object:[0,1,1,""],new_object:[0,1,1,""],on_activate_name:[0,1,1,""],on_options_update:[0,1,1,""],on_update_plot:[0,1,1,""],get_eval:[0,1,1,""],on_options_object2project:[0,1,1,""],setup_component_editor:[0,1,1,""],on_click_over_plot:[0,1,1,""],on_zoom_out:[0,1,1,""],load_defaults:[0,1,1,""],on_options_app2object:[0,1,1,""],read_form_item:[0,1,1,""],on_clear_plots:[0,1,1,""],on_entry_eval_activate:[0,1,1,""],on_options_combo_change:[0,1,1,""],on_generate_paintarea:[0,1,1,""],setup_project_list:[0,1,1,""],on_gerber_generate_cutout:[0,1,1,""],on_options_project2object:[0,1,1,""],on_eval_update:[0,1,1,""],get_radio_value:[0,1,1,""],build_list:[0,1,1,""],set_progress_bar:[0,1,1,""],info:[0,1,1,""],on_options_app2project:[0,1,1,""],plot_all:[0,1,1,""],file_chooser_save_action:[0,1,1,""],options2form:[0,1,1,""],on_generate_cncjob:[0,1,1,""],zoom:[0,1,1,""],on_file_savedefaults:[0,1,1,""],on_mouse_move_over_plot:[0,1,1,""],on_fileopengcode:[0,1,1,""],on_generate_gerber_bounding_box:[0,1,1,""],on_file_new:[0,1,1,""],setup_obj_classes:[0,1,1,""],on_tree_selection_changed:[0,1,1,""],on_replot:[0,1,1,""],on_filequit:[0,1,1,""],on_cncjob_exportgcode:[0,1,1,""],on_excellon_tool_choose:[0,1,1,""],set_list_selection:[0,1,1,""],on_fileopenexcellon:[0,1,1,""]},cirkuix:{CNCjob:[0,2,1,""],CirkuixGeometry:[0,2,1,""],CirkuixExcellon:[0,2,1,""],Geometry:[0,2,1,""],CirkuixGerber:[0,2,1,""],App:[0,2,1,""],Gerber:[0,2,1,""],CirkuixObj:[0,2,1,""],CirkuixCNCjob:[0,2,1,""],Excellon:[0,2,1,""]},"cirkuix.Excellon":{parse_lines:[0,1,1,""],scale:[0,1,1,""]},"cirkuix.Geometry":{convert_units:[0,1,1,""],scale:[0,1,1,""],bounds:[0,1,1,""],get_empty_area:[0,1,1,""],isolation_geometry:[0,1,1,""],clear_polygon:[0,1,1,""],size:[0,1,1,""]},"cirkuix.CirkuixObj":{read_form:[0,1,1,""],plot:[0,1,1,""],deserialize:[0,1,1,""],build_ui:[0,1,1,""],serialize:[0,1,1,""],setup_axes:[0,1,1,""]}},titleterms:{file:1,main:1,welcom:0,indic:0,cirkuix:0,camlib:1,thi:1,tabl:0,document:0}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{represent:0,all:0,code:0,replot:0,focus:0,cirkuixgerb:0,follow:0,on_key_over_plot:0,whose:0,get_ev:0,on_options_upd:0,flash:0,gerber:0,buffer_path:0,on_click_over_plot:0,plot_al:0,set_current_pag:0,digit:0,everi:0,string:0,far:0,mous:0,"5e6cff":0,obround:0,untouch:0,gui:0,list:0,item:0,adjust:0,specal:0,get_radio_valu:0,create_geometri:0,natur:0,dimens:0,zero:0,pass:0,further:0,click:0,append:0,index:0,neg:0,current:0,delet:0,version:0,"new":0,method:0,whatev:0,widget:0,cirkuixobj:0,gener:0,load_default:0,matplotlib:0,adjust_ax:0,path:0,becom:0,modifi:0,toolbar:0,box:0,convert:0,on_file_saveprojectcopi:0,action:0,chang:0,on_activate_nam:0,on_options_object2app:0,diamet:0,via:0,app:0,on_fileopengerb:0,filenam:0,ymin:0,unit:0,plot:0,from:0,describ:0,doubl:0,chooser:0,setup_component_editor:0,call:0,save:0,type:0,more:0,on_delet:0,combo:0,on_gerber_generate_cutout:0,parse_fil:0,known:0,must:0,on_file_openproject:0,none:0,ser_attr:0,work:0,gtext:0,can:0,drill:0,z_move:0,overrid:0,polygon2gcod:0,give:0,process:0,share:0,stroke:0,minimum:0,xmin:0,serial:0,z_cut:0,alwai:0,surfac:0,fix_region:0,circular:0,parse_lin:0,resourc:0,after:0,befor:0,notebook:0,mai:0,setup_obj_class:0,associ:0,entry_text:0,correspond:0,element:0,callback:0,"switch":0,maintain:0,enter:0,on_replot:0,on_file_saveprojecta:0,travel:0,elin:0,comma:0,keyboard:0,on_excellon_tool_choos:0,paramet:0,fit:0,save_project:0,chosen:0,fix:0,gtk:0,set_list_select:0,window:0,on_options_app2object:0,main:[],alter:0,non:0,"float":0,"return":0,thei:0,handl:0,rectangl:0,f0e24d:0,build_list:0,project_filenam:0,choic:0,name:0,separ:0,solid_geometri:0,each:0,found:0,updat:0,button:0,read_form:0,b5ab3a:0,on_closewindow:0,continu:0,cirkuixcncjob:0,event:0,out:0,on_tree_selection_chang:0,on_eval_upd:0,generate_from_excellon_by_tool:0,content:0,geom:0,clear_polygon:0,linear:0,insid:0,loc:0,precaut:0,given:0,base:0,dictionari:0,org:0,care:0,generate_from_geometri:0,thread:0,motion:0,turn:0,plane:0,geometri:0,treeselect:0,onto:0,origin:0,copper:0,on_zoom_in:0,arrai:0,file_chooser_act:0,restrict:0,done:0,overwrit:0,thick:0,open:0,size:0,differ:0,width:0,data:0,interact:0,attach:0,editor:0,option:0,tool:0,copi:0,specifi:0,get_empty_area:0,generate_from_excellon:0,part:0,pars:0,number:0,kind:0,whenev:0,tree:0,entry_ev:0,project:0,str:0,build_ui:0,initi:0,ani:0,do_flash:0,have:0,need:0,inform:0,rout:0,note:0,also:0,on_options_object2project:0,build:0,which:0,event_handl:0,interior:0,on_success:0,singl:0,buffer:0,object:0,pair:0,alpha:0,segment:0,"class":0,don:0,clear:0,later:0,cover:0,on_mouse_move_over_plot:0,axi:0,thicken:0,show:0,text:[0,1],apertur:0,syntax:0,radio:0,find:0,on_scale_object:0,new_object:0,slow:0,ratio:0,menu:0,configur:0,activ:0,state:0,should:0,dict:0,factor:0,over:0,on_options_combo_chang:0,hit:0,get:0,on_entry_eval_activ:0,on_options_app2project:0,bar:0,to_dict:0,xmax:0,contain:0,where:0,dpi:0,set:0,startup:0,on_cncjob_exportgcod:0,maximum:0,"4650bd":0,see:0,result:0,close:0,contour:0,statu:0,extend:0,boundari:0,figur:0,between:0,progress:0,attribut:0,accord:0,kei:0,complement:0,isol:0,job:0,entir:0,here:0,popul:0,feedrat:0,rtype:0,region:0,setup_project_list:0,instanc:0,whole:0,col:0,obj_dict:0,load:0,cncjob:0,point:0,color:0,height:0,shortcut:0,respect:0,throughout:0,backend:0,quit:0,convert_unit:0,addition:0,been:0,mark:0,compon:0,json:0,trigger:0,valu:0,open_project:0,subscrib:0,immedi:0,radio_set:0,gcode:0,search:0,on_file_savedefault:0,coordin:0,on_options_project2object:0,func:0,present:0,inhibit:0,therefor:0,properti:0,rectangular:0,dest:0,defin:0,"while":0,setup_ax:0,margin:0,howev:[],them:0,exterior:0,on_fileopengcod:0,"__init__":0,around:0,format:0,same:0,respresent:0,html:0,descend:0,complet:0,http:0,widget_nam:0,upon:0,user:0,canva:0,typic:[],appropri:0,off:0,center:0,cirkuixexcellon:0,entri:0,knd:[],well:0,"_app_":0,without:0,on_file_new:0,thi:[],choos:0,on_generate_paintarea:0,self:0,left:0,distanc:0,identifi:0,just:0,isolation_geometri:0,rest:0,shape:0,aspect:0,linestr:0,speed:0,yet:0,cut:0,param:0,add:0,valid:0,board:0,subsequ:0,modul:0,pre_pars:0,take:0,applic:0,gcode_pars:0,transpar:0,read:0,on_file_saveproject:0,grid:0,background:0,press:0,bit:[],on_gerber_generate_noncopp:0,specif:0,success:0,zoom:0,integ:0,from_dict:0,necessari:0,either:0,exobj:0,on_clear_plot:0,page:0,depend:0,clear_plot:0,on_generate_isol:0,some:1,back:0,percentag:0,on_zoom_fit:0,setup_component_view:[],radiobutton:0,"export":0,plot2:0,on_generate_excellon_cncjob:0,scale:0,definit:0,overlap:0,on_update_plot:0,attac:[],flash_geometri:0,cnc:0,onli:0,machin:0,previou:0,run:0,plote:0,offset:0,about:0,actual:0,file_chooser_save_act:0,options2form:0,on_generate_cncjob:0,side:0,constructor:0,options_update_ignor:0,on_fileopenexcellon:0,setup_plot:0,regist:0,within:0,encod:0,bound:0,excellon:0,pute:0,accordingli:0,ymax:0,area:0,transfer:0,support:0,fast:0,start:0,clear_poli:0,get_curr:0,includ:0,fraction:0,on_canvas_configur:0,select:0,"function":0,creation:0,form:0,on_zoom_out:0,cirkuixgeometri:0,set_progress_bar:0,line:0,"true":0,info:0,made:0,on_generate_gerber_bounding_box:0,"default":0,access:0,displai:0,tooldia:0,record:0,limit:0,buffered_path:0,creat:0,request:0,dure:0,parser:0,aperture_pars:0,repres:0,"char":[],set_form_item:0,on_row_activ:0,exist:0,file:[],doe:0,check:0,tick:0,aplic:0,polygon:0,titl:0,to_form:0,when:0,detail:0,invalid:0,field:0,other:0,gline:0,ignor:0,on_options_project2app:0,read_form_item:0,deseri:0,variabl:0,draw:0,initil:[],eval:0,geometr:0,on_filequit:0},objtypes:{"0":"py:module","1":"py:method","2":"py:class","3":"py:attribute"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},filenames:["index","camlib"],titles:["Welcome to Cirkuix’s documentation!","This is the main file for camlib"],objects:{"":{cirkuix:[0,0,0,"-"]},"cirkuix.Gerber":{digits:[0,3,1,""],parse_lines:[0,1,1,""],scale:[0,1,1,""],aperture_parse:[0,1,1,""],create_geometry:[0,1,1,""],fix_regions:[0,1,1,""],fraction:[0,3,1,""],parse_file:[0,1,1,""],do_flashes:[0,1,1,""]},"cirkuix.CNCjob":{plot:[0,1,1,""],gcode_parse:[0,1,1,""],polygon2gcode:[0,1,1,""],generate_from_excellon_by_tool:[0,1,1,""],pre_parse:[0,1,1,""],generate_from_excellon:[0,1,1,""],scale:[0,1,1,""],generate_from_geometry:[0,1,1,""],plot2:[0,1,1,""]},"cirkuix.App":{on_options_object2app:[0,1,1,""],setup_plot:[0,1,1,""],file_chooser_action:[0,1,1,""],on_canvas_configure:[0,1,1,""],on_zoom_in:[0,1,1,""],on_delete:[0,1,1,""],on_closewindow:[0,1,1,""],get_current:[0,1,1,""],on_row_activated:[0,1,1,""],on_fileopengerber:[0,1,1,""],on_zoom_fit:[0,1,1,""],on_entry_eval_activate:[0,1,1,""],adjust_axes:[0,1,1,""],clear_plots:[0,1,1,""],set_form_item:[0,1,1,""],on_generate_excellon_cncjob:[0,1,1,""],read_form:[0,1,1,""],on_generate_isolation:[0,1,1,""],on_key_over_plot:[0,1,1,""],on_options_project2app:[0,1,1,""],on_gerber_generate_noncopper:[0,1,1,""],on_scale_object:[0,1,1,""],new_object:[0,1,1,""],on_activate_name:[0,1,1,""],save_project:[0,1,1,""],on_options_update:[0,1,1,""],on_update_plot:[0,1,1,""],get_eval:[0,1,1,""],on_options_object2project:[0,1,1,""],setup_component_editor:[0,1,1,""],on_click_over_plot:[0,1,1,""],open_project:[0,1,1,""],on_zoom_out:[0,1,1,""],load_defaults:[0,1,1,""],on_options_app2object:[0,1,1,""],read_form_item:[0,1,1,""],on_clear_plots:[0,1,1,""],on_tree_selection_changed:[0,1,1,""],on_options_combo_change:[0,1,1,""],on_file_saveproject:[0,1,1,""],setup_project_list:[0,1,1,""],on_gerber_generate_cutout:[0,1,1,""],on_options_project2object:[0,1,1,""],on_eval_update:[0,1,1,""],get_radio_value:[0,1,1,""],build_list:[0,1,1,""],set_progress_bar:[0,1,1,""],on_file_saveprojectas:[0,1,1,""],info:[0,1,1,""],on_file_openproject:[0,1,1,""],on_options_app2project:[0,1,1,""],plot_all:[0,1,1,""],on_file_saveprojectcopy:[0,1,1,""],file_chooser_save_action:[0,1,1,""],options2form:[0,1,1,""],on_generate_cncjob:[0,1,1,""],zoom:[0,1,1,""],on_file_savedefaults:[0,1,1,""],on_mouse_move_over_plot:[0,1,1,""],on_fileopengcode:[0,1,1,""],on_generate_gerber_bounding_box:[0,1,1,""],on_file_new:[0,1,1,""],setup_obj_classes:[0,1,1,""],on_generate_paintarea:[0,1,1,""],on_replot:[0,1,1,""],on_filequit:[0,1,1,""],on_cncjob_exportgcode:[0,1,1,""],on_excellon_tool_choose:[0,1,1,""],set_list_selection:[0,1,1,""],on_fileopenexcellon:[0,1,1,""]},cirkuix:{CNCjob:[0,2,1,""],CirkuixGeometry:[0,2,1,""],CirkuixExcellon:[0,2,1,""],Geometry:[0,2,1,""],CirkuixGerber:[0,2,1,""],App:[0,2,1,""],Gerber:[0,2,1,""],CirkuixObj:[0,2,1,""],CirkuixCNCjob:[0,2,1,""],Excellon:[0,2,1,""]},"cirkuix.Excellon":{parse_lines:[0,1,1,""],scale:[0,1,1,""]},"cirkuix.Geometry":{convert_units:[0,1,1,""],scale:[0,1,1,""],bounds:[0,1,1,""],get_empty_area:[0,1,1,""],isolation_geometry:[0,1,1,""],from_dict:[0,1,1,""],to_dict:[0,1,1,""],clear_polygon:[0,1,1,""],size:[0,1,1,""]},"cirkuix.CirkuixObj":{read_form:[0,1,1,""],plot:[0,1,1,""],to_form:[0,1,1,""],deserialize:[0,1,1,""],build_ui:[0,1,1,""],serialize:[0,1,1,""],setup_axes:[0,1,1,""],set_form_item:[0,1,1,""]}},titleterms:{document:0,welcom:0,thi:1,indic:0,cirkuix:0,camlib:1,file:1,tabl:0,main:1}}) \ No newline at end of file