Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Анализ подходов и методов решения задачи



ВВЕДЕНИЕ

Celestia — свободная трёхмерная астрономическая программа, созданная на языке программирования C++, для платформ Microsoft Windows, Linux и Mac OS X. Создана Крисом Лорелом и доступна на условиях GNU General Public License (Универсальная Общественная Лицензия). Программа, основываясь на Каталоге Гиппарха, позволяет пользователю рассматривать объекты размерами от искусственных спутников до полных галактик в трёх измерениях, используя технологию OpenGL. В отличие от большинства других виртуальных планетариев, пользователь может свободно путешествовать по Вселенной. НАСА и ЕКА используют Celestia в образовательных программах, а также как интерфейс для программ анализа траекторий.

Проектируемый программный продукт является инструментом для широкой конфигурации Celestia, управления особо важными дополнениями, а также для настройки вспомогательного Lua-интерфейса. Программный продукт будет разработан в виде программы для ОС Windows и его использование значительно облегчит русскоязычным пользователям конфигурацию Celestia, а также обеспечит новые возможности по управлению отображением космических объектов. Разработанная программа будет распространяться в сети Интернет для бесплатного скачивания.

Цель работы: разработка Менеджера конфигурации Celestia, который даст пользователям простой и понятный интерфейс с широкими возможностями для конфигурации Celestia, Lua-инструментов, а также управления отображением космических объектов.

Для достижения поставленной цели были поставлены следующие задачи:

• Изучить синтаксис и назначение конфигурационного файла Celestia, а также конфигурационных файлов Lua-инструментов;

Изучить синтаксис файлов описания космических объектов для Celestia;

• Спроектировать интерфейс будущей программы;

• Выбрать среду разработки;

• Разработать программу «Менеджер конфигурации Celestia»

• Провести тестирование и отладку программного обеспечения;

 


АНАЛИТИЧЕСКАЯ ЧАСТЬ

Описание предметной области

Определенные настройки присутствуют в самой программе Celestia, однако этого недостаточно, поэтому разработчики предусмотрели специальный конфигурационный файл «celestia.cfg», в котором можно изменить множество дополнительных параметров. В этом файле указаны пути к файлам каталогов стандартных объектов (звезды, планеты, спутники, кометы и астероиды). Также там указаны имена файлов-текстур для звезд разного спектрального класса, названия сценария, выполняемого при запуске программы, демонстрационного сценария, названия папок для дополнений, названия шрифтов, курсор и многие параметры, отвечающие за рендеринг космического пространства. Все эти параметры пользователи могут настроить под свои нужны.

Для космического симулятора Celestia существует дополнительный графический интерфейс «Lua Educational Tools», настройки которого расположены в собственном конфигурационном файле «config.lua». В этом файле пользователи могут изменить цветовую схему графического интерфейса, отображение при старте отдельных элементов интерфейса, настроить формат даты, положение компаса и выполнить некоторые другие настройки.

Синтаксис конфигурационных файлов естественно англоязычный, все пояснения, которые в них находятся тоже англоязычные. Обычные пользователи, любители астрономии, испытывают трудности в конфигурировании Celestia и Lua Edu Tools, поскольку недостаточно хорошо знают английский язык. Это стало первой причиной рождения идеи моей дипломной работы.

На просторах Сети можно найти множество дополнений для Celestia. Это могут быть космические аппараты, планеты, астероиды, звезды, а также модели отдельных явлений. При установке большого количества дополнений в программу, ее работа может замедлиться, а некоторые дополнения вообще не всегда могут быть удобны в силу своей специфики.

После обдумывания этих неудобств, было решено создать некий конфигуратор, с помощью которого пользователи смогут легко менять настройки Celestia, Lua Edu Tools, а также управлять отображением определенных дополнений.

Специальная часть

Обоснование и выбор программных средств обеспечения проектирования и разработки структуры классов

Для разработки программного продукта – Менеджера конфигурации Celestia, был использован язык программирования C++.

C++ - компилируемый статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование и обобщённое программирование. C++ обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).

Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие.


Обоснование и выбор средств разработки, обоснование и выбор платформы

Платформой для Менеджера конфигурации Celestia послужили полученные знания языка программирования C++.

Как уже описано выше, существует множество реализаций языка C++. Для разработки своей дипломной работы, была выбрана среда разработки EmbarcaderoC++ Builder XE3, поскольку она имеет множество отличий от устаревшей Borland C++ Builder 6, которой нас обучают в колледже:

· Обновлен интерфейс, стало намного удобнее писать код, управлять формой, компонентами и их свойствами

· Бинарные файлы приложений сохраняются в подпапке, что исключает засорение корневой папки исходного кода «мусорными» файлами

· Добавлены новые компоненты (сетевые и др.)

· Добавлена поддержка Юникода, которая понадобилась мне при разработке дипломной работы

· Добавлена поддержка изображений с прозрачным фоном *.png

· И множество других изменений, которые здесь не уместятся.


Проектная часть

Информационное обеспечение

Проектирование и обоснование выбора структуры данных

Менеджер конфигурации Celestia спроектирован для работы непосредственно с файлами космического симулятора, являющимися для него источником данных, своего рода базой данных. В связи с этим, при разработке конфигуратора, было необходимо учитывать синтаксис и структуру этих файлов, поскольку изменять их нельзя – это вызовет сбой в работе космического симулятора.

Обсуждать структуру данных в конфигурационных файлах Celestia и Lua-инструментов я считаю неприемлемым, она задумана разработчиками и таковой останется, но, на мой взгляд, выбранная разработчиками Celestia структура обладает следующими достоинствами:

· Возможность комментировать строки

· Подробное описание каждого параметра

· Разделение параметров по категории применения

Программное обеспечение

Функциональная схема ПО

 

Основные настройки

На функциональной схеме Менеджера конфигурации Celestia орошо продемонстрировано взаимодействие всех модулей программы.

Структурная схема и описание программных модулей.

Модуль локализации – получает англоязычный идентификатор языка системы, на которой запущена программа, затем ищет в папке manager\language файл с названием, равным этому идентификатору и расширением.lng. В этом файле содержится перевод всех надписей, строк и сообщений, используемых в программе на соответствующий язык. Если файла перевода для данного языка нет, загружается язык по умолчанию – английский.

Модуль обработки параметров – получает версию Celestia, установленной у пользователя, затем поочередно загружает конфигурационные файлы, получает значения параметров и выводит на экран. От версии Celestia зависит расположение определенных конфигурационных файлов или дополнений.

Модуль сохранения параметров – сохраняет значения параметров обратно в конфигурационные файлы.

Модуль управления настройками – содержит 3 функции: экспорт, импорт и восстановление исходных настроек. Экспорт настроек сохраняет текущие значения всех параметров в.cfg файл. Этот cfg файл можно импортировать на другом ПК или после переустановке ОС, чтобы получить предпочитаемые настройки. При восстановлении исходных настроек для всех параметров установятся значения по умолчанию – т.е. те, которые были при первом запуске космического симулятора.

 

Руководство программиста

Удаление программы

Необходимость удалить Менеджер конфигурации Celestia может возникнуть всего по трем причинам: либо пользователь больше в нем не нуждается, либо хочет обновить его, либо хочет переустановить Celestia.

Все программы удаляются одинаково: заходим в меню Пуск-> Все программы и ищем папку с названием нужной нам программы или разработчика, раскрываем ее и внутри всегда есть пункт «Удаление программы». Он может называться по-разному, в зависимости от языка программы и от производителя. Удаление происходит с помощью деинсталлятора, который удаляет все файлы программы, очищает записи реестра, связанные с ней. Любую программу можно так же удалить через меню «Установка и удаление программ», иногда это бывает гораздо удобнее.

А чтобы обновить Менеджер, совсем необязательно его удалять: достаточно просто скачать с нашего сайта архив с программой и распаковать в корневую папку Celestia. При распаковке, все необходимые файлы будут заменены на новые.


Руководство пользователя

Назначение программы

В Celestia, как и в любой другой программе присутствуют настройки, однако их бывает недостаточно, поэтому разработчики предусмотрели специальный конфигурационный файл «celestia.cfg», в котором можно изменить множество дополнительных параметров. Все эти параметры пользователи могут настроить под свои нужны.

Для космического симулятора Celestia существует дополнительный графический интерфейс «Lua Educational Tools», настройки которого расположены в собственном конфигурационном файле «config.lua».

Синтаксис конфигурационных файлов естественно англоязычный, все пояснения, которые в них находятся тоже англоязычные. Обычные пользователи, любители астрономии, испытывают трудности в конфигурировании Celestia и Lua Edu Tools, поскольку недостаточно хорошо знают английский язык. Это стало первой причиной рождения идеи моей дипломной работы.

На просторах Сети можно найти множество дополнений для Celestia. Это могут быть космические аппараты, планеты, астероиды, звезды, а также модели отдельных явлений. При установке большого количества дополнений в программу, ее работа может замедлиться, а некоторые дополнения вообще не всегда могут быть удобны в силу своей специфики.

Обдумав эти неудобства, было решено создать некий конфигуратор, с помощью которого пользователи смогут легко менять настройки Celestia, Lua Edu Tools, а также управлять отображением определенных дополнений.

2.Технические характеристики

Для работоспособности данной программы, требуется:

• Манипулятор типа мышь

• Процессор Intel Pentium II и выше

• Оперативной памяти не менее 128 Mb

• Любая 32-битная ОС семейства Windows

• Любая установленная версия космического симулятора Celestia

Общие сведения

Менеджер конфигурации Celestia является конфигуратором с графическим интерфейсом. Представляет собой окно со списком параметров, размещенных на разных вкладках, в зависимости от их типа и принадлежности. Навигация в виде вкладок очень удобна и проста как для пользователей, так и для разработчика, так как используется всего одно окно приложения. Все параметры и элементы интерфейса в программе расположены аккуратно и симметрично. Надписи понятные и грамотные.

Функциональное назначение.

Менеджер конфигурации Celestia предназначен для простой, но в то же время глубокой настройки космического симулятора Celestia, его дополнений и дополнительного инструмента Lua Edu Tools (Lua Universal Tools).

Экономическая часть

Основные результаты

Затраты на создание программного продукта складываются из расходов по оплате труда разработчика программы и расходов по оплате машинного времени при отладке программы:

ЗСПП= ЗЗПСПП+ ЗМЕСПП+ ЗОБЩ,

где

ЗСПП – затраты на создание программного продукта;

ЗЗПСПП – затраты на оплату труда разработчика программы;

ЗМЕСПП – затраты на оплату машинного времени;

ЗОБЩ – общие затраты.

Таким образом, получим:

ЗСПП=389, 8 +7191, 6+2062, 5+14292=23 935, 9 руб.

Расходы на оплату труда разработчика программы.

Расходы на оплату труда разработчика программы определяются путем умножения трудоёмкости создания программного продукта на среднюю часовую оплату программиста (с учётом коэффициента отчислений на социальные нужды):

ЗЗПСПП = t*Тчас.

Таким образом, получим:

ЗЗПСПП = 38, 98*10=389, 8 руб.

Расчёт трудоёмкости создания программного продукта.

Трудоёмкость разработки программного продукта можно определить следующим образом:

t = tИ+ tА+ tБ+ tП+ tД+ tОТ

где

tИ – затраты труда на подготовку описания задачи;

tА – затраты труда на разработку алгоритма решения задачи;

tБ – затраты труда на разработку структурной схемы алгоритма решения задачи;

tП – затраты труда на составление программы по готовой структурной схеме;

tД – затраты труда на подготовку документации задачи;

tОТ – затраты труда на отладку программы на ЭВМ при комплексной отладке задачи;

 

Составляющие затрат, в свою очередь можно вычислить через условное число операторов Q. Например, в нашем случае число операторов в отлаженной программе Q = 2030.

Таким образом, получим:

t = 40, 6+10, 15+10, 15+10, 15+8, 87+38=117, 92 чел/час.

Расчёт затрат труда на подготовку описания.

Оценить затраты труда на подготовку описания задачи не возможно, т.к. это связано с творческим характером работы, вместо этого оценим затраты труда на изучение описания задачи с учётом уточнения описания и квалификации программиста определяются:

tИ = Q*B / (250…350*K),

tАОТ – затраты труда на отладку программы на ЭВМ при автономной отладке одной задачи;

B – коэффициент увеличения затрат труда вследствие недостаточного описания задачи, уточнений и некоторой не доработки, 1, 2...5;

K – коэффициент квалификации разработчика, для работающих до 2 лет, K = 0, 8;

В связи с тем, что при изучении описания данной задачи потребовалось много уточнений и доработок в описании коэффициент B принимаем равным 4.

Таким образом, получим:

tИ = 2030*4/(250*0, 8)=40, 6 чел/час.

Амортизационные отчисления.

Сумма годовых амортизационных отчислений определяется по формуле:

ЗАМБАЛАМ

где

СБАЛ – балансовая стоимость компьютера,

НАМ – норма амортизации.

Таким образом, получим:

ЗАМ=16500*0, 125=2062, 5 руб.

Согласно постановления совета министров СССР от 22 октября 1990 года № 1072 «О единых нормах амортизационных отчислений на полное восстановление основных фондов народного хозяйства СССР» НАМ =12, 5%. Балансовая стоимость ПЭВМ включает отпускную цену, расходы на транспортировку, монтаж оборудования и его наладку:

СБАЛ = СРЫНУСТ,

где

СРЫН – рыночная стоимость компьютера, руб./шт.,

ЗУСТ – затраты на доставку и установку компьютера, руб./шт.

Таким образом, получим:

СБАЛ = 15000+1500=16500 руб/шт.

Компьютер, на котором велась работа, был приобретен по цене СРЫН= 15000, затраты на установку и наладку составили примерно 10% от стоимости компьютера:

ЗУСТ = 10%*СРЫН

Таким образом, получим:

ЗУСТ = 0, 1*15000=1500 руб.

СБАЛ = 15000+1500=16500 руб/шт.

ЗАМ = 16500*0, 125=2062, 5 руб/год.

Расчёт общих расходов.

Общие расходы это расходы на освещение, отопление, коммунальные услуги и т.п.

Общие затраты на создание программного продукта составят:

ЗСПП= 389, 8 +7191, 6+2062, 5+14292=23 935, 9 руб.

.Можно сделать следующие выводы:

В результате расчета, затраты на создание данного программного продукта составили 23 935, 9 руб. Снизить затраты на создание можно, например, используя следующие методы: повысить эффективность работы программиста, путем использования более современных ЭВМ; при этом, а также при бережном и аккуратном отношении к компьютерной технике автоматически уменьшатся затраты на ремонт, а значит и необходимость привлечения дополнительного обслуживающего персонала будет гораздо реже. Можно сократить количество компьютерной техники, для работы программиста. В связи с тем, что три четверти расходов идут на оплату труда программиста, возможно, уменьшить его заработную плату, или уменьшить необходимое количество программистов, создающих программу. Можно сократить оклад инженера-электронщика и электрослесаря или объединить их обязанности в должности одного работника.


Заключение

В процессе дипломного проектирования было разработано программное обеспечение конфигурирующее космический симулятор Celestia, и ее дополнения. Данное ПО описано в проектной части и приложении данной работы.

Рассчитанные показатели экономической эффективности данной разработки говорят о целесообразности вложения денежных средств в ее реализацию и внедрение.

Внедрение данной программы призвано облегчить работу астрономов-любителей и обычных пользователей Celestia, а их количество во всем мире очень большое. Для реализации программной части информационной системы выбран язык программирования С++.

Итогом выполнения дипломной работы послужила разработка бксплатного программного продукта с открытым исходным кодом, позволяющего редактировать множество дополнительных параметров Celestia, Lua-инструментов, а также управлять отображением различных объектов, включая космические аппараты.

Для удобства также реализован импорт и экспорт всех параметров в специальный конфигурационный файл.


Список использованной литературы

 

1. Виснадул, Б.Д. Гагарина, Л. Г. Кокорева, Е.В. Технология разработки программных продуктов – 2008.

2. Рудаков, А.В. Технология разработки программных продуктов – 2006.

3. ГОСТ 19.202-78 – Требования к содержанию и оформлению – 1980.

4. ГОСТ 19.402-78 – Описание программы – 1980.


Приложение 1

Текст программы

Unit1.h

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include < Classes.hpp>

#include < Controls.hpp>

#include < StdCtrls.hpp>

#include < Forms.hpp>

#include < ComCtrls.hpp>

#include < Buttons.hpp>

#include < ExtCtrls.hpp>

#include < jpeg.hpp>

#include < CheckLst.hpp>

#include < Vcl.Dialogs.hpp>

#include < IdBaseComponent.hpp>

#include < IdComponent.hpp>

#include < IdHTTP.hpp>

#include < IdTCPClient.hpp>

#include < IdTCPConnection.hpp>

#include < Vcl.Imaging.pngimage.hpp>

#include < Vcl.Menus.hpp>

//---------------------------------------------------------------------------

class TMainForm: public TForm

{

__published: // IDE-managed Components

TPageControl *PageControl1;

TTabSheet *MainTab;

TTabSheet *ObjectTab;

TTabSheet *LuaTab;

TTabSheet *AboutTab;

TGroupBox *GroupBox1;

TEdit *EditDir1;

TEdit *Edit3;

TBitBtn *BitBtn1;

TBitBtn *BitBtn2;

TGroupBox *GroupBox2;

TCheckBox *CheckBox1;

TCheckBox *CheckBox2;

TCheckBox *CheckBox4;

TGroupBox *GroupBox3;

TCheckBox *CheckBox5;

TCheckBox *CheckBox6;

TCheckBox *CheckBox7;

TCheckBox *CheckBox8;

TBitBtn *BitBtn3;

TEdit *Edit2;

TLabel *LabelCelestia;

TLabel *LabelLink2;

TLabel *LabelDirComment;

TLabel *Label5;

TLabel *Label6;

TLabel *Label7;

TLabel *LabelAbout;

TLabel *Label1;

TLabel *Label2;

TGroupBox *GroupBox4;

TImage *Image2;

TImage *Image3;

TImage *Image4;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

TRadioButton *RadioButton3;

TEdit *EditDir2;

TEdit *EditDir3;

TTabSheet *SettingTab;

TGroupBox *GroupBox5;

TButton *ButtonDir1;

TButton *ButtonDir2;

TButton *ButtonDir3;

TLabel *LabelDir1;

TLabel *LabelDir2;

TLabel *LabelDir3;

TLabel *Label3;

TLabel *Label4;

TLabel *Label10;

TCheckBox *CheckBox10;

TLabel *Label11;

TLabel *Label12;

TLabel *Label14;

TLabel *Label16;

TLabel *Label19;

TEdit *Edit5;

TGroupBox *GroupBox7;

TButton *Button1;

TEdit *EditScreenDir;

TComboBox *ComboBox1;

TEdit *EditStartScript;

TLabel *Label22;

TEdit *EditDemoScript;

TLabel *Label23;

TLabel *Label21;

TLabel *Label20;

TLabel *Label24;

TLabel *Label25;

TCheckBox *CheckBox11;

TCheckBox *CheckBox12;

TCheckBox *CheckBox13;

TScrollBar *ScrollBar1;

TScrollBar *ScrollBar2;

TEdit *Edit1;

TLabel *Label26;

TLabel *Label27;

TGroupBox *GroupBox8;

TCheckBox *CheckBox14;

TLabel *Label28;

TEdit *Edit4;

TLabel *Label29;

TComboBox *ComboBox2;

TCheckBox *CheckBox15;

TCheckBox *CheckBox16;

TCheckBox *CheckBox17;

TRadioGroup *RadioGroup1;

TCheckBox *CheckBox18;

TCheckBox *CheckBox19;

TGroupBox *GroupBox6;

TCheckBox *CheckBox21;

TLabeledEdit *PlayerEdit;

TButton *Button2;

TGroupBox *GroupBox9;

TGroupBox *GroupBox10;

TGroupBox *GroupBox11;

TLabel *Label9;

TBitBtn *BitBtn4;

TLabel *Label17;

TButton *Button3;

TButton *Button4;

TLabel *Label18;

TOpenDialog *PlayerDialog;

TTabSheet *Page1;

TTabSheet *Page2;

TCheckBox *CheckBox9;

TCheckBox *CheckBox3;

TCheckBox *CheckBox22;

TPageControl *PageControl2;

TCheckBox *CheckBox20;

TCheckBox *CheckBox23;

TCheckBox *CheckBox24;

TCheckBox *CheckBox25;

TCheckBox *CheckBox26;

TCheckBox *CheckBox27;

TCheckBox *CheckBox28;

TCheckBox *CheckBox29;

TCheckBox *CheckBox30;

TCheckBox *CheckBox31;

TCheckBox *CheckBox32;

TLabel *Label30;

TCheckBox *CheckBox33;

TCheckBox *CheckBox34;

TCheckBox *CheckBox35;

TCheckBox *CheckBox36;

TCheckBox *CheckBox37;

TCheckBox *CheckBox38;

TCheckBox *CheckBox39;

TCheckBox *CheckBox40;

TCheckBox *CheckBox41;

TCheckBox *CheckBox42;

TCheckBox *CheckBox43;

TCheckBox *CheckBox44;

TCheckBox *CheckBox45;

TCheckBox *CheckBox46;

TCheckBox *CheckBox47;

TCheckBox *CheckBox48;

TCheckBox *CheckBox49;

TCheckBox *CheckBox50;

TCheckBox *CheckBox51;

TCheckBox *CheckBox52;

TCheckBox *CheckBox53;

TCheckBox *CheckBox54;

TCheckBox *CheckBox55;

TCheckBox *CheckBox56;

TLabel *Label31;

TCheckBox *CheckBox57;

TCheckBox *CheckBox58;

TCheckBox *CheckBox59;

TCheckBox *CheckBox60;

TCheckBox *CheckBox61;

TOpenDialog *ImportDialog;

TLabel *Label32;

TSaveDialog *ExportDialog;

TLabel *Label8;

TLabel *Label13;

TGroupBox *GroupBox12;

TLabel *Link1;

TLabel *Link2;

TLabel *Link3;

TLabel *Link4;

TIdHTTP *Web;

TImage *Image5;

TImage *Image6;

TImage *Image7;

TImage *Image8;

TLabel *Label15;

TLabel *Label33;

TCheckBox *CheckBox62;

TGroupBox *GroupBox13;

TCheckBox *CheckBox63;

TPopupMenu *PopMenu;

TMenuItem *Hlp;

void __fastcall LabelLink2Click(TObject *Sender);

void __fastcall LabelLink2MouseLeave(TObject *Sender);

void __fastcall BitBtn1Click(TObject *Sender);

void __fastcall BitBtn3Click(TObject *Sender);

void __fastcall BitBtn2Click(TObject *Sender);

void __fastcall Edit2KeyPress(TObject *Sender, char & Key);

void __fastcall Edit3KeyPress(TObject *Sender, char & Key);

void __fastcall Edit2Click(TObject *Sender);

void __fastcall Edit3Click(TObject *Sender);

void __fastcall BitBtn4Click(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

void __fastcall RadioButton1Click(TObject *Sender);

void __fastcall RadioButton2Click(TObject *Sender);

void __fastcall RadioButton3Click(TObject *Sender);

void __fastcall Edit2Change(TObject *Sender);

void __fastcall Edit3Change(TObject *Sender);

void __fastcall ButtonDir1Click(TObject *Sender);

void __fastcall ButtonDir2Click(TObject *Sender);

void __fastcall ButtonDir3Click(TObject *Sender);

void __fastcall Image2Click(TObject *Sender);

void __fastcall Image3Click(TObject *Sender);

void __fastcall Image4Click(TObject *Sender);

void __fastcall Label10MouseLeave(TObject *Sender);

void __fastcall Label10Click(TObject *Sender);

void __fastcall Label14MouseLeave(TObject *Sender);

void __fastcall Label14Click(TObject *Sender);

void __fastcall Label16MouseLeave(TObject *Sender);

void __fastcall Label16Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Edit5Change(TObject *Sender);

void __fastcall Edit5Click(TObject *Sender);

void __fastcall Edit5KeyPress(TObject *Sender, char & Key);

void __fastcall ScrollBar1Change(TObject *Sender);

void __fastcall ScrollBar2Change(TObject *Sender);

void __fastcall Edit1Change(TObject *Sender);

void __fastcall Edit1Click(TObject *Sender);

void __fastcall Edit4Change(TObject *Sender);

void __fastcall Edit4Click(TObject *Sender);

void __fastcall Edit4KeyPress(TObject *Sender, char & Key);

void __fastcall CheckBox16Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall CheckBox22Click(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Label32MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label32MouseLeave(TObject *Sender);

void __fastcall Label32Click(TObject *Sender);

void __fastcall Label16MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label14MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall LabelLink2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label10MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Button4Click(TObject *Sender);

void __fastcall Label8MouseLeave(TObject *Sender);

void __fastcall Label8MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label8Click(TObject *Sender);

void __fastcall Label13MouseLeave(TObject *Sender);

void __fastcall Label13MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label13Click(TObject *Sender);

void __fastcall Link1MouseLeave(TObject *Sender);

void __fastcall Link1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Link1Click(TObject *Sender);

void __fastcall Link2MouseLeave(TObject *Sender);

void __fastcall Link2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Link2Click(TObject *Sender);

void __fastcall Link3MouseLeave(TObject *Sender);

void __fastcall Link3MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Link3Click(TObject *Sender);

void __fastcall Link4MouseLeave(TObject *Sender);

void __fastcall Link4MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Link4Click(TObject *Sender);

void __fastcall Label15MouseLeave(TObject *Sender);

void __fastcall Label15MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label15Click(TObject *Sender);

void __fastcall Label33MouseLeave(TObject *Sender);

void __fastcall Label33MouseMove(TObject *Sender, TShiftState Shift, int X, int Y);

void __fastcall Label33Click(TObject *Sender);

void __fastcall HlpClick(TObject *Sender);

 

private: // User declarations

public: // User declarations

__fastcall TMainForm(TComponent* Owner);

String __fastcall GetVer(String FileName);

void ObjectProv(String PodFolder, String Folder, String SSC, TCheckBox *Check);

void ObjectSave(String PodFolder, String Folder, TCheckBox *Check);

void ObjectVos(String PodFolder, String Folder, String SSC, TCheckBox *Check, bool extras);

void EndingProv(String Dir, String Folder, String SSC, TCheckBox *Check);

void EndingSave(String Dir, String Folder, String SSC, TCheckBox *Check);

void EndingVos(String Dir, String Folder, String SSC, TCheckBox *Check);

void CheckAll(bool checked);

void HSatRingsProv(String Path, TCheckBox *Check);

void HSatRingsSave(String Path, TCheckBox *Check);

};

//---------------------------------------------------------------------------

extern PACKAGE TMainForm *MainForm;

//---------------------------------------------------------------------------

#endif

 

Unit1.cpp

//---------------------------------------------------------------------------

 

#include < vcl.h>

#pragma hdrstop

 

#include " Unit1.h"

#include " FileCtrl.hpp"

#include " IniFiles.hpp"

 

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource " *.dfm"

TIniFile* EP;

TIniFile* Settings;

TIniFile* Links;

TMemIniFile* Lang;

bool startfolder, AutoSave;

String S[7], sl;

String LuaAdr;

String Link[4];

String CelestiaVersion;

String Language, LanguageFile;

String LinkLocale[15];

String StringsLocale[15];

String MessegesLocale[15];

TMainForm *MainForm;

//---------------------------------------------------------------------------

 

////////////////////////////////////////////////////////////////////////////////

// ПРОВЕРКИ ПРИ СТАРТЕ //

////////////////////////////////////////////////////////////////////////////////

 

__fastcall TMainForm:: TMainForm(TComponent* Owner)

: TForm(Owner)

{

//ЗАГРУЗКА ЛОКАЛИЗАЦИИ

wchar_t charlang[255];

LCID lc = GetSystemDefaultLCID();

GetLocaleInfo(lc, LOCALE_SENGLANGUAGE, charlang, sizeof(charlang));

Language = charlang;

LanguageFile=ExtractFilePath(Application-> ExeName)+" manager\\language\\" +Language+".lng";

 

Lang = new TMemIniFile(LanguageFile);

Application-> Title=Lang-> ReadString(" Strings", " AppName", " Celestia Config Manager" )+" v" +GetVer(Application-> ExeName);

MainForm-> Caption=Application-> Title;

 

//Вкладка " Основные"

Label19-> Caption=Lang-> ReadString(" Main", " Label19", " You are using: " )+" ";

Label32-> Caption=Lang-> ReadString(" Main", " Label32", " Download new version" );

LinkLocale[1]=Lang-> ReadString(" Links", " Link1", " http: //sourceforge.net/projects/celestia/files/Celestia-win32-bin/" );

ExportDialog-> Filter=Lang-> ReadString(" Strings", " EIDialogFilter", " Configuration files" )+" |*.cfg";

ImportDialog-> Filter=Lang-> ReadString(" Strings", " EIDialogFilter", " Configuration files" )+" |*.cfg";

PlayerDialog-> Filter=Lang-> ReadString(" Strings", " PlayerDialogFilter", " Executable files" )+" |*.exe";

MainTab-> Caption=Lang-> ReadString(" Main", " MainTab", " Main" );

GroupBox1-> Caption=Lang-> ReadString(" Main", " GroupBox1", " Extras directories" );

LabelDir1-> Caption=Lang-> ReadString(" Main", " LabelDir1", " Standard addons directory (default)" );

LabelDir2-> Caption=Lang-> ReadString(" Main", " LabelDir2", " Addons directory (default)" );

LabelDir3-> Caption=Lang-> ReadString(" Main", " LabelDir3", " Personal addons directory (optional)" );

LabelDirComment-> Caption=Lang-> ReadString(" Main", " LabelDirComment", " There are addons folders for the program. You can add or change folders which Celestia will look for installed addons." );

Label5-> Caption=Lang-> ReadString(" Main", " Label5", " How many sample points use to render orbit paths: " );

Label1-> Caption=Lang-> ReadString(" Main", " Label1", " Allowed values: from 80 to 400" );

Label6-> Caption=Lang-> ReadString(" Main", " Label6", " Number of segments in which ring systems are rendered: " );

Label2-> Caption=Lang-> ReadString(" Main", " Label2", " Allowed values: from 100 to 2000" );

GroupBox4-> Caption=Lang-> ReadString(" Main", " GroupBox4", " Cursor in Celestia" );

RadioButton1-> Caption=Lang-> ReadString(" Main", " RadioButton1", " Crosshair" );

RadioButton2-> Caption=Lang-> ReadString(" Main", " RadioButton2", " Inverted crosshair" );

RadioButton3-> Caption=Lang-> ReadString(" Main", " RadioButton3", " Arrow" );

GroupBox7-> Caption=Lang-> ReadString(" Main", " GroupBox7", " Scripts" );

Label20-> Caption=Lang-> ReadString(" Main", " Label20", " Script screenshot directory" );

Label21-> Caption=Lang-> ReadString(" Main", " Label21", " Script system access policy" );

ComboBox1-> Items-> Add(Lang-> ReadString(" Strings", " ComboBox1Item1", " Ask" ));

ComboBox1-> Items-> Add(Lang-> ReadString(" Strings", " ComboBox1Item2", " Allow" ));

ComboBox1-> Items-> Add(Lang-> ReadString(" Strings", " ComboBox1Item3", " Deny" ));

Label22-> Caption=Lang-> ReadString(" Main", " Label22", " Init script" );

Label23-> Caption=Lang-> ReadString(" Main", " Label23", " Demonstration script" );

Label24-> Caption=Lang-> ReadString(" Main", " Label24", " Speed of rotation of observer's camera, when holding keyboard arrows < - or -> " );

Label26-> Caption=Lang-> ReadString(" Main", " Label26", " Note: This parameter affects the camera rotation speed in 'Planetarium' mode, being near planet surface." );

Label25-> Caption=Lang-> ReadString(" Main", " Label25", " Mouse rotation sensitivity: " );

Label27-> Caption=Lang-> ReadString(" Main", " Label27", " Note: The value 0.0 disables this function." );

GroupBox6-> Caption=Lang-> ReadString(" Main", " GroupBox6", " Incidental music Celestia EP v2.0" );

CheckBox21-> Caption=Lang-> ReadString(" Main", " CheckBox21", " Enabled" );

PlayerEdit-> EditLabel-> Caption=Lang-> ReadString(" Main", " PlayerEdit", " Path to your media player (required): " );

Hlp-> Caption=Lang-> ReadString(" Main", " Help", " Help" );

BitBtn1-> Caption=Lang-> ReadString(" Strings", " SaveButton", " Save" );

 

//Вкладка " Объекты и время"

ObjectTab-> Caption=Lang-> ReadString(" ObjectsTime", " ObjectTab", " Objects and time" );

GroupBox2-> Caption=Lang-> ReadString(" ObjectsTime", " GroupBox2", " Show" );

CheckBox1-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox1", " Sun flares" );

CheckBox2-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox2", " Jupiter rings" );

CheckBox10-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox10", " Mars Features (pack by Leserg)" );

LinkLocale[2]=Lang-> ReadString(" Links", " Link2", " http: //en.celestiaproject.ru/? p=82" );

Label13-> Caption=Lang-> ReadString(" Strings", " Download", " Download" );

CheckBox17-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox17", " Kuiper Belt" );

LinkLocale[3]=Lang-> ReadString(" Links", " Link3", " http: //en.celestiaproject.ru/? p=76" );

Label33-> Caption=Lang-> ReadString(" Strings", " Download", " Download" );

CheckBox18-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox18", " Dynamic clouds of Jupiter" );

LinkLocale[4]=Lang-> ReadString(" Links", " Link4", " http: //en.celestiaproject.ru/? p=53" );

Label15-> Caption=Lang-> ReadString(" Strings", " Download", " Download" );

CheckBox19-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox19", " Io 3D volcanoes" );

CheckBox20-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox20", " Space lift" );

LinkLocale[5]=Lang-> ReadString(" Links", " Link5", " http: //en.celestiaproject.ru/? p=89" );

Label8-> Caption=Lang-> ReadString(" Strings", " Download", " Download" );

CheckBox61-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox61", " Oort Cloud" );

LinkLocale[6]=Lang-> ReadString(" Links", " Link6", " http: //en.celestiaproject.ru/? p=85" );

Label16-> Caption=Lang-> ReadString(" Strings", " Download", " Download" );

CheckBox62-> Caption=Lang-> ReadString(" ObjectsTime", " CheckBox62", " Highlight the particles of Saturn rings (only Celestia EP v3.0)" );

 

//Космические аппараты

GroupBox5-> Caption=Lang-> ReadString(" ObjectsTime", " GroupBox5", " Spacecrafts, which doesn't exists anymore" );

Page1-> Caption=Lang-> ReadString(" ObjectsTime", " Page1", " Page 1" );

Page2-> Caption=Lang-> ReadString(" ObjectsTime", " Page2", " Page 2" );

CheckBox9-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox9", " Mir" );

CheckBox3-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox3", " Galileo" );

CheckBox23-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox23", " Cassini-Huygens" );

CheckBox24-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox24", " Satellite 1" );

CheckBox25-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox25", " Satellite 2" );

CheckBox26-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox26", " Satellite 3" );

CheckBox27-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox27", " Salyut 7" );

CheckBox28-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox28", " Mariner" );

CheckBox29-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox29", " Venus Express" );

CheckBox30-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox30", " Chandra X-Ray Observatory" );

CheckBox31-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox31", " Corot" );

CheckBox32-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox32", " Herschel" );

CheckBox33-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox33", " Voyager 1 and 2" );

CheckBox34-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox34", " New Horizons" );

CheckBox35-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox35", " Spitzer" );

CheckBox36-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox36", " ISO" );

CheckBox37-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox37", " Envisat" );

CheckBox38-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox38", " AMSAT-OSCAR 7" );

CheckBox39-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox39", " Apollo 10 and 11" );

CheckBox40-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox40", " Dawn" );

CheckBox41-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox41", " Deep Impact" );

CheckBox42-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox42", " Giotto" );

CheckBox43-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox43", " Helios 1 and 2" );

CheckBox44-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox44", " ICE" );

CheckBox45-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox45", " Luna and Lunokhod" );

CheckBox46-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox46", " LRO" );

CheckBox47-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox47", " Magellan" );

CheckBox48-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox48", " Mars Express" );

CheckBox49-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox49", " MGS" );

CheckBox50-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox50", " MRO" );

CheckBox51-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox51", " Messenger" );

CheckBox52-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox52", " Nozomi" );

CheckBox53-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox53", " Phoenix Lander" );

CheckBox54-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox54", " Pioneers" );

CheckBox55-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox55", " Planck" );

CheckBox56-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox56", " Rosetta" );

CheckBox57-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox57", " Ulysses" );

CheckBox58-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox58", " Venera" );

CheckBox59-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox59", " Viking" );

CheckBox60-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox60", " Zond 3" );

CheckBox22-> Caption=Lang-> ReadString(" Spacecrafts", " CheckBox22", " Select all" );

BitBtn2-> Caption=Lang-> ReadString(" Strings", " SaveButton", " Save" );

 

//Вкладка " Lua-инструменты"

CheckBox4-> Caption=Lang-> ReadString(" LuaTools", " CheckBox4", " Show at Celestia startup" );

GroupBox3-> Caption=Lang-> ReadString(" LuaTools", " GroupBox3", " Show automatically" );

CheckBox5-> Caption=Lang-> ReadString(" LuaTools", " CheckBox5", " Information about objects" );

CheckBox6-> Caption=Lang-> ReadString(" LuaTools", " CheckBox6", " Coordinates" );

CheckBox11-> Caption=Lang-> ReadString(" LuaTools", " CheckBox11", " Magnification mode" );

CheckBox12-> Caption=Lang-> ReadString(" LuaTools", " CheckBox12", " H-R Diagram" );


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 1156; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.373 с.)
Главная | Случайная страница | Обратная связь