Update gtk149
This commit is contained in:
parent
0abb60e9c7
commit
42ca97e3b2
|
@ -30,24 +30,21 @@ set(SOURCE_FILE src/main.cpp src/FileWindow.cpp src/FileColumnView.cpp src/FileG
|
||||||
|
|
||||||
#Compile Resource
|
#Compile Resource
|
||||||
|
|
||||||
# set(RESOURCE_LIST
|
set(RESOURCE_LIST
|
||||||
# custom_style.css
|
dialog-error.png
|
||||||
# STRIPBLANKS context_menu.xml
|
)
|
||||||
# STRIPBLANKS default_menu.xml
|
|
||||||
# STRIPBLANKS prefs_stack.ui
|
|
||||||
# )
|
|
||||||
|
|
||||||
# compile_gresources(RESOURCE_FILE
|
compile_gresources(RESOURCE_FILE
|
||||||
# XML_OUT
|
XML_OUT
|
||||||
# TYPE EMBED_C
|
TYPE EMBED_C
|
||||||
# RESOURCES ${RESOURCE_LIST}
|
RESOURCES ${RESOURCE_LIST}
|
||||||
# PREFIX "/org/gtk/daleclack"
|
PREFIX "/org/gtk/daleclack"
|
||||||
# SOURCE_DIR ${PROJECT_SOURCE_DIR}/res)
|
SOURCE_DIR ${PROJECT_SOURCE_DIR}/res)
|
||||||
|
|
||||||
# Add a custom target to the makefile. Now make builds our resource file.
|
# Add a custom target to the makefile. Now make builds our resource file.
|
||||||
# It depends on the output RESOURCE_FILE.
|
# It depends on the output RESOURCE_FILE.
|
||||||
|
|
||||||
# add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
|
add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
|
||||||
|
|
||||||
#For win32 platform,use rc resource and .ico icon
|
#For win32 platform,use rc resource and .ico icon
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -56,12 +53,12 @@ if(WIN32)
|
||||||
set_property(SOURCE ../icon.rc APPEND PROPERTY
|
set_property(SOURCE ../icon.rc APPEND PROPERTY
|
||||||
OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/../icon.ico
|
OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/../icon.ico
|
||||||
)
|
)
|
||||||
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} ${SOURCE_FILE})
|
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||||
add_custom_command( TARGET ${PROJECT_NAME}
|
add_custom_command( TARGET ${PROJECT_NAME}
|
||||||
COMMAND echo * > ${CMAKE_BINARY_DIR}/.gitignore
|
COMMAND echo * > ${CMAKE_BINARY_DIR}/.gitignore
|
||||||
COMMAND echo **/* > ${CMAKE_BINARY_DIR}/.hgignore)
|
COMMAND echo **/* > ${CMAKE_BINARY_DIR}/.hgignore)
|
||||||
else()
|
else()
|
||||||
add_executable(${PROJECT_NAME} ${SOURCE_FILE})
|
add_executable(${PROJECT_NAME} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||||
add_custom_command( TARGET ${PROJECT_NAME}
|
add_custom_command( TARGET ${PROJECT_NAME}
|
||||||
COMMAND echo \"*\" > ${CMAKE_BINARY_DIR}/.gitignore
|
COMMAND echo \"*\" > ${CMAKE_BINARY_DIR}/.gitignore
|
||||||
COMMAND echo \"**/*\" > ${CMAKE_BINARY_DIR}/.hgignore)
|
COMMAND echo \"**/*\" > ${CMAKE_BINARY_DIR}/.hgignore)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
|
@ -25,6 +25,12 @@ static void setup_filename_item(GtkListItemFactory *factory, GtkListItem *item)
|
||||||
// Create label to show list item
|
// Create label to show list item
|
||||||
GtkWidget *label;
|
GtkWidget *label;
|
||||||
label = gtk_label_new(" ");
|
label = gtk_label_new(" ");
|
||||||
|
|
||||||
|
// Set the mode for ellipsize
|
||||||
|
gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_width_chars(GTK_LABEL(label), 20);
|
||||||
|
|
||||||
|
// Add the label to the item
|
||||||
gtk_widget_set_halign(label, GTK_ALIGN_START);
|
gtk_widget_set_halign(label, GTK_ALIGN_START);
|
||||||
gtk_list_item_set_child(item, label);
|
gtk_list_item_set_child(item, label);
|
||||||
}
|
}
|
||||||
|
@ -46,6 +52,12 @@ static void setup_filetype_item(GtkListItemFactory *factory, GtkListItem *item)
|
||||||
// Create label to show list item
|
// Create label to show list item
|
||||||
GtkWidget *label;
|
GtkWidget *label;
|
||||||
label = gtk_label_new(" ");
|
label = gtk_label_new(" ");
|
||||||
|
|
||||||
|
// Set the mode for ellipsize
|
||||||
|
gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_width_chars(GTK_LABEL(label), 10);
|
||||||
|
|
||||||
|
// Add the label to the item
|
||||||
gtk_widget_set_halign(label, GTK_ALIGN_START);
|
gtk_widget_set_halign(label, GTK_ALIGN_START);
|
||||||
gtk_list_item_set_child(item, label);
|
gtk_list_item_set_child(item, label);
|
||||||
}
|
}
|
||||||
|
@ -98,9 +110,10 @@ static void listview_activated(GtkColumnView *view, guint position, GtkDirectory
|
||||||
g_object_unref(info);
|
g_object_unref(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *create_column_view(GListModel *model)
|
GtkWidget *create_column_view(FileWindow *win)
|
||||||
{
|
{
|
||||||
// Create view
|
// Create view
|
||||||
|
GListModel *model = file_window_get_column_model(win);
|
||||||
GtkSingleSelection *selection = gtk_single_selection_new(model);
|
GtkSingleSelection *selection = gtk_single_selection_new(model);
|
||||||
GtkWidget *view = gtk_column_view_new(GTK_SELECTION_MODEL(selection));
|
GtkWidget *view = gtk_column_view_new(GTK_SELECTION_MODEL(selection));
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include "FileWindow.h"
|
||||||
|
|
||||||
// Create column view widget
|
// Create column view widget
|
||||||
GtkWidget *create_column_view(GListModel *model);
|
GtkWidget *create_column_view(FileWindow *win);
|
||||||
|
|
|
@ -13,6 +13,12 @@ static void setup_grid_item(GtkListItemFactory *factory, GtkListItem *item)
|
||||||
label_filetype = gtk_label_new(" ");
|
label_filetype = gtk_label_new(" ");
|
||||||
label_filesize = gtk_label_new(" ");
|
label_filesize = gtk_label_new(" ");
|
||||||
|
|
||||||
|
// Make labels support ellipsize
|
||||||
|
gtk_label_set_ellipsize(GTK_LABEL(label_filename), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_ellipsize(GTK_LABEL(label_filetype), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_ellipsize(GTK_LABEL(label_filesize), PANGO_ELLIPSIZE_END);
|
||||||
|
gtk_label_set_width_chars(GTK_LABEL(label_filename), 20);
|
||||||
|
|
||||||
// Pack widgets
|
// Pack widgets
|
||||||
gtk_image_set_pixel_size(GTK_IMAGE(image), 48);
|
gtk_image_set_pixel_size(GTK_IMAGE(image), 48);
|
||||||
gtk_box_append(GTK_BOX(under_box), image);
|
gtk_box_append(GTK_BOX(under_box), image);
|
||||||
|
@ -63,8 +69,11 @@ static void gridview_activate(GtkGridView *view, guint position, GtkDirectoryLis
|
||||||
g_object_unref(info);
|
g_object_unref(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *create_grid_view(GListModel *model)
|
GtkWidget *create_grid_view(FileWindow *win)
|
||||||
{
|
{
|
||||||
|
// Get model for grid view
|
||||||
|
GListModel *model = file_window_get_grid_model(win);
|
||||||
|
|
||||||
// Create factory
|
// Create factory
|
||||||
GtkListItemFactory *factory = gtk_signal_list_item_factory_new();
|
GtkListItemFactory *factory = gtk_signal_list_item_factory_new();
|
||||||
g_signal_connect(factory, "setup", G_CALLBACK(setup_grid_item), NULL);
|
g_signal_connect(factory, "setup", G_CALLBACK(setup_grid_item), NULL);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include "FileWindow.h"
|
||||||
|
|
||||||
GtkWidget *create_grid_view(GListModel *model);
|
GtkWidget *create_grid_view(FileWindow *win);
|
||||||
|
|
|
@ -2,12 +2,14 @@
|
||||||
#include "FileColumnView.h"
|
#include "FileColumnView.h"
|
||||||
#include "FileGridView.h"
|
#include "FileGridView.h"
|
||||||
|
|
||||||
enum SyncMode{
|
enum SyncMode
|
||||||
MODEL1_TO_2,
|
{
|
||||||
MODEL2_TO_1
|
MODEL_COLUMN_TO_GRID,
|
||||||
|
MODEL_GRID_TO_COLUMN
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ViewMode{
|
enum ViewMode
|
||||||
|
{
|
||||||
MODE_LIST,
|
MODE_LIST,
|
||||||
MODE_GRID
|
MODE_GRID
|
||||||
};
|
};
|
||||||
|
@ -15,7 +17,7 @@ enum ViewMode{
|
||||||
struct _FileWindow
|
struct _FileWindow
|
||||||
{
|
{
|
||||||
GtkApplicationWindow parent_instance;
|
GtkApplicationWindow parent_instance;
|
||||||
GListModel *model1, *model2;
|
GListModel *model_column, *model_grid;
|
||||||
GtkWidget *column_view, *grid_view;
|
GtkWidget *column_view, *grid_view;
|
||||||
GtkWidget *main_box, *btn_box;
|
GtkWidget *main_box, *btn_box;
|
||||||
GtkWidget *scrolled_window_column, *scrolled_window_grid;
|
GtkWidget *scrolled_window_column, *scrolled_window_grid;
|
||||||
|
@ -27,32 +29,62 @@ struct _FileWindow
|
||||||
|
|
||||||
G_DEFINE_TYPE(FileWindow, file_window, GTK_TYPE_APPLICATION_WINDOW)
|
G_DEFINE_TYPE(FileWindow, file_window, GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
static void sync_models(gpointer model1, gpointer model2, SyncMode mode){
|
static GFile *file_window_get_file(FileWindow *win)
|
||||||
if(mode == SyncMode::MODEL1_TO_2){
|
{
|
||||||
|
GFile *file = NULL;
|
||||||
|
if (win->view_mode == ViewMode::MODE_LIST)
|
||||||
|
{
|
||||||
|
// In list view mode, get current directory from the model1
|
||||||
|
file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(win->model_column));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// In list view mode, get current directory from the model2
|
||||||
|
file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(win->model_grid));
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sync_models(gpointer model1, gpointer model2, SyncMode mode)
|
||||||
|
{
|
||||||
|
if (mode == SyncMode::MODEL_COLUMN_TO_GRID)
|
||||||
|
{
|
||||||
// Set the file from model1
|
// Set the file from model1
|
||||||
GFile *file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(model1));
|
GFile *file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(model1));
|
||||||
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(model2), file);
|
if (file)
|
||||||
|
{
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(model2), file);
|
||||||
|
}
|
||||||
// g_object_unref(file);
|
// g_object_unref(file);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// Set the file from model2
|
// Set the file from model2
|
||||||
GFile *file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(model2));
|
GFile *file = gtk_directory_list_get_file(GTK_DIRECTORY_LIST(model2));
|
||||||
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(model1), file);
|
if (file)
|
||||||
|
{
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(model1), file);
|
||||||
|
}
|
||||||
// g_object_unref(file);
|
// g_object_unref(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btnview_clicked(GtkButton *button, FileWindow *win){
|
static void btnview_clicked(GtkButton *button, FileWindow *win)
|
||||||
if(win->view_mode == ViewMode::MODE_LIST){
|
{
|
||||||
|
if (win->view_mode == ViewMode::MODE_LIST)
|
||||||
|
{
|
||||||
// Sync the models
|
// Sync the models
|
||||||
sync_models(win->model1, win->model2, SyncMode::MODEL1_TO_2);
|
sync_models(win->model_column, win->model_grid, SyncMode::MODEL_COLUMN_TO_GRID);
|
||||||
|
|
||||||
// Change view mode from list to grid
|
// Change view mode from list to grid
|
||||||
gtk_stack_set_visible_child(GTK_STACK(win->stack), win->scrolled_window_grid);
|
gtk_stack_set_visible_child(GTK_STACK(win->stack), win->scrolled_window_grid);
|
||||||
gtk_button_set_icon_name(button, "view-grid");
|
gtk_button_set_icon_name(button, "view-grid");
|
||||||
win->view_mode = ViewMode::MODE_GRID;
|
win->view_mode = ViewMode::MODE_GRID;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// Sync the models
|
// Sync the models
|
||||||
sync_models(win->model1, win->model2, SyncMode::MODEL2_TO_1);
|
sync_models(win->model_column, win->model_grid, SyncMode::MODEL_GRID_TO_COLUMN);
|
||||||
|
|
||||||
// Change view mode from grid to list
|
// Change view mode from grid to list
|
||||||
gtk_stack_set_visible_child(GTK_STACK(win->stack), win->scrolled_window_column);
|
gtk_stack_set_visible_child(GTK_STACK(win->stack), win->scrolled_window_column);
|
||||||
|
@ -61,16 +93,138 @@ static void btnview_clicked(GtkButton *button, FileWindow *win){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btnup_clicked(GtkWidget *widget, FileWindow *win){
|
static void btnup_clicked(GtkWidget *widget, FileWindow *win)
|
||||||
|
{
|
||||||
|
// Get current directory and set to the new list
|
||||||
|
GFile *file = file_window_get_file(win);
|
||||||
|
if (!g_str_equal(g_file_get_path(file), "/"))
|
||||||
|
{
|
||||||
|
GFile *file1 = g_file_get_parent(file);
|
||||||
|
// Set the directory of models
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_column), file1);
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_grid), file1);
|
||||||
|
g_object_unref(file1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GFile *file1 = g_file_new_for_path("/");
|
||||||
|
// Set the directory of models
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_column), file1);
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_grid), file1);
|
||||||
|
g_object_unref(file1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btnnew_clicked(GtkWidget *widget, FileWindow *win){
|
static void btnok_clicked(GtkWidget *widget, GtkWidget *dialog)
|
||||||
|
{
|
||||||
|
// Get entry widget and the content of entry
|
||||||
|
GtkWidget *entry_new = gtk_widget_get_first_child(dialog);
|
||||||
|
const char *file_name = gtk_editable_get_text(GTK_EDITABLE(entry_new));
|
||||||
|
|
||||||
|
// Get the parent dir of file
|
||||||
|
FileWindow *win = FILE_WINDOW(gtk_window_get_transient_for(GTK_WINDOW(dialog)));
|
||||||
|
GFile *file = file_window_get_file(win);
|
||||||
|
char *parent_dir = g_file_get_path(file);
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
|
// Create a new folder
|
||||||
|
if (parent_dir[strlen(parent_dir) - 1] != '/')
|
||||||
|
{
|
||||||
|
path = g_strdup_printf("%s/%s", parent_dir, file_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
path = g_strdup_printf("%s%s", parent_dir, file_name);
|
||||||
|
}
|
||||||
|
if (g_mkdir_with_parents(path, 0755) == -1)
|
||||||
|
{
|
||||||
|
g_print("Error Occured!");
|
||||||
|
}
|
||||||
|
// g_print("%s\n", path);
|
||||||
|
|
||||||
|
g_free(parent_dir);
|
||||||
|
g_free(path);
|
||||||
|
gtk_window_destroy(GTK_WINDOW(dialog));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btndel_clicked(GtkWidget *widget, FileWindow *win){
|
static void btnnew_clicked(GtkWidget *widget, FileWindow *win)
|
||||||
|
{
|
||||||
|
GtkWidget *dialog_new;
|
||||||
|
|
||||||
|
// Create the window
|
||||||
|
dialog_new = gtk_window_new();
|
||||||
|
gtk_window_set_title(GTK_WINDOW(dialog_new), "Create Folder");
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(dialog_new), GTK_WINDOW(win));
|
||||||
|
|
||||||
|
// Add the entry and the "OK" button
|
||||||
|
GtkWidget *header, *btn_ok, *entry_new;
|
||||||
|
header = gtk_header_bar_new();
|
||||||
|
btn_ok = gtk_button_new_with_label("OK");
|
||||||
|
entry_new = gtk_entry_new();
|
||||||
|
|
||||||
|
// Link signal for "OK" button
|
||||||
|
g_signal_connect(entry_new, "activate", G_CALLBACK(btnok_clicked), dialog_new);
|
||||||
|
g_signal_connect(btn_ok, "clicked", G_CALLBACK(btnok_clicked), dialog_new);
|
||||||
|
|
||||||
|
// Add widgets to window
|
||||||
|
gtk_header_bar_pack_end(GTK_HEADER_BAR(header), btn_ok);
|
||||||
|
gtk_window_set_titlebar(GTK_WINDOW(dialog_new), header);
|
||||||
|
gtk_window_set_child(GTK_WINDOW(dialog_new), entry_new);
|
||||||
|
|
||||||
|
gtk_window_present(GTK_WINDOW(dialog_new));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btnhome_clicked(GtkWidget *widget, FileWindow *win)
|
||||||
|
{
|
||||||
|
// Set Current dir to home dir
|
||||||
|
GFile *file = g_file_new_for_path(g_get_home_dir());
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_column), file);
|
||||||
|
gtk_directory_list_set_file(GTK_DIRECTORY_LIST(win->model_grid), file);
|
||||||
|
g_object_unref(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void btndel_clicked(GtkWidget *widget, FileWindow *win)
|
||||||
|
{
|
||||||
|
GtkWidget *error_dialog;
|
||||||
|
|
||||||
|
// Create dialog
|
||||||
|
error_dialog = gtk_window_new();
|
||||||
|
gtk_window_set_title(GTK_WINDOW(error_dialog), "Error");
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(error_dialog), GTK_WINDOW(win));
|
||||||
|
|
||||||
|
// Add a header bar
|
||||||
|
GtkWidget *header = gtk_header_bar_new();
|
||||||
|
GtkWidget *btn_ok = gtk_button_new_with_label("OK");
|
||||||
|
gtk_header_bar_pack_end(GTK_HEADER_BAR(header), btn_ok);
|
||||||
|
gtk_window_set_titlebar(GTK_WINDOW(error_dialog), header);
|
||||||
|
g_signal_connect_swapped(btn_ok, "clicked", G_CALLBACK(gtk_window_destroy), error_dialog);
|
||||||
|
|
||||||
|
// Add a label and a icon to show error
|
||||||
|
GtkWidget *dialog_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
|
||||||
|
GtkWidget *image = gtk_image_new_from_resource("/org/gtk/daleclack/dialog-error.png");
|
||||||
|
GtkWidget *label = gtk_label_new("Failed to delete file");
|
||||||
|
gtk_image_set_pixel_size(GTK_IMAGE(image), 48);
|
||||||
|
|
||||||
|
// Add widgets to the dialog
|
||||||
|
gtk_widget_set_margin_bottom(dialog_box, 20);
|
||||||
|
gtk_widget_set_margin_end(dialog_box, 20);
|
||||||
|
gtk_widget_set_margin_start(dialog_box, 20);
|
||||||
|
gtk_widget_set_margin_top(dialog_box, 20);
|
||||||
|
gtk_box_append(GTK_BOX(dialog_box), image);
|
||||||
|
gtk_box_append(GTK_BOX(dialog_box), label);
|
||||||
|
gtk_window_set_child(GTK_WINDOW(error_dialog), dialog_box);
|
||||||
|
|
||||||
|
gtk_window_present(GTK_WINDOW(error_dialog));
|
||||||
|
}
|
||||||
|
|
||||||
|
GListModel *file_window_get_grid_model(FileWindow *self){
|
||||||
|
// Get Model for grid view
|
||||||
|
return self->model_grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
GListModel *file_window_get_column_model(FileWindow *self){
|
||||||
|
// Get Model for list column view
|
||||||
|
return self->model_column;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void file_window_dispose(GObject *object)
|
static void file_window_dispose(GObject *object)
|
||||||
|
@ -88,17 +242,17 @@ static void file_window_init(FileWindow *self)
|
||||||
|
|
||||||
// Create list model
|
// Create list model
|
||||||
GFile *file = g_file_new_for_path(g_get_home_dir());
|
GFile *file = g_file_new_for_path(g_get_home_dir());
|
||||||
self->model1 = G_LIST_MODEL(gtk_directory_list_new(
|
self->model_column = G_LIST_MODEL(gtk_directory_list_new(
|
||||||
"standard::name,standard::display-name,standard::icon,standard::size,standard::content-type", file));
|
"standard::name,standard::display-name,standard::icon,standard::size,standard::content-type", file));
|
||||||
|
|
||||||
self->model2 = G_LIST_MODEL(gtk_directory_list_new(
|
self->model_grid = G_LIST_MODEL(gtk_directory_list_new(
|
||||||
"standard::name,standard::display-name,standard::icon,standard::size,standard::content-type", file));
|
"standard::name,standard::display-name,standard::icon,standard::size,standard::content-type", file));
|
||||||
|
|
||||||
// Create column view widget
|
// Create column view widget
|
||||||
self->column_view = create_column_view(self->model1);
|
self->column_view = create_column_view(self);
|
||||||
|
|
||||||
// Create grid view widget
|
// Create grid view widget
|
||||||
self->grid_view = create_grid_view(self->model2);
|
self->grid_view = create_grid_view(self);
|
||||||
|
|
||||||
// Create buttons
|
// Create buttons
|
||||||
self->btn_up = gtk_button_new_from_icon_name("go-up");
|
self->btn_up = gtk_button_new_from_icon_name("go-up");
|
||||||
|
@ -128,6 +282,10 @@ static void file_window_init(FileWindow *self)
|
||||||
|
|
||||||
// Link signals
|
// Link signals
|
||||||
g_signal_connect(self->btn_view, "clicked", G_CALLBACK(btnview_clicked), self);
|
g_signal_connect(self->btn_view, "clicked", G_CALLBACK(btnview_clicked), self);
|
||||||
|
g_signal_connect(self->btn_up, "clicked", G_CALLBACK(btnup_clicked), self);
|
||||||
|
g_signal_connect(self->btn_home, "clicked", G_CALLBACK(btnhome_clicked), self);
|
||||||
|
g_signal_connect(self->btn_del, "clicked", G_CALLBACK(btndel_clicked), self);
|
||||||
|
g_signal_connect(self->btn_new, "clicked", G_CALLBACK(btnnew_clicked), self);
|
||||||
|
|
||||||
// Add scrolled window for columns view
|
// Add scrolled window for columns view
|
||||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(self->scrolled_window_column),
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(self->scrolled_window_column),
|
||||||
|
|
|
@ -5,3 +5,7 @@
|
||||||
G_DECLARE_FINAL_TYPE(FileWindow, file_window, FILE, WINDOW, GtkApplicationWindow)
|
G_DECLARE_FINAL_TYPE(FileWindow, file_window, FILE, WINDOW, GtkApplicationWindow)
|
||||||
|
|
||||||
FileWindow *file_window_new(GtkApplication *app);
|
FileWindow *file_window_new(GtkApplication *app);
|
||||||
|
|
||||||
|
GListModel *file_window_get_grid_model(FileWindow *self);
|
||||||
|
|
||||||
|
GListModel *file_window_get_column_model(FileWindow *self);
|
||||||
|
|
Loading…
Reference in New Issue