+SketcherPointTypeItem::SketcherPointTypeItem(int arc)
+ : BC_MenuItem(_(pt_type[arc]))
+{
+ this->arc = arc;
+}
+int SketcherPointTypeItem::handle_event()
+{
+ SketcherPointType *popup = (SketcherPointType*)get_popup_menu();
+ popup->update(arc);
+ SketcherWindow *gui = popup->gui;
+ SketcherConfig &config = gui->plugin->config;
+ SketcherCurves &curves = config.curves;
+ int ci = gui->plugin->cv_selected;
+ if( ci < 0 || ci >= curves.size() )
+ return 1;
+ SketcherCurve *cv = curves[ci];
+ SketcherPoints &points = cv->points;
+
+ ArrayList<int> selected;
+ for( int v,i=0; (v=gui->point_list->get_selection_number(0, i))>=0; ++i )
+ selected.append(v);
+
+ for( int i=selected.size(); --i>=0; ) {
+ int k = selected[i];
+ if( k < 0 || k >= points.size() ) continue;
+ SketcherPoint *pt = cv->points[k];
+ pt->arc = arc;
+ gui->point_list->set_point(k, PT_TY, _(pt_type[arc]));
+ }
+
+ int pi = gui->plugin->pt_selected;
+ gui->point_list->update_list(pi);
+ gui->send_configure_change();
+ return 1;
+}
+
+SketcherPointType::SketcherPointType(SketcherWindow *gui, int x, int y, int arc)
+ : BC_PopupMenu(x,y,xS(100),_(pt_type[arc]))
+{
+ this->gui = gui;
+ this->type = arc;
+}
+void SketcherPointType::create_objects()
+{
+ for( int arc=0; arc<PT_SZ; ++arc )
+ add_item(new SketcherPointTypeItem(arc));
+}
+void SketcherPointType::update(int arc)
+{
+ set_text(_(pt_type[this->type=arc]));
+}
+
+