Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2015, 19:53   #1
ozon11
 
Регистрация: 03.12.2014
Сообщений: 7
По умолчанию Графический интерфейс пользователя, Си

Народ, помогите, такая проблема. Программа "Калькулятор", нужно проверить правильность кода, и если потребуется, доработать (не уверен, правильно ли все сделано). Также в среде разработки glade и gtk+ создать виджеты, демонстрирующие интерфейс и работу калькулятора. И сделать 2-3 скриншота при создании этих виджетов (как они создаются). Наработки:
файл main.c:
Код:
#include <stdio.h>
#include <math.h>

#include "callback.h"

#include <gtk/gtk.h>
#include <glade/glade.h>


int
main(int argc, char *argv[])
{
	GladeXML *xml;
	GtkWidget *widget;

	xml = glade_xml_new("miniCalculatorX.glade", NULL, NULL);/* GUI с изображением*/
	//xml = glade_xml_new("miniCalculator.glade", NULL, NULL); /* стандартный GUI */

	/* получение виджета (используется, если нужно что-то изменить) */
	widget = glade_xml_get_widget(xml, "mainWindow");

	/* подключение обработчиков сигналов */
	glade_xml_signal_autoconnect(xml);

	gtk_widget_show (widget);

	gtk_main();

	return 0;
}
файл callbacks.c:
Код:
#include <stdio.h>
#include <math.h>

#include <gtk/gtk.h>
#include <glade/glade.h>



GladeXML *xml;
GtkWidget *textValue;

gdouble display;
gdouble primaryTotal=0;
gdouble mainTotal=0;

gchar *d_string;

int clickedButton=0;// нажатие кнопки, по умолчанию равной "0"
                    /*
                    Значения ‘clickedButton’
                    ————————
                    plusButton_clicked –>1
                    subButton_clicked  –>2
                    mulButton_clicked  –>3
                    divButton_clicked  –>4
                    */
G_MODULE_EXPORT void on_no1Button_clicked(GtkWidget *widget, gpointer *data)
{
    /* Поиск Glade XML, содержащую виджет. */
    xml = glade_get_widget_tree(GTK_WIDGET( widget ));

    /* Перетягивание виджетов */
    textValue= glade_xml_get_widget(xml, “textEntry”);

    gtk_entry_append_text(GTK_ENTRY(textValue),”1?);
}
G_MODULE_EXPORT void on_addButton_clicked(GtkWidget *widget, gpointer *data)
{
    /* Поиск Glade XML, содержащую виджет. */
    xml = glade_get_widget_tree(GTK_WIDGET( widget ));

    /* Перетягивание виджетов */
    textValue= glade_xml_get_widget(xml, “textEntry”);

    /* Получение значений строк из гланого виджета */
    d_string=gtk_entry_get_text(GTK_ENTRY(textValue));

    /* преобразование в двойной */
    display=atof(d_string);

    /* Добавление в начальное значение */
    primaryTotal=primaryTotal+display;

    /* Очистить запись*/
    gtk_entry_set_text(GTK_ENTRY(textValue),””);

    /* Задается нажатие кнопки ‘plusButton_clicked’ */
    clickedButton=1;
}
G_MODULE_EXPORT void on_equalButton_clicked(GtkWidget *widget, gpointer *data)
{
    /* Поиск Glade XML, содержащую виджет */
    xml = glade_get_widget_tree(GTK_WIDGET( widget ));

    /* Перетягивание виджетов */
    textValue= glade_xml_get_widget(xml, “textEntry”);

    /* Считывание значения на входе и копирование его в char* */
    d_string=gtk_entry_get_text(GTK_ENTRY(textValue));

    /* преобразование строки*/
    display=atof(d_string);

    /*Выполнение операции в соответствии с нажатием кнопки*/

        switch(clickedButton)
        {
            case 0 :{
                    break;
                    }

            case 1 :{
                    /* Сложение*/
                    mainTotal=primaryTotal+display;
                    break;
                    }

            case 2 :{
                    /* Вычитание*/
                    mainTotal=primaryTotal-display;
                    break;
                    }

            case 3 :{
                    /* Умножение*/
                    mainTotal=primaryTotal*display;
                    break;
                    }

            case 4 :{
                    /* Деление*/
                    mainTotal=primaryTotal/display;
                    break;
                    }

        }

    /*преобразование строки и вывод значения на входе*/
    gtk_entry_set_text(GTK_ENTRY(textValue),g_strdup_printf(“%f”,mainTotal));

    /* сброс к "0"*/
    primaryTotal=0;

    /* Установление значения clickedButton обратно по умолчанию*/
}
ozon11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графический интерфейс программы kineziz Обсуждение статей 4 20.07.2012 22:43
Графический интерфейс в DOS Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 21.12.2011 17:23
обработка массива+графический интерфейс WRC fan 66 Помощь студентам 3 15.09.2010 08:27
Графический интерфейс aTBepTKa Общие вопросы C/C++ 2 04.02.2009 16:18