⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classicladder_gtk.c

📁 Source code for an Numeric Cmputer
💻 C
📖 第 1 页 / 共 3 页
字号:
void save_label_comment_edited(){    strcpy(EditDatas.Rung.Label, gtk_entry_get_text((GtkEntry *) entrylabel));    strcpy(EditDatas.Rung.Comment,	gtk_entry_get_text((GtkEntry *) entrycomment));}void autorize_prevnext_buttons(int Yes){    if (Yes) {	gtk_widget_set_sensitive(VScrollBar, TRUE);	gtk_widget_set_sensitive(entrylabel, FALSE);	gtk_widget_set_sensitive(entrycomment, FALSE);    } else {	gtk_widget_set_sensitive(VScrollBar, FALSE);	gtk_widget_set_sensitive(entrylabel, TRUE);	gtk_widget_set_sensitive(entrycomment, TRUE);    }}void ButtonRunStop_click(){    if (InfosGene->LadderState == STATE_RUN) {	InfosGene->LadderState = STATE_STOP;	gtk_label_set_text(GTK_LABEL(GTK_BIN(ButtonRunStop)->child), "Run");    } else {	InfosGene->LadderState = STATE_RUN;	gtk_label_set_text(GTK_LABEL(GTK_BIN(ButtonRunStop)->child), "Stop");    }}void StoreDirectorySelected(GtkFileSelection * selector,    char cForLoadingProject){    char *TempDir;    TempDir = (char *)	gtk_file_selection_get_filename(GTK_FILE_SELECTION(FileSelector));    if (cForLoadingProject)	VerifyDirectorySelected(LadderDirectory, TempDir);    else	strcpy(LadderDirectory, TempDir);}void LoadNewLadder(){    StoreDirectorySelected(GTK_FILE_SELECTION(FileSelector), TRUE	/* cForLoadingProject 									 */ );    if (InfosGene->LadderState == STATE_RUN)	ButtonRunStop_click();    InfosGene->LadderState = STATE_LOADING;    LoadProjectFiles(LadderDirectory);    UpdateGtkAfterLoading(FALSE /* cCreateTimer */ );    InfosGene->LadderState = STATE_STOP;}void SaveAsLadder(void){    StoreDirectorySelected(GTK_FILE_SELECTION(FileSelector), FALSE	/* cForLoadingProject 									 */ );    SaveProjectFiles(LadderDirectory);}void CreateFileSelection(char *Prompt, int Save){    /* From the example in gtkfileselection help */    /* Create the selector */    FileSelector = gtk_file_selection_new(Prompt);    if (Save)	gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(FileSelector)->		ok_button), "clicked", GTK_SIGNAL_FUNC(SaveAsLadder), NULL);    else	gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(FileSelector)->		ok_button), "clicked", GTK_SIGNAL_FUNC(LoadNewLadder), NULL);    /* Ensure that the dialog box is destroyed when the user clicks a button.      */    gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(FileSelector)->	    ok_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),	(gpointer) FileSelector);    gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(FileSelector)->	    cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),	(gpointer) FileSelector);    /* Display that dialog */    gtk_widget_show(FileSelector);}void ButtonNew_click(){    ShowConfirmationBox("New", "Do you really want to clear all datas ?",	InitAllLadderDatas);}void ButtonLoad_click(){    CreateFileSelection("Please select the project to load", FALSE);}void ButtonSaveAs_click(){    CreateFileSelection("Please select the project to save", TRUE);}void ButtonSave_click(){    if ( LadderDirectory[0] == '\0' ) {	/* no filename yet, treat like SaveAs */	ButtonSaveAs_click();    } else {	SaveProjectFiles(LadderDirectory);    }}void ButtonConfig_click(){    OpenConfigWindowGtk();}void ButtonAbout_click(){    /* From the example in gtkdialog help */    GtkWidget *dialog, *label, *okay_button;    /* Create the widgets */    dialog = gtk_dialog_new();    label =	gtk_label_new("ClassicLadder v" RELEASE_VER_STRING "\n"	RELEASE_DATE_STRING "\n"	"Copyright (C) 2001-2004 Marc Le Douarain\nmarc.le-douarain AT laposte DOT net\n"	"   http://www.sourceforge.net/projects/classicladder   \n"	"http://www.multimania.com/mavati/classicladder\n"	"Released under the terms of the\nGNU Lesser General Public License v2.1");    okay_button = gtk_button_new_with_label("Okay");    /* Ensure that the dialog box is destroyed when the user clicks ok. */    gtk_signal_connect_object(GTK_OBJECT(okay_button), "clicked",	GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog));    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area),	okay_button);    gtk_widget_grab_focus(okay_button);    /* Add the label, and show everything we've added to the dialog. */    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);    gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);    gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);    gtk_widget_show_all(dialog);}void ShowMessageBox(char *title, char *text, char *button){    /* From the example in gtkdialog help */    GtkWidget *dialog, *label, *okay_button;    /* Create the widgets */    dialog = gtk_dialog_new();    label = gtk_label_new(text);    okay_button = gtk_button_new_with_label(button);    /* Ensure that the dialog box is destroyed when the user clicks ok. */    gtk_signal_connect_object(GTK_OBJECT(okay_button), "clicked",	GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog));    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area),	okay_button);    gtk_widget_grab_focus(okay_button);    /* Add the label, and show everything we've added to the dialog. */    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);    gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);    gtk_window_set_title(GTK_WINDOW(dialog), title);    gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);    gtk_widget_show_all(dialog);}void DoFunctionOfConfirmationBox(void *(*function_to_do) (void *)){    gtk_widget_destroy(ConfirmDialog);    (function_to_do) (NULL);}void ShowConfirmationBox(char *title, char *text, void *function_if_yes){    /* From the example in gtkdialog help */    GtkWidget *label, *yes_button, *no_button;    /* Create the widgets */    ConfirmDialog = gtk_dialog_new();    label = gtk_label_new(text);    yes_button = gtk_button_new_with_label("Yes");    no_button = gtk_button_new_with_label("No");    /* Ensure that the dialog box is destroyed when the user clicks ok. */    gtk_signal_connect_object(GTK_OBJECT(no_button), "clicked",	GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(ConfirmDialog));    gtk_signal_connect_object(GTK_OBJECT(yes_button), "clicked",	GTK_SIGNAL_FUNC(DoFunctionOfConfirmationBox), function_if_yes);    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(ConfirmDialog)->action_area),	yes_button);    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(ConfirmDialog)->action_area),	no_button);    gtk_widget_grab_focus(no_button);    /* Add the label, and show everything we've added to the dialog. */    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(ConfirmDialog)->vbox), label);    gtk_window_set_modal(GTK_WINDOW(ConfirmDialog), TRUE);    gtk_window_set_title(GTK_WINDOW(ConfirmDialog), title);    gtk_window_set_position(GTK_WINDOW(ConfirmDialog), GTK_WIN_POS_CENTER);    gtk_widget_show_all(ConfirmDialog);}void DoQuit(void){    gtk_widget_destroy(RungWindow);}void ConfirmQuit(void){    ShowConfirmationBox("Sure?",	"Do you really want to quit ?\n  If not saved, all modifications will be lost  \n",	DoQuit);}gint RungWindowDeleteEvent(GtkWidget * widget, GdkEvent * event,    gpointer data){    ConfirmQuit();    // we do not want that the window be destroyed.    return TRUE;}void RungWindowInitGtk(){    GtkWidget *vbox, *hboxtop, *hboxbottom;    GtkWidget *hboxmiddle;    GtkWidget *ButtonQuit;    GtkWidget *ButtonNew, *ButtonLoad, *ButtonSave, *ButtonSaveAs,	*ButtonConfig, *ButtonAbout;    RungWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);    gtk_window_set_title((GtkWindow *) RungWindow, "Section Display");    vbox = gtk_vbox_new(FALSE, 0);    gtk_container_add(GTK_CONTAINER(RungWindow), vbox);    gtk_widget_show(vbox);    gtk_signal_connect(GTK_OBJECT(RungWindow), "destroy",	GTK_SIGNAL_FUNC(quit_appli), NULL);    hboxtop = gtk_hbox_new(FALSE, 0);    gtk_container_add(GTK_CONTAINER(vbox), hboxtop);    gtk_widget_show(hboxtop);    gtk_box_set_child_packing(GTK_BOX(vbox), hboxtop,	/* expand */ FALSE, /* fill */ FALSE, /* pad */ 0, GTK_PACK_START);    entrylabel = gtk_entry_new();    gtk_widget_set_usize((GtkWidget *) entrylabel, 80, 0);    gtk_entry_set_max_length((GtkEntry *) entrylabel, LGT_LABEL - 1);    gtk_entry_prepend_text((GtkEntry *) entrylabel, "");    gtk_box_pack_start(GTK_BOX(hboxtop), entrylabel, FALSE, FALSE, 0);    gtk_widget_show(entrylabel);    entrycomment = gtk_entry_new();    gtk_entry_set_max_length((GtkEntry *) entrycomment, LGT_COMMENT - 1);    gtk_entry_prepend_text((GtkEntry *) entrycomment, "");    gtk_box_pack_start(GTK_BOX(hboxtop), entrycomment, FALSE, FALSE, 0);    gtk_widget_show(entrycomment);    DurationOfLastScan = gtk_entry_new();    gtk_widget_set_usize((GtkWidget *) DurationOfLastScan, 60, 0);//    gtk_entry_set_max_length((GtkEntry *)DurationOfLastScan,LGT_COMMENT-1);//    gtk_entry_set_max_length((GtkEntry *)DurationOfLastScan,20);    gtk_entry_prepend_text((GtkEntry *) DurationOfLastScan, "");    gtk_box_pack_start(GTK_BOX(hboxtop), DurationOfLastScan, FALSE, FALSE, 0);    gtk_widget_set_sensitive(DurationOfLastScan, FALSE);    gtk_widget_show(DurationOfLastScan);    hboxmiddle = gtk_hbox_new(FALSE, 0);    gtk_container_add(GTK_CONTAINER(vbox), hboxmiddle);    gtk_widget_show(hboxmiddle);    gtk_box_set_child_packing(GTK_BOX(vbox), hboxmiddle,	/* expand */ TRUE, /* fill */ TRUE, /* pad */ 0, GTK_PACK_START);    /* Create the drawing area */    drawing_area = gtk_drawing_area_new();    gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area),	BLOCK_WIDTH_DEF * RUNG_WIDTH + OFFSET_X + 5,	BLOCK_HEIGHT_DEF * RUNG_HEIGHT + OFFSET_Y);    gtk_box_pack_start(GTK_BOX(hboxmiddle), drawing_area, TRUE, TRUE, 0);    gtk_widget_show(drawing_area);    AdjustVScrollBar = (GtkAdjustment *) gtk_adjustment_new(0, 0, 0, 0, 0, 0);    VScrollBar = gtk_vscrollbar_new(AdjustVScrollBar);    gtk_box_pack_start(GTK_BOX(hboxmiddle), VScrollBar, FALSE, FALSE, 0);    gtk_widget_show(VScrollBar);    AdjustHScrollBar = (GtkAdjustment *) gtk_adjustment_new(0, 0, 0, 0, 0, 0);    HScrollBar = gtk_hscrollbar_new(AdjustHScrollBar);    gtk_box_pack_start(GTK_BOX(vbox), HScrollBar, FALSE, FALSE, 0);    gtk_widget_show(HScrollBar);    UpdateVScrollBar();    gtk_signal_connect(GTK_OBJECT(AdjustVScrollBar), "value-changed",	(GtkSignalFunc) VScrollBar_value_changed_event, 0);    gtk_signal_connect(GTK_OBJECT(AdjustHScrollBar), "value-changed",	(GtkSignalFunc) HScrollBar_value_changed_event, 0);    hboxbottom = gtk_hbox_new(FALSE, 0);    gtk_container_add(GTK_CONTAINER(vbox), hboxbottom);    gtk_widget_show(hboxbottom);    gtk_box_set_child_packing(GTK_BOX(vbox), hboxbottom,	/* expand */ FALSE, /* fill */ FALSE, /* pad */ 0, GTK_PACK_START);    if(!readOnly){	ButtonNew = gtk_button_new_with_label("New");	gtk_box_pack_start(GTK_BOX(hboxbottom), ButtonNew, TRUE, TRUE, 0);	gtk_signal_connect(GTK_OBJECT(ButtonNew), "clicked",	    (GtkSignalFunc) ButtonNew_click, 0);	gtk_widget_show(ButtonNew);	ButtonLoad = gtk_button_new_with_label("Load");	gtk_box_pack_start(GTK_BOX(hboxbottom), ButtonLoad, TRUE, TRUE, 0);	gtk_signal_connect(GTK_OBJECT(ButtonLoad), "clicked",	    (GtkSignalFunc) ButtonLoad_click, 0);	gtk_widget_show(ButtonLoad);	ButtonSave = gtk_button_new_with_label("Save");	gtk_box_pack_start(GTK_BOX(hboxbottom), ButtonSave, TRUE, TRUE, 0);	gtk_signal_connect(GTK_OBJECT(ButtonSave), "clicked",	    (GtkSignalFunc) ButtonSave_click, 0);	gtk_widget_show(ButtonSave);	ButtonSaveAs = gtk_button_new_with_label("Save As");	gtk_box_pack_start(GTK_BOX(hboxbottom), ButtonSaveAs, TRUE, TRUE, 0);	gtk_signal_connect(GTK_OBJECT(ButtonSaveAs), "clicked",	    (GtkSignalFunc) ButtonSaveAs_click, 0);	gtk_widget_show(ButtonSaveAs);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -