master #68
Merged
asmeron
merged 4 commits from YanTheKaller/libublsettingsui-gtk3:master into master 2 weeks ago
@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.40.0 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.24"/>
|
||||||
|
<object class="GtkWindow" id="Window">
|
||||||
|
<property name="width-request">450</property>
|
||||||
|
<property name="height-request">350</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="icon-name">com.ublinux.libublsettingsui-gtk3</property>
|
||||||
|
<property name="type-hint">dialog</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="StatusBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="MainBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="margin-start">5</property>
|
||||||
|
<property name="margin-end">5</property>
|
||||||
|
<property name="margin-bottom">5</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="titlebar">
|
||||||
|
<object class="GtkHeaderBar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="spacing">5</property>
|
||||||
|
<property name="show-close-button">True</property>
|
||||||
|
<child type="title">
|
||||||
|
<object class="GtkLabel" id="TitleLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="label" translatable="yes">TEMPLATE Manager</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="weight" value="bold"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="HeaderImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="pixel-size">32</property>
|
||||||
|
<property name="icon-name">com.ublinux.libublsettingsui-gtk3</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="toolbar"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#include "libublsettingsui-gtk3.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
filechooser_window *file_chooser_window;
|
||||||
|
GtkFileFilter *ini_filter;
|
||||||
|
GtkFileFilter *yaml_filter;
|
||||||
|
GtkFileFilter *json_filter;
|
||||||
|
} config_file_chooser_window;
|
||||||
|
|
||||||
|
void on_config_file_chooser_destroy(GtkWidget*, config_file_chooser_window *window){
|
||||||
|
printf("fewrgege\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_config_file_chooser_accept(GtkWidget *, config_file_chooser_window *window){
|
||||||
|
switch (gtk_file_chooser_get_action(GTK_FILE_CHOOSER(window->file_chooser_window->MainFileChooser))){
|
||||||
|
case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER:
|
||||||
|
case GTK_FILE_CHOOSER_ACTION_SAVE:
|
||||||
|
if (yon_char_is_empty(window->file_chooser_window->last_success_selection)){
|
||||||
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->file_chooser_window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window->file_chooser_window->responce=GTK_RESPONSE_APPLY;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER:
|
||||||
|
case GTK_FILE_CHOOSER_ACTION_OPEN:
|
||||||
|
window->file_chooser_window->responce = GTK_RESPONSE_ACCEPT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *path = NULL;
|
||||||
|
const char *filter_name = gtk_file_filter_get_name(gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(window->file_chooser_window->MainFileChooser)));
|
||||||
|
if (window->file_chooser_window->last_success_selection){
|
||||||
|
int ext_pos = yon_char_find_last(window->file_chooser_window->last_success_selection,'.');
|
||||||
|
if (ext_pos==-1||strcmp(window->file_chooser_window->last_success_selection+ext_pos,filter_name)){
|
||||||
|
path = yon_char_unite(window->file_chooser_window->last_success_selection,filter_name,NULL);
|
||||||
|
free(window->file_chooser_window->last_success_selection);
|
||||||
|
window->file_chooser_window->last_success_selection = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gtk_widget_destroy(window->file_chooser_window->Window);
|
||||||
|
gtk_main_quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
filechooser_window *yon_config_file_chooser_window_new(GtkFileChooserAction action){
|
||||||
|
config_file_chooser_window *window = malloc(sizeof(config_file_chooser_window));
|
||||||
|
window->file_chooser_window = yon_file_chooser_window_new(action);
|
||||||
|
window->ini_filter = gtk_file_filter_new();
|
||||||
|
gtk_file_filter_add_pattern(window->ini_filter,"*.ini");
|
||||||
|
gtk_file_filter_set_name(window->ini_filter,".ini");
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->file_chooser_window->MainFileChooser),window->ini_filter);
|
||||||
|
window->yaml_filter = gtk_file_filter_new();
|
||||||
|
gtk_file_filter_add_pattern(window->yaml_filter,"*.yaml");
|
||||||
|
gtk_file_filter_set_name(window->yaml_filter,".yaml");
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->file_chooser_window->MainFileChooser),window->yaml_filter);
|
||||||
|
window->json_filter = gtk_file_filter_new();
|
||||||
|
gtk_file_filter_add_pattern(window->json_filter,"*.json");
|
||||||
|
gtk_file_filter_set_name(window->json_filter,".json");
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->file_chooser_window->MainFileChooser),window->json_filter);
|
||||||
|
yon_file_chooser_remove_accept_function(window->file_chooser_window);
|
||||||
|
g_signal_connect(G_OBJECT(window->file_chooser_window->SaveButton),"clicked",G_CALLBACK(on_config_file_chooser_accept),window);
|
||||||
|
return window->file_chooser_window;
|
||||||
|
}
|
||||||
Loading…
Reference in new issue