Project Properties added.
This commit is contained in:
parent
b4d06317ab
commit
fc0ebb6e3f
7 changed files with 337 additions and 14 deletions
|
@ -185,6 +185,7 @@ void compilerRunRecipe(CompilerContextT *context, char *recipe, char *input, cha
|
||||||
context->isRunning = TRUE;
|
context->isRunning = TRUE;
|
||||||
g_idle_add(compilerRunRecipeFinished, context);
|
g_idle_add(compilerRunRecipeFinished, context);
|
||||||
|
|
||||||
|
//***TODO*** There needs to be a way to kill this thread if the recipe runs away.
|
||||||
pthread_attr_init(&attr);
|
pthread_attr_init(&attr);
|
||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||||
err = pthread_create(&context->thread, &attr, &compilerRunRecipeThread, context);
|
err = pthread_create(&context->thread, &attr, &compilerRunRecipeThread, context);
|
||||||
|
|
|
@ -32,6 +32,7 @@ static char **_pendingMessages = NULL;
|
||||||
static pthread_mutex_t _mtxMessage;
|
static pthread_mutex_t _mtxMessage;
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean messageScroll(gpointer userData);
|
||||||
static gboolean messagesUpdate(gpointer userData);
|
static gboolean messagesUpdate(gpointer userData);
|
||||||
EVENT gboolean winMessagesClose(GtkWidget *object, gpointer userData);
|
EVENT gboolean winMessagesClose(GtkWidget *object, gpointer userData);
|
||||||
static void winMessagesDelete(gpointer userData);
|
static void winMessagesDelete(gpointer userData);
|
||||||
|
@ -70,6 +71,26 @@ void message(MessageTypesT level, char *format, ...) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean messageScroll(gpointer userData) {
|
||||||
|
GtkAdjustment *adjustment;
|
||||||
|
static int count = 100; // Try this many times to scroll.
|
||||||
|
|
||||||
|
(void)userData;
|
||||||
|
|
||||||
|
//***TODO*** This doesn't always scroll to the very end.
|
||||||
|
adjustment = gtk_list_box_get_adjustment(GTK_LIST_BOX(_lstMessages));
|
||||||
|
gtk_adjustment_set_value(adjustment, gtk_adjustment_get_upper(adjustment));
|
||||||
|
gtk_widget_show_all(_lstMessages);
|
||||||
|
utilForceUpdate();
|
||||||
|
|
||||||
|
count--;
|
||||||
|
if (count > 0) return G_SOURCE_CONTINUE;
|
||||||
|
|
||||||
|
count = 100;
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void messageShutdown(void) {
|
void messageShutdown(void) {
|
||||||
g_idle_remove_by_data(messagesUpdate);
|
g_idle_remove_by_data(messagesUpdate);
|
||||||
pthread_mutex_destroy(&_mtxMessage);
|
pthread_mutex_destroy(&_mtxMessage);
|
||||||
|
@ -101,7 +122,6 @@ static gboolean messagesUpdate(gpointer userData) {
|
||||||
GtkWidget *row;
|
GtkWidget *row;
|
||||||
GtkWidget *box;
|
GtkWidget *box;
|
||||||
GtkWidget *label;
|
GtkWidget *label;
|
||||||
GtkAdjustment *adjustment;
|
|
||||||
char *string = NULL;
|
char *string = NULL;
|
||||||
|
|
||||||
(void)userData;
|
(void)userData;
|
||||||
|
@ -144,14 +164,12 @@ static gboolean messagesUpdate(gpointer userData) {
|
||||||
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
|
||||||
gtk_container_add(GTK_CONTAINER(row), box);
|
gtk_container_add(GTK_CONTAINER(row), box);
|
||||||
gtk_list_box_insert(GTK_LIST_BOX(_lstMessages), row, -1);
|
gtk_list_box_insert(GTK_LIST_BOX(_lstMessages), row, -1);
|
||||||
|
|
||||||
// Scroll to show new row.
|
|
||||||
//***TODO*** This doesn't always scroll to the very end.
|
|
||||||
adjustment = gtk_list_box_get_adjustment(GTK_LIST_BOX(_lstMessages));
|
|
||||||
gtk_adjustment_set_value(adjustment, gtk_adjustment_get_upper(adjustment));
|
|
||||||
gtk_widget_show_all(_lstMessages);
|
gtk_widget_show_all(_lstMessages);
|
||||||
utilForceUpdate();
|
utilForceUpdate();
|
||||||
|
|
||||||
|
// Scroll to show new row.
|
||||||
|
g_idle_add(messageScroll, NULL);
|
||||||
|
|
||||||
DEL(string); // Finally free the string allocated in message().
|
DEL(string); // Finally free the string allocated in message().
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +177,21 @@ static gboolean messagesUpdate(gpointer userData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EVENT void toolMessagesClearClicked(GtkWidget *widget, gpointer userData) {
|
||||||
|
GList *children;
|
||||||
|
GList *iter;
|
||||||
|
|
||||||
|
(void)widget;
|
||||||
|
(void)userData;
|
||||||
|
|
||||||
|
children = gtk_container_get_children(GTK_CONTAINER(_lstMessages));
|
||||||
|
for (iter = children; iter != NULL; iter = g_list_next(iter)) {
|
||||||
|
gtk_widget_destroy(GTK_WIDGET(iter->data));
|
||||||
|
}
|
||||||
|
g_list_free(children);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EVENT gboolean winMessagesClose(GtkWidget *object, gpointer userData) {
|
EVENT gboolean winMessagesClose(GtkWidget *object, gpointer userData) {
|
||||||
// userData is not reliable due to util indirectly calling us.
|
// userData is not reliable due to util indirectly calling us.
|
||||||
WindowDataT *self = (WindowDataT *)utilGetWindowData(object);
|
WindowDataT *self = (WindowDataT *)utilGetWindowData(object);
|
||||||
|
|
|
@ -77,6 +77,8 @@ typedef struct ProjectDataS {
|
||||||
WindowDataT windowData;
|
WindowDataT windowData;
|
||||||
GtkWidget *treeProject;
|
GtkWidget *treeProject;
|
||||||
StringHashT **recipes;
|
StringHashT **recipes;
|
||||||
|
char *projectType;
|
||||||
|
char *projectName;
|
||||||
char *configName;
|
char *configName;
|
||||||
char *buildHost;
|
char *buildHost;
|
||||||
int buildHTTPPort;
|
int buildHTTPPort;
|
||||||
|
@ -133,6 +135,7 @@ EVENT void menuProjectFileSaveAs(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectFileClose(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectFileClose(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectProjectAdd(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectProjectAdd(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectProjectRemove(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectProjectRemove(GtkWidget *object, gpointer userData);
|
||||||
|
EVENT void menuProjectProjectProperties(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectBuildSettings(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectBuildSettings(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectBuildTargets(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectBuildTargets(GtkWidget *object, gpointer userData);
|
||||||
EVENT void menuProjectBuildCookRecipes(GtkWidget *object, gpointer userData);
|
EVENT void menuProjectBuildCookRecipes(GtkWidget *object, gpointer userData);
|
||||||
|
@ -536,6 +539,18 @@ static void loadProject(ProjectDataT *self) {
|
||||||
DEL(raw);
|
DEL(raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Is this a 'project' line?
|
||||||
|
if (strcasecmp(c, "project") == 0) {
|
||||||
|
c = utilGetToken(NULL, " ", "\"", "\"");
|
||||||
|
utilDequote(c);
|
||||||
|
DEL(self->projectType);
|
||||||
|
self->projectType = strdup(c);
|
||||||
|
c = utilGetToken(NULL, " ", "\"", "\"");
|
||||||
|
utilDequote(c);
|
||||||
|
DEL(self->projectName);
|
||||||
|
self->projectName = strdup(c);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
fclose(in);
|
fclose(in);
|
||||||
DEL(line);
|
DEL(line);
|
||||||
|
@ -543,6 +558,13 @@ static void loadProject(ProjectDataT *self) {
|
||||||
} else {
|
} else {
|
||||||
message(MSG_SEVERE, "Unknown error attempting to load %s!", self->windowData.filename);
|
message(MSG_SEVERE, "Unknown error attempting to load %s!", self->windowData.filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (self->projectType == NULL) {
|
||||||
|
self->projectType = strdup("Application");
|
||||||
|
}
|
||||||
|
if (self->projectName == NULL) {
|
||||||
|
self->projectName = strdup("None");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -582,6 +604,12 @@ EVENT void menuProjectFileNew(GtkWidget *object, gpointer userData) {
|
||||||
|
|
||||||
clearRecipeData(self);
|
clearRecipeData(self);
|
||||||
|
|
||||||
|
// Clear project properties.
|
||||||
|
DEL(self->projectName);
|
||||||
|
DEL(self->projectType);
|
||||||
|
self->projectType = strdup("Application");
|
||||||
|
self->projectName = strdup("None");
|
||||||
|
|
||||||
// Nuke filename & mark clean.
|
// Nuke filename & mark clean.
|
||||||
DEL(self->windowData.filename);
|
DEL(self->windowData.filename);
|
||||||
DEL(self->windowData.path);
|
DEL(self->windowData.path);
|
||||||
|
@ -626,6 +654,8 @@ EVENT void menuProjectFileSave(GtkWidget *object, gpointer userData) {
|
||||||
// Save! Write out header.
|
// Save! Write out header.
|
||||||
fprintf(out, "%s\n", PROJECT_VERSION);
|
fprintf(out, "%s\n", PROJECT_VERSION);
|
||||||
fprintf(out, "------------------------------------------------------------------------------\n");
|
fprintf(out, "------------------------------------------------------------------------------\n");
|
||||||
|
// Write out project properties.
|
||||||
|
fprintf(out, "project \"%s\" \"%s\"\n", self->projectType, self->projectName);
|
||||||
// Write out file list.
|
// Write out file list.
|
||||||
gtk_tree_model_get_iter_first(model, &iter);
|
gtk_tree_model_get_iter_first(model, &iter);
|
||||||
do {
|
do {
|
||||||
|
@ -778,6 +808,60 @@ EVENT void menuProjectProjectRemove(GtkWidget *object, gpointer userData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EVENT void menuProjectProjectProperties(GtkWidget *object, gpointer userData) {
|
||||||
|
ProjectDataT *self = (ProjectDataT *)userData;
|
||||||
|
GtkWidget *dialogProperties;
|
||||||
|
GtkWidget *comboType;
|
||||||
|
GtkWidget *txtName;
|
||||||
|
|
||||||
|
(void)object;
|
||||||
|
|
||||||
|
char *temp = NULL;
|
||||||
|
char *widgetNames[] = {
|
||||||
|
"dialogProjectProperties",
|
||||||
|
"comboProjectType",
|
||||||
|
"txtProjectName",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
GtkWidget **widgets[] = {
|
||||||
|
&dialogProperties,
|
||||||
|
&comboType,
|
||||||
|
&txtName
|
||||||
|
};
|
||||||
|
GtkEntryBuffer *buffer;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
utilGetWidgetsFromMemory("/com/kangaroopunch/joeydev/ProjectProperties.glade", widgetNames, widgets, self);
|
||||||
|
|
||||||
|
if (strcmp(self->projectType, "JoeyLib") == 0) {
|
||||||
|
gtk_combo_box_set_active(GTK_COMBO_BOX(comboType), 1);
|
||||||
|
} else {
|
||||||
|
gtk_combo_box_set_active(GTK_COMBO_BOX(comboType), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = gtk_entry_get_buffer(GTK_ENTRY(txtName));
|
||||||
|
gtk_entry_buffer_set_text(GTK_ENTRY_BUFFER(buffer), self->projectName, strlen(self->projectName));
|
||||||
|
|
||||||
|
result = gtk_dialog_run(GTK_DIALOG(dialogProperties));
|
||||||
|
if (result == GTK_RESPONSE_OK) {
|
||||||
|
if (strcmp(self->projectName, gtk_entry_buffer_get_text(GTK_ENTRY_BUFFER(buffer))) != 0) {
|
||||||
|
DEL(self->projectName);
|
||||||
|
self->projectName = strdup(gtk_entry_buffer_get_text(GTK_ENTRY_BUFFER(buffer)));
|
||||||
|
utilSetDirty((WindowDataT *)self, TRUE);
|
||||||
|
}
|
||||||
|
temp = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(comboType));
|
||||||
|
if (strcmp(self->projectType, temp) != 0) {
|
||||||
|
DEL(self->projectType);
|
||||||
|
self->projectType = strdup(temp);
|
||||||
|
utilSetDirty((WindowDataT *)self, TRUE);
|
||||||
|
}
|
||||||
|
DEL(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_destroy(dialogProperties);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EVENT void menuProjectBuildSettings(GtkWidget *object, gpointer userData) {
|
EVENT void menuProjectBuildSettings(GtkWidget *object, gpointer userData) {
|
||||||
ProjectDataT *self = (ProjectDataT *)userData;
|
ProjectDataT *self = (ProjectDataT *)userData;
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
@ -1021,9 +1105,9 @@ EVENT void menuProjectBuildBuild(GtkWidget *object, gpointer userData) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Write what we're building.
|
// Write what we're building.
|
||||||
fprintf(out, "application\n"); //***TODO*** We don't know how to handle other types yet.
|
fprintf(out, "%s\n", self->projectType);
|
||||||
// Write it's title.
|
// Write it's title.
|
||||||
fprintf(out, "%s\n", "CRAP - MISSING!"); //***TODO*** Collect and remember project name! Derp!
|
fprintf(out, "%s\n", self->projectName);
|
||||||
// Write desired build targets.
|
// Write desired build targets.
|
||||||
for (i=0; i<arrlen(self->targets); i++) {
|
for (i=0; i<arrlen(self->targets); i++) {
|
||||||
archPrinted = FALSE;
|
archPrinted = FALSE;
|
||||||
|
|
|
@ -6,24 +6,63 @@
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
<property name="title" translatable="yes">Messages</property>
|
<property name="title" translatable="yes">Messages</property>
|
||||||
<property name="default-width">800</property>
|
<property name="default-width">800</property>
|
||||||
<property name="default-height">300</property>
|
<property name="default-height">350</property>
|
||||||
|
<property name="icon-name">emblem-documents</property>
|
||||||
<signal name="delete-event" handler="winMessagesClose" swapped="no"/>
|
<signal name="delete-event" handler="winMessagesClose" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can-focus">True</property>
|
<property name="can-focus">False</property>
|
||||||
<property name="shadow-type">in</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkViewport">
|
<object class="GtkToolbar">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkListBox" id="lstMessages">
|
<object class="GtkToolButton" id="toolMessagesClear">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Clear all messages</property>
|
||||||
|
<property name="label" translatable="yes">Clear</property>
|
||||||
|
<property name="use-underline">True</property>
|
||||||
|
<property name="icon-name">edit-delete</property>
|
||||||
|
<signal name="clicked" handler="toolMessagesClearClicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="shadow-type">in</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkViewport">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkListBox" id="lstMessages">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|
|
@ -117,6 +117,21 @@
|
||||||
<accelerator key="Delete" signal="activate"/>
|
<accelerator key="Delete" signal="activate"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="menuProjectProjectProperties">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Properties...</property>
|
||||||
|
<property name="use-underline">True</property>
|
||||||
|
<signal name="activate" handler="menuProjectProjectProperties" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|
150
ui/ProjectProperties.glade
Normal file
150
ui/ProjectProperties.glade
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.40.0 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.24"/>
|
||||||
|
<object class="GtkEntryBuffer" id="entrybufferProjectName">
|
||||||
|
<property name="max-length">15</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkDialog" id="dialogProjectProperties">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="title" translatable="yes">Project Properties</property>
|
||||||
|
<property name="default-width">300</property>
|
||||||
|
<property name="default-height">200</property>
|
||||||
|
<property name="type-hint">dialog</property>
|
||||||
|
<child internal-child="vbox">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="margin-start">15</property>
|
||||||
|
<property name="margin-end">15</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="layout-style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="button1">
|
||||||
|
<property name="label" translatable="yes">Cancel</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="button2">
|
||||||
|
<property name="label" translatable="yes">OK</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<!-- n-columns=2 n-rows=2 -->
|
||||||
|
<object class="GtkGrid">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="row-spacing">15</property>
|
||||||
|
<property name="column-spacing">15</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="label" translatable="yes">Project Type:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="label" translatable="yes">Project Name: </property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="txtProjectName">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="buffer">entrybufferProjectName</property>
|
||||||
|
<property name="max-length">15</property>
|
||||||
|
<property name="input-purpose">alpha</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">1</property>
|
||||||
|
<property name="top-attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBoxText" id="comboProjectType">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="active">0</property>
|
||||||
|
<property name="has-entry">True</property>
|
||||||
|
<items>
|
||||||
|
<item translatable="yes">Application</item>
|
||||||
|
<item translatable="yes">JoeyLib</item>
|
||||||
|
</items>
|
||||||
|
<child internal-child="entry">
|
||||||
|
<object class="GtkEntry" id="comboProjectTyp">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">1</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="-6">button1</action-widget>
|
||||||
|
<action-widget response="-5">button2</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
</object>
|
||||||
|
</interface>
|
|
@ -3,6 +3,7 @@
|
||||||
<gresource prefix="/com/kangaroopunch/joeydev">
|
<gresource prefix="/com/kangaroopunch/joeydev">
|
||||||
<file compressed="true" preprocess="xml-stripblanks">JoeyDev.glade</file>
|
<file compressed="true" preprocess="xml-stripblanks">JoeyDev.glade</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">Project.glade</file>
|
<file compressed="true" preprocess="xml-stripblanks">Project.glade</file>
|
||||||
|
<file compressed="true" preprocess="xml-stripblanks">ProjectProperties.glade</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">BuildServer.glade</file>
|
<file compressed="true" preprocess="xml-stripblanks">BuildServer.glade</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">Cook.glade</file>
|
<file compressed="true" preprocess="xml-stripblanks">Cook.glade</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">Editor.glade</file>
|
<file compressed="true" preprocess="xml-stripblanks">Editor.glade</file>
|
||||||
|
|
Loading…
Add table
Reference in a new issue