editproperties_gtk.c
来自「CNC 的开放码,EMC2 V2.2.8版」· C语言 代码 · 共 187 行
C
187 行
/* Classic Ladder Project *//* Copyright (C) 2001-2006 Marc Le Douarain *//* http://www.multimania.com/mavati/classicladder *//* http://www.sourceforge.net/projects/classicladder *//* May 2001 *//* --------------------------------- *//* Editor properties - GTK interface *//* --------------------------------- *//* This library is free software; you can redistribute it and/or *//* modify it under the terms of the GNU Lesser General Public *//* License as published by the Free Software Foundation; either *//* version 2.1 of the License, or (at your option) any later version. *//* This library is distributed in the hope that it will be useful, *//* but WITHOUT ANY WARRANTY; without even the implied warranty of *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *//* Lesser General Public License for more details. *//* You should have received a copy of the GNU Lesser General Public *//* License along with this library; if not, write to the Free Software *//* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <gtk/gtk.h>#include <stdio.h>#include <string.h>#include "classicladder.h"#include "global.h"#include "editproperties_gtk.h"#include "edit.h"GtkWidget *PropertiesWindow;GtkWidget *PropLabelParam[NBR_PARAMS_PER_OBJ],*PropEntryParam[NBR_PARAMS_PER_OBJ];GtkWidget *PropEntryBaseParam[NBR_PARAMS_PER_OBJ];GtkWidget *ButtonApplyProperties;int SavePosX = -1;int SavePosY = -1;void SetProperty(int NumParam,char * LblParam,char * ValParam){ gtk_label_set_text((GtkLabel *)PropLabelParam[NumParam],LblParam); if (strcmp(LblParam,"Base")==0) { gtk_widget_show(PropEntryBaseParam[NumParam]); gtk_widget_hide(PropEntryParam[NumParam]); gtk_entry_set_text((GtkEntry*)((GtkCombo *)PropEntryBaseParam[NumParam])->entry,ValParam); if (NumParam==0) { gtk_widget_grab_focus( PropEntryBaseParam[0] ); } } else { gtk_widget_hide(PropEntryBaseParam[NumParam]); gtk_widget_show(PropEntryParam[NumParam]); gtk_entry_set_text(GTK_ENTRY(PropEntryParam[NumParam]),ValParam); if (NumParam==0) { gtk_widget_grab_focus( PropEntryParam[0] ); } } /* if no first param, means no params at all */ /* so no sense to need to apply ! */ if (NumParam==0) { if (strcmp(LblParam,"---")==0) { gtk_widget_hide(ButtonApplyProperties); } else { gtk_widget_show(ButtonApplyProperties);#ifndef GTK2 // no gtk_window_present() function available with GTK1.2 //not beautiful but it works... gtk_widget_hide(PropertiesWindow); gtk_widget_show(PropertiesWindow);#else gtk_window_present( GTK_WINDOW(PropertiesWindow) );#endif } }}char * GetProperty(int NumParam){ static char ValTxtParameter[61]; gchar * TxtParameter; /* Convert to a number if it is a base */ gtk_label_get(GTK_LABEL(PropLabelParam[NumParam]),&TxtParameter); if (strcmp(TxtParameter,"Base")==0) { strcpy( ValTxtParameter , (char *)gtk_entry_get_text((GtkEntry *)((GtkCombo *)PropEntryBaseParam[NumParam])->entry) ); } else { strncpy( ValTxtParameter , (char *)gtk_entry_get_text((GtkEntry *)PropEntryParam[NumParam]), 60 ); ValTxtParameter[ 60 ] = '\0'; } return ValTxtParameter;}gint PropertiesWindowDeleteEvent( GtkWidget * widget, GdkEvent * event, gpointer data ){ // we do not want that the window be destroyed. return TRUE;}void ShowPropertiesWindow( int Visible ){ if ( Visible ) { gtk_widget_show(PropertiesWindow); if ( SavePosX!=-1 && SavePosY!=-1 ) gtk_window_move( GTK_WINDOW(PropertiesWindow), SavePosX, SavePosY ); } else { gtk_window_get_position( GTK_WINDOW(PropertiesWindow), &SavePosX, &SavePosY ); gtk_widget_hide(PropertiesWindow); }}void PropertiesInitGtk(){ GtkWidget *vbox; GtkWidget *hbox[NBR_PARAMS_PER_OBJ + 1]; int NumParam; GList *BaseItems = NULL; int ScanBase = 0; do { BaseItems = g_list_append(BaseItems,CorresDatasForBase[ScanBase++].ParamSelect); } while(ScanBase<NBR_TIMEBASES); PropertiesWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title ((GtkWindow *)PropertiesWindow, "Properties"); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (PropertiesWindow), vbox); gtk_widget_show (vbox); for (NumParam = 0 ; NumParam<NBR_PARAMS_PER_OBJ ; NumParam++) { hbox[NumParam] = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (vbox), hbox[NumParam]); gtk_widget_show (hbox[NumParam]); PropLabelParam[NumParam] = gtk_label_new("Parameter"); gtk_widget_set_usize((GtkWidget *)PropLabelParam[NumParam],85,0); gtk_box_pack_start (GTK_BOX (hbox[NumParam]), PropLabelParam[NumParam], FALSE, FALSE, 0); gtk_widget_show (PropLabelParam[NumParam]); /* For numbers */ PropEntryParam[NumParam] = gtk_entry_new();// gtk_widget_set_usize((GtkWidget *)PropEntryParam[NumParam],85,0); gtk_box_pack_start (GTK_BOX (hbox[NumParam]), PropEntryParam[NumParam], TRUE, TRUE, 0); gtk_widget_show (PropEntryParam[NumParam]); gtk_signal_connect(GTK_OBJECT (PropEntryParam[NumParam]), "activate", (GtkSignalFunc) SaveElementProperties, NULL); /* For time base */ PropEntryBaseParam[NumParam] = gtk_combo_new(); gtk_combo_set_value_in_list(GTK_COMBO(PropEntryBaseParam[NumParam]), TRUE /*val*/, FALSE /*ok_if_empty*/); gtk_combo_set_popdown_strings(GTK_COMBO(PropEntryBaseParam[NumParam]),BaseItems);// gtk_widget_set_usize((GtkWidget *)PropEntryBaseParam[NumParam],85,0); gtk_box_pack_start (GTK_BOX (hbox[NumParam]), PropEntryBaseParam[NumParam], FALSE, FALSE, 0); } /* for apply button... */ hbox[NumParam] = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (vbox), hbox[NumParam]); gtk_widget_show (hbox[NumParam]); ButtonApplyProperties = gtk_button_new_with_label("Apply"); gtk_box_pack_start (GTK_BOX (hbox[NumParam]), ButtonApplyProperties, TRUE, FALSE, 0); gtk_signal_connect(GTK_OBJECT (ButtonApplyProperties), "clicked", (GtkSignalFunc) SaveElementProperties, 0);// gtk_widget_show (PropertiesWindow); gtk_signal_connect( GTK_OBJECT(PropertiesWindow), "delete_event", (GtkSignalFunc)PropertiesWindowDeleteEvent, 0 );}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?