edit_gtk.c
来自「CNC 的开放码,EMC2 V2.2.8版」· C语言 代码 · 共 412 行 · 第 1/2 页
C
412 行
void InitAllForToolbar( void ){ int Search = 0; for ( Search=0; Search<NBR_ELE_IN_TOOLBAR; Search++ ) { ToolbarBtnRadio[ Search ] = NULL; ToolbarImage[ Search ] = NULL; ToolbarPixmap[ Search ] = NULL; } NumWidgetEditPointer[ NUM_TOOLBAR_FOR_RUNGS ] = -1; NumWidgetEditPointer[ NUM_TOOLBAR_FOR_SEQ ] = -1;}void CreateOneToolbar( GtkWidget * Box, int NumTable, short int PtrOnToolBarElementsList[][NBR_ELE_TOOLBAR_X_MAX] ){ int CurrentAvail = 0; while( ToolbarBtnRadio[ CurrentAvail ]!=NULL && CurrentAvail<NBR_ELE_IN_TOOLBAR ) CurrentAvail++; if ( CurrentAvail<NBR_ELE_IN_TOOLBAR ) { StrElement ToolBarEle; int ScanToolBarX,ScanToolBarY; GSList * PtrListRadiosBtn = NULL; ScanToolBarX = 0; ScanToolBarY = 0; ToolbarTable[ NumTable ] = gtk_table_new( NBR_ELE_TOOLBAR_X_MAX, NBR_ELE_TOOLBAR_Y_MAX, FALSE/*homogeneous*/ ); gtk_box_pack_start (GTK_BOX(Box), ToolbarTable[ NumTable ], TRUE, TRUE, 0); do { ToolBarEle.Type = PtrOnToolBarElementsList[ScanToolBarY][ScanToolBarX]; ToolBarEle.ConnectedWithTop = 0; if ( ToolBarEle.Type==EDIT_POINTER ) { if ( PtrOnToolBarElementsList!=ToolBarElementsSequential ) NumWidgetEditPointer[ NUM_TOOLBAR_FOR_RUNGS ] = CurrentAvail; else NumWidgetEditPointer[ NUM_TOOLBAR_FOR_SEQ ] = CurrentAvail; } if ( ToolBarEle.Type!=0 ) { GdkGC * gc = drawing_area->style->bg_gc[0]; ToolbarPixmap[ CurrentAvail ] = gdk_pixmap_new( GDK_DRAWABLE(drawing_area->window), PIXELS_SIZE_IN_TOOLBAR, PIXELS_SIZE_IN_TOOLBAR, -1 ); gdk_draw_rectangle (GDK_DRAWABLE(ToolbarPixmap[ CurrentAvail ]), gc, TRUE, 0, 0, PIXELS_SIZE_IN_TOOLBAR, PIXELS_SIZE_IN_TOOLBAR); #ifdef SEQUENTIAL_SUPPORT if ( PtrOnToolBarElementsList==ToolBarElementsSequential ) DrawSeqElementForToolBar(ToolbarPixmap[ CurrentAvail ], 0, 0, PIXELS_SIZE_IN_TOOLBAR, ToolBarEle.Type ); else #endif DrawElement(ToolbarPixmap[ CurrentAvail ], 0, 0, PIXELS_SIZE_IN_TOOLBAR, PIXELS_SIZE_IN_TOOLBAR, ToolBarEle, TRUE); ToolbarImage[ CurrentAvail ] = gtk_image_new_from_pixmap( ToolbarPixmap[ CurrentAvail ], NULL ); ToolbarBtnRadio[ CurrentAvail ] = gtk_radio_button_new( PtrListRadiosBtn ); PtrListRadiosBtn = gtk_radio_button_get_group (GTK_RADIO_BUTTON(ToolbarBtnRadio[ CurrentAvail ])); gtk_button_set_relief (GTK_BUTTON( ToolbarBtnRadio[ CurrentAvail ] ), GTK_RELIEF_NONE); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON(ToolbarBtnRadio[ CurrentAvail ]), FALSE); gtk_container_add( GTK_CONTAINER( ToolbarBtnRadio[ CurrentAvail ] ), ToolbarImage[ CurrentAvail ] ); gtk_widget_show( ToolbarImage[ CurrentAvail ] ); gtk_table_attach( GTK_TABLE( ToolbarTable[ NumTable ] ), ToolbarBtnRadio[ CurrentAvail ], ScanToolBarX, ScanToolBarX+1, ScanToolBarY, ScanToolBarY+1, 0, 0, 0, 0 ); gtk_signal_connect( GTK_OBJECT (ToolbarBtnRadio[ CurrentAvail ]), "clicked", (GtkSignalFunc) ButtonToolbarSignal, GINT_TO_POINTER((int)ToolBarEle.Type) ); switch( ToolBarEle.Type ) { case EDIT_POINTER: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Current Object\n Selector", NULL); break; case EDIT_ERASER: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Eraser", NULL); break; case ELE_RISING_INPUT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Rising Edge\n Input", NULL); break; case ELE_FALLING_INPUT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Falling Edge\n Input", NULL); break; case ELE_INPUT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "N.O. Input", NULL); break; case ELE_INPUT_NOT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "N.C. Input ", NULL); break; case ELE_CONNECTION: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Horizontal\nConection", NULL); break; case EDIT_CNX_WITH_TOP: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], " Vertical\nConection", NULL); break; case EDIT_LONG_CONNECTION: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], " Running\nConnection", NULL); break; case ELE_TIMER: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Timer", NULL); break; case ELE_MONOSTABLE: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Monostable", NULL); break; case ELE_COUNTER: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Counter", NULL); break; case ELE_COMPAR: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Compare\n Variable", NULL); break; case ELE_OUTPUT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "N.O. Output", NULL); break; case ELE_OUTPUT_NOT: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "N.C. Output", NULL); break; case ELE_OUTPUT_SET: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Set Output ", NULL); break; case ELE_OUTPUT_RESET: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Reset Output", NULL); break; case ELE_OUTPUT_JUMP: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Jump Coil", NULL); break; case ELE_OUTPUT_CALL: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], "Call Coil", NULL); break; case ELE_OUTPUT_OPERATE: gtk_tooltips_set_tip (TheTooltips, ToolbarBtnRadio[ CurrentAvail ], " Variable\nAssignment", NULL); break; } gtk_widget_show( ToolbarBtnRadio[ CurrentAvail ] ); CurrentAvail++; }//if ( ToolBarEle.Type!=0 ) ScanToolBarX++; if (ScanToolBarX>=NBR_ELE_TOOLBAR_X_MAX) { ScanToolBarX = 0; ScanToolBarY++; } } while( PtrOnToolBarElementsList[ScanToolBarY][ScanToolBarX]!=-1 ); }}void EditorInitGtk(){ GtkWidget *vbox; EditWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title ( GTK_WINDOW( EditWindow ), "Editor"); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (EditWindow), vbox); gtk_widget_show (vbox); EditorButtonAdd = gtk_button_new_with_label ("Add"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonAdd, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonAdd), "clicked", (GtkSignalFunc) ButtonAddRung, 0); gtk_widget_show (EditorButtonAdd); EditorButtonIns = gtk_button_new_with_label ("Insert"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonIns, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonIns), "clicked", (GtkSignalFunc) ButtonInsertRung, 0); gtk_widget_show (EditorButtonIns); EditorButtonDel = gtk_button_new_with_label ("Delete"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonDel, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonDel), "clicked", (GtkSignalFunc) ButtonDeleteCurrentRung, 0); gtk_widget_show (EditorButtonDel); EditorButtonModify = gtk_button_new_with_label ("Modify"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonModify, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonModify), "clicked", (GtkSignalFunc) ButtonModifyCurrentRung, 0); gtk_widget_show (EditorButtonModify); EditorButtonOk = gtk_button_new_with_label ("Ok"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonOk, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonOk), "clicked", (GtkSignalFunc) ButtonOkCurrentRung, 0); EditorButtonCancel = gtk_button_new_with_label ("Cancel"); gtk_box_pack_start (GTK_BOX (vbox), EditorButtonCancel, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (EditorButtonCancel), "clicked", (GtkSignalFunc) ButtonCancelCurrentRung, 0); InitAllForToolbar( ); TheTooltips = gtk_tooltips_new(); /* Rungs elements toolbar */ CreateOneToolbar( vbox, NUM_TOOLBAR_FOR_RUNGS, ToolBarElementsLadder ); gtk_widget_set_sensitive( ToolbarTable[ NUM_TOOLBAR_FOR_RUNGS ], FALSE ); gtk_widget_show( ToolbarTable[ NUM_TOOLBAR_FOR_RUNGS ] ); /* Sequential elements toolbar */#ifdef SEQUENTIAL_SUPPORT CreateOneToolbar( vbox, NUM_TOOLBAR_FOR_SEQ, ToolBarElementsSequential ); gtk_widget_set_sensitive( ToolbarTable[ NUM_TOOLBAR_FOR_SEQ ], FALSE );#endif gtk_signal_connect( GTK_OBJECT(EditWindow), "delete_event", (GtkSignalFunc)EditorWindowDeleteEvent, 0 ); gtk_window_set_resizable( GTK_WINDOW( EditWindow ), FALSE );//gtk_widget_show (EditWindow); EditDatas.NumElementSelectedInToolBar = -1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?