Extended Celestia Watcher
parent
5b75778951
commit
20cc261b38
|
@ -490,3 +490,4 @@ Code:
|
||||||
* Removed duplicate entry for Iota Horologii (HR 810) in exoplanet catalog
|
* Removed duplicate entry for Iota Horologii (HR 810) in exoplanet catalog
|
||||||
* Unix Gtk: removed problem preventing ShowClouds from working. (dramsey)
|
* Unix Gtk: removed problem preventing ShowClouds from working. (dramsey)
|
||||||
* Unix Gtk: Options Dialog. (dramsey)
|
* Unix Gtk: Options Dialog. (dramsey)
|
||||||
|
* Celestia Watcher extended. (dramsey)
|
||||||
|
|
|
@ -4,7 +4,7 @@ dnl Process this file with autoconf to make a configure script
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT(configure.in)
|
AC_INIT(configure.in)
|
||||||
AM_INIT_AUTOMAKE(celestia, 1.2.1)
|
AM_INIT_AUTOMAKE(celestia, 1.2.4)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
AM_ACLOCAL_INCLUDE(macros)
|
AM_ACLOCAL_INCLUDE(macros)
|
||||||
|
|
|
@ -767,7 +767,10 @@ void CelestiaCore::charEntered(char c)
|
||||||
|
|
||||||
case '[':
|
case '[':
|
||||||
if (sim->getFaintestVisible() > 1.0f)
|
if (sim->getFaintestVisible() > 1.0f)
|
||||||
|
{
|
||||||
setFaintest(sim->getFaintestVisible() - 0.5f);
|
setFaintest(sim->getFaintestVisible() - 0.5f);
|
||||||
|
notifyWatchers(CelestiaWatcher::Faintest);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '\\':
|
case '\\':
|
||||||
|
@ -776,7 +779,10 @@ void CelestiaCore::charEntered(char c)
|
||||||
|
|
||||||
case ']':
|
case ']':
|
||||||
if (sim->getFaintestVisible() < 12.0f)
|
if (sim->getFaintestVisible() < 12.0f)
|
||||||
|
{
|
||||||
setFaintest(sim->getFaintestVisible() + 0.5f);
|
setFaintest(sim->getFaintestVisible() + 0.5f);
|
||||||
|
notifyWatchers(CelestiaWatcher::Faintest);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '`':
|
case '`':
|
||||||
|
@ -788,6 +794,7 @@ void CelestiaCore::charEntered(char c)
|
||||||
renderer->setAmbientLightLevel(renderer->getAmbientLightLevel() - 0.05f);
|
renderer->setAmbientLightLevel(renderer->getAmbientLightLevel() - 0.05f);
|
||||||
else
|
else
|
||||||
renderer->setAmbientLightLevel(0.0f);
|
renderer->setAmbientLightLevel(0.0f);
|
||||||
|
notifyWatchers(CelestiaWatcher::AmbientLight);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '}':
|
case '}':
|
||||||
|
@ -795,6 +802,7 @@ void CelestiaCore::charEntered(char c)
|
||||||
renderer->setAmbientLightLevel(renderer->getAmbientLightLevel() + 0.05f);
|
renderer->setAmbientLightLevel(renderer->getAmbientLightLevel() + 0.05f);
|
||||||
else
|
else
|
||||||
renderer->setAmbientLightLevel(1.0f);
|
renderer->setAmbientLightLevel(1.0f);
|
||||||
|
notifyWatchers(CelestiaWatcher::AmbientLight);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '~':
|
case '~':
|
||||||
|
@ -1803,6 +1811,7 @@ int CelestiaCore::getTextEnterMode() const
|
||||||
void CelestiaCore::setTimeZoneBias(int bias)
|
void CelestiaCore::setTimeZoneBias(int bias)
|
||||||
{
|
{
|
||||||
timeZoneBias = bias;
|
timeZoneBias = bias;
|
||||||
|
notifyWatchers(CelestiaWatcher::TimeZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,9 @@ class CelestiaWatcher
|
||||||
LabelFlags = 1,
|
LabelFlags = 1,
|
||||||
RenderFlags = 2,
|
RenderFlags = 2,
|
||||||
VerbosityLevel = 4,
|
VerbosityLevel = 4,
|
||||||
|
TimeZone = 8,
|
||||||
|
AmbientLight = 16,
|
||||||
|
Faintest = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -554,10 +554,10 @@ static int infoChanged(GtkButton *button, int info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern void resyncMenus();
|
extern void resyncAll();
|
||||||
|
|
||||||
GtkWidget *showFrame=NULL, *labelFrame=NULL, *showBox=NULL, *labelBox=NULL;
|
GtkWidget *showFrame=NULL, *labelFrame=NULL, *showBox=NULL, *labelBox=NULL;
|
||||||
GtkWidget *optionDialog=NULL;
|
GtkWidget *optionDialog=NULL, *spinner = NULL;
|
||||||
|
|
||||||
static void menuOptions()
|
static void menuOptions()
|
||||||
{
|
{
|
||||||
|
@ -607,7 +607,7 @@ static void menuOptions()
|
||||||
GtkAdjustment *adj = (GtkAdjustment *)
|
GtkAdjustment *adj = (GtkAdjustment *)
|
||||||
gtk_adjustment_new((float)appSim->getFaintestVisible(),
|
gtk_adjustment_new((float)appSim->getFaintestVisible(),
|
||||||
1.001, 11.999, 0.5, 2.0, 0.0);
|
1.001, 11.999, 0.5, 2.0, 0.0);
|
||||||
GtkWidget *spinner = gtk_spin_button_new (adj, 0.5, 0);
|
spinner = gtk_spin_button_new (adj, 0.5, 0);
|
||||||
gtk_spin_button_set_numeric(GTK_SPIN_BUTTON (spinner), TRUE);
|
gtk_spin_button_set_numeric(GTK_SPIN_BUTTON (spinner), TRUE);
|
||||||
gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), FALSE);
|
gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), FALSE);
|
||||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinner), GTK_SHADOW_IN);
|
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinner), GTK_SHADOW_IN);
|
||||||
|
@ -643,7 +643,7 @@ static void menuOptions()
|
||||||
gtk_widget_show(label2);
|
gtk_widget_show(label2);
|
||||||
gtk_widget_show(hbox);
|
gtk_widget_show(hbox);
|
||||||
|
|
||||||
resyncMenus();
|
resyncAll();
|
||||||
|
|
||||||
gnome_dialog_close_hides(GNOME_DIALOG(optionDialog), true);
|
gnome_dialog_close_hides(GNOME_DIALOG(optionDialog), true);
|
||||||
gtk_window_set_modal(GTK_WINDOW(optionDialog), TRUE);
|
gtk_window_set_modal(GTK_WINDOW(optionDialog), TRUE);
|
||||||
|
@ -2380,13 +2380,14 @@ void resyncMenus()
|
||||||
gtk_widget_show(GTK_WIDGET(cfunc->optWidget));
|
gtk_widget_show(GTK_WIDGET(cfunc->optWidget));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(optionDialog) // Only modify these if optionsDialog is setup
|
}
|
||||||
|
|
||||||
|
void resyncAmbient()
|
||||||
|
{
|
||||||
|
if(optionDialog) // Only modify if optionsDialog is setup
|
||||||
{
|
{
|
||||||
int index=appCore->getHudDetail();
|
|
||||||
if(!(infoGads[index])->active)
|
|
||||||
gtk_toggle_button_set_active(infoGads[index],1);
|
|
||||||
float ambient=appRenderer->getAmbientLightLevel();
|
float ambient=appRenderer->getAmbientLightLevel();
|
||||||
index=3;
|
int index=3;
|
||||||
for(int i=3;(ambient<=amLevels[i]) && (i>=0);i--)
|
for(int i=3;(ambient<=amLevels[i]) && (i>=0);i--)
|
||||||
index=i;
|
index=i;
|
||||||
if(!(ambientGads[index])->active)
|
if(!(ambientGads[index])->active)
|
||||||
|
@ -2395,8 +2396,39 @@ void resyncMenus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Our own watcher. Celestiacore will call notifyChange()
|
void resyncFaintest()
|
||||||
to tell us we need to recheck the check menu items. */
|
{
|
||||||
|
if(optionDialog) // Only modify if optionsDialog is setup
|
||||||
|
{
|
||||||
|
float val=appSim->getFaintestVisible();
|
||||||
|
if(val != gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(spinner)))
|
||||||
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner), (gfloat)val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void resyncHudDet()
|
||||||
|
{
|
||||||
|
if(optionDialog) // Only modify if optionsDialog is setup
|
||||||
|
{
|
||||||
|
int index=appCore->getHudDetail();
|
||||||
|
if(!(infoGads[index])->active)
|
||||||
|
gtk_toggle_button_set_active(infoGads[index],1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void resyncAll()
|
||||||
|
{
|
||||||
|
resyncMenus();
|
||||||
|
resyncAmbient();
|
||||||
|
resyncHudDet();
|
||||||
|
resyncFaintest();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Our own watcher. Celestiacore will call notifyChange() to tell us
|
||||||
|
we need to recheck the check menu items and option buttons. */
|
||||||
|
|
||||||
class GtkWatcher : public CelestiaWatcher
|
class GtkWatcher : public CelestiaWatcher
|
||||||
{
|
{
|
||||||
|
@ -2405,6 +2437,11 @@ public:
|
||||||
virtual void notifyChange(int);
|
virtual void notifyChange(int);
|
||||||
void renderFlagsChanged();
|
void renderFlagsChanged();
|
||||||
void labelFlagsChanged();
|
void labelFlagsChanged();
|
||||||
|
void timeZoneChanged();
|
||||||
|
void ambientLightChanged();
|
||||||
|
void faintestChanged();
|
||||||
|
void hudDetailChanged();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2419,6 +2456,14 @@ void GtkWatcher::notifyChange(int property)
|
||||||
renderFlagsChanged();
|
renderFlagsChanged();
|
||||||
else if (property == LabelFlags)
|
else if (property == LabelFlags)
|
||||||
labelFlagsChanged();
|
labelFlagsChanged();
|
||||||
|
else if (property == TimeZone)
|
||||||
|
timeZoneChanged();
|
||||||
|
else if (property == AmbientLight)
|
||||||
|
ambientLightChanged();
|
||||||
|
else if (property == Faintest)
|
||||||
|
faintestChanged();
|
||||||
|
else if (property == VerbosityLevel)
|
||||||
|
hudDetailChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GtkWatcher::renderFlagsChanged()
|
void GtkWatcher::renderFlagsChanged()
|
||||||
|
@ -2433,6 +2478,30 @@ void GtkWatcher::labelFlagsChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GtkWatcher::timeZoneChanged()
|
||||||
|
{
|
||||||
|
resyncMenus();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GtkWatcher::ambientLightChanged()
|
||||||
|
{
|
||||||
|
resyncAmbient();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GtkWatcher::faintestChanged()
|
||||||
|
{
|
||||||
|
resyncFaintest();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GtkWatcher::hudDetailChanged()
|
||||||
|
{
|
||||||
|
resyncHudDet();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
GtkWatcher *gtkWatcher=NULL;
|
GtkWatcher *gtkWatcher=NULL;
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
|
@ -2552,7 +2621,7 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
g_assert(menuItemFactory);
|
g_assert(menuItemFactory);
|
||||||
gtkWatcher = new GtkWatcher(appCore);
|
gtkWatcher = new GtkWatcher(appCore);
|
||||||
resyncMenus();
|
resyncAll();
|
||||||
gtk_main();
|
gtk_main();
|
||||||
delete captureFilename;
|
delete captureFilename;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue